fune/embedding/browser/photon/src/EmbedPrivate.h
2007-10-06 05:08:39 -07:00

207 lines
6.8 KiB
C++

/* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* The contents of this file are subject to the Mozilla Public License Version
* 1.1 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
* The Original Code is mozilla.org code.
*
* The Initial Developer of the Original Code is
* Christopher Blizzard.
* Portions created by the Initial Developer are Copyright (C) 2001
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
* Christopher Blizzard <blizzard@mozilla.org>
* Brian Edmond <briane@qnx.com>
*
* Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
#ifndef __EmbedPrivate_h
#define __EmbedPrivate_h
#include <nsCOMPtr.h>
#include <nsString.h>
#include <nsIWebNavigation.h>
#include <nsIURIFixup.h>
#include <nsISHistory.h>
#include "nsIExternalHelperAppService.h"
// for our one function that gets the EmbedPrivate via the chrome
// object.
#include <nsIWebBrowserChrome.h>
#include <nsIPrintSettings.h>
#include <nsIAppShell.h>
#include <nsPIDOMEventTarget.h>
#include <nsVoidArray.h>
#include <nsClipboard.h>
// for profiles
#include <nsIPref.h>
#include <Pt.h>
class EmbedProgress;
class EmbedWindow;
class EmbedContentListener;
class EmbedEventListener;
class EmbedStream;
class EmbedPrintListener;
class nsPIDOMWindow;
class EmbedPrivate {
public:
EmbedPrivate();
~EmbedPrivate();
nsresult Init (PtWidget_t *aOwningWidget);
nsresult Setup ();
void Unrealize (void);
void Show (void);
void Hide (void);
void Position (PRUint32 aX, PRUint32 aY);
void Size (PRUint32 aWidth, PRUint32 aHeight);
void Destroy (void);
void SetURI (const char *aURI);
void LoadCurrentURI (void);
void Stop (void);
void Reload(int32_t flags);
void Back (void);
void Forward (void);
void ScrollUp(int amount);
void ScrollDown(int amount);
void ScrollLeft(int amount);
void ScrollRight(int amount);
void Cut (int ig);
void Copy (int ig);
void Paste (int ig);
void SelectAll (void);
void Clear (void);
int SaveAs(char *fname,char *dirname);
void Print(PpPrintContext_t *pc);
PRBool CanGoBack();
PRBool CanGoForward();
nsIPref *GetPrefs();
nsresult OpenStream (const char *aBaseURI, const char *aContentType);
nsresult AppendToStream (const char *aData, PRInt32 aLen);
nsresult CloseStream (void);
// This function will find the specific EmbedPrivate object for a
// given nsIWebBrowserChrome.
static EmbedPrivate *FindPrivateForBrowser(nsIWebBrowserChrome *aBrowser);
// This is an upcall that will come from the progress listener
// whenever there is a content state change. We need this so we can
// attach event listeners.
void ContentStateChange (void);
// This is an upcall from the progress listener when content is
// finished loading. We have this so that if it's chrome content
// that we can size to content properly and show ourselves if
// visibility is set.
void ContentFinishedLoading(void);
#if 0
/*
not used - we handle focus in/out activate/deactivate in
child_getting_focus/child_losing_focus methods
of the PtMozilla widget class
*/
// these let the widget code know when the toplevel window gets and
// looses focus.
void TopLevelFocusIn (void);
void TopLevelFocusOut(void);
// these are when the widget itself gets focus in and focus out
// events
void ChildFocusIn (void);
void ChildFocusOut(void);
#endif
PtWidget_t *mOwningWidget;
// all of the objects that we own
EmbedWindow *mWindow;
nsCOMPtr<nsISupports> mWindowGuard;
EmbedProgress *mProgress;
nsCOMPtr<nsISupports> mProgressGuard;
EmbedContentListener *mContentListener;
nsCOMPtr<nsISupports> mContentListenerGuard;
EmbedEventListener *mEventListener;
nsCOMPtr<nsISupports> mEventListenerGuard;
EmbedStream *mStream;
nsCOMPtr<nsISupports> mStreamGuard;
EmbedPrintListener *mPrint;
nsCOMPtr<nsISupports> mPrintGuard;
nsCOMPtr<nsIWebNavigation> mNavigation;
nsCOMPtr<nsISHistory> mSessionHistory;
// our event target
nsCOMPtr<nsPIDOMEventTarget> mEventTarget;
// the currently loaded uri
nsString mURI;
nsCOMPtr<nsIPrintSettings> m_PrintSettings;
// the number of widgets that have been created
static PRUint32 sWidgetCount;
// the path to components
static char *sCompPath;
// the appshell we have created
static nsIAppShell *sAppShell;
// for profiles
static nsIPref *sPrefs;
static nsVoidArray *sWindowList;
// for clipboard input group setting
static nsClipboard *sClipboard;
// chrome mask
PRUint32 mChromeMask;
// is this a chrome window?
PRBool mIsChrome;
// has the chrome finished loading?
PRBool mChromeLoaded;
// saved window ID for reparenting later
PtWidget_t *mMozWindowWidget;
// this will get the PIDOMWindow for this widget
nsresult GetPIDOMWindow (nsPIDOMWindow **aPIWin);
private:
// is the chrome listener attached yet?
PRBool mListenersAttached;
void GetListener (void);
void AttachListeners(void);
void DetachListeners(void);
void PrintHeaderFooter_FormatSpecialCodes(const char *original, nsString& aNewStr);
};
#endif /* __EmbedPrivate_h */