Line data Source code
1 : /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 : /* vim: set ts=8 sts=2 et sw=2 tw=80: */
3 : /* This Source Code Form is subject to the terms of the Mozilla Public
4 : * License, v. 2.0. If a copy of the MPL was not distributed with this
5 : * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
6 :
7 : #ifndef nsWebBrowser_h__
8 : #define nsWebBrowser_h__
9 :
10 : // Local Includes
11 : #include "nsDocShellTreeOwner.h"
12 :
13 : // Core Includes
14 : #include "nsAutoPtr.h"
15 : #include "nsCOMPtr.h"
16 :
17 : // Interfaces needed
18 : #include "nsCWebBrowser.h"
19 : #include "nsIBaseWindow.h"
20 : #include "nsIDocShell.h"
21 : #include "nsIDocShellTreeItem.h"
22 : #include "nsIInterfaceRequestor.h"
23 : #include "nsIInterfaceRequestorUtils.h"
24 : #include "nsIScrollable.h"
25 : #include "nsISHistory.h"
26 : #include "nsITextScroll.h"
27 : #include "nsIWidget.h"
28 : #include "nsIWebProgress.h"
29 : #include "nsISecureBrowserUI.h"
30 : #include "nsIWebBrowser.h"
31 : #include "nsIWebNavigation.h"
32 : #include "nsIWebBrowserSetup.h"
33 : #include "nsIWebBrowserPersist.h"
34 : #include "nsIWebBrowserFocus.h"
35 : #include "nsIWebBrowserStream.h"
36 : #include "nsIWindowWatcher.h"
37 : #include "nsIPrintSettings.h"
38 : #include "nsEmbedStream.h"
39 : #include "nsIWidgetListener.h"
40 :
41 : #include "mozilla/BasePrincipal.h"
42 : #include "nsTArray.h"
43 : #include "nsWeakPtr.h"
44 :
45 2 : class nsWebBrowserInitInfo
46 : {
47 : public:
48 : // nsIBaseWindow Stuff
49 : int32_t x;
50 : int32_t y;
51 : int32_t cx;
52 : int32_t cy;
53 : bool visible;
54 : nsCOMPtr<nsISHistory> sessionHistory;
55 : nsString name;
56 : };
57 :
58 0 : class nsWebBrowserListenerState
59 : {
60 : public:
61 0 : bool Equals(nsIWeakReference* aListener, const nsIID& aID)
62 : {
63 0 : return mWeakPtr.get() == aListener && mID.Equals(aID);
64 : }
65 :
66 : nsWeakPtr mWeakPtr;
67 : nsIID mID;
68 : };
69 :
70 : // {cda5863a-aa9c-411e-be49-ea0d525ab4b5} -
71 : #define NS_WEBBROWSER_CID \
72 : { 0xcda5863a, 0xaa9c, 0x411e, { 0xbe, 0x49, 0xea, 0x0d, 0x52, 0x5a, 0xb4, 0xb5 } }
73 :
74 :
75 : class nsWebBrowser final : public nsIWebBrowser,
76 : public nsIWebNavigation,
77 : public nsIWebBrowserSetup,
78 : public nsIDocShellTreeItem,
79 : public nsIBaseWindow,
80 : public nsIScrollable,
81 : public nsITextScroll,
82 : public nsIInterfaceRequestor,
83 : public nsIWebBrowserPersist,
84 : public nsIWebBrowserFocus,
85 : public nsIWebProgressListener,
86 : public nsIWebBrowserStream,
87 : public nsIWidgetListener,
88 : public nsSupportsWeakReference
89 : {
90 : friend class nsDocShellTreeOwner;
91 :
92 : public:
93 : nsWebBrowser();
94 :
95 : NS_DECL_ISUPPORTS
96 :
97 : NS_DECL_NSIBASEWINDOW
98 : NS_DECL_NSIDOCSHELLTREEITEM
99 : NS_DECL_NSIINTERFACEREQUESTOR
100 : NS_DECL_NSISCROLLABLE
101 : NS_DECL_NSITEXTSCROLL
102 : NS_DECL_NSIWEBBROWSER
103 : NS_DECL_NSIWEBNAVIGATION
104 : NS_DECL_NSIWEBBROWSERSETUP
105 : NS_DECL_NSIWEBBROWSERPERSIST
106 : NS_DECL_NSICANCELABLE
107 : NS_DECL_NSIWEBBROWSERFOCUS
108 : NS_DECL_NSIWEBBROWSERSTREAM
109 : NS_DECL_NSIWEBPROGRESSLISTENER
110 :
111 : protected:
112 : virtual ~nsWebBrowser();
113 : NS_IMETHOD InternalDestroy();
114 :
115 : // XXXbz why are these NS_IMETHOD? They're not interface methods!
116 : NS_IMETHOD SetDocShell(nsIDocShell* aDocShell);
117 : NS_IMETHOD EnsureDocShellTreeOwner();
118 : NS_IMETHOD BindListener(nsISupports* aListener, const nsIID& aIID);
119 : NS_IMETHOD UnBindListener(nsISupports* aListener, const nsIID& aIID);
120 : NS_IMETHOD EnableGlobalHistory(bool aEnable);
121 :
122 : // nsIWidgetListener
123 : virtual void WindowRaised(nsIWidget* aWidget);
124 : virtual void WindowLowered(nsIWidget* aWidget);
125 : virtual bool PaintWindow(nsIWidget* aWidget,
126 : mozilla::LayoutDeviceIntRegion aRegion) override;
127 :
128 : protected:
129 : RefPtr<nsDocShellTreeOwner> mDocShellTreeOwner;
130 : nsCOMPtr<nsIDocShell> mDocShell;
131 : nsCOMPtr<nsIInterfaceRequestor> mDocShellAsReq;
132 : nsCOMPtr<nsIBaseWindow> mDocShellAsWin;
133 : nsCOMPtr<nsIWebNavigation> mDocShellAsNav;
134 : nsCOMPtr<nsIScrollable> mDocShellAsScrollable;
135 : nsCOMPtr<nsITextScroll> mDocShellAsTextScroll;
136 : mozilla::OriginAttributes mOriginAttributes;
137 :
138 : nsCOMPtr<nsIWidget> mInternalWidget;
139 : nsCOMPtr<nsIWindowWatcher> mWWatch;
140 : nsAutoPtr<nsWebBrowserInitInfo> mInitInfo;
141 : uint32_t mContentType;
142 : bool mActivating;
143 : bool mShouldEnableHistory;
144 : bool mIsActive;
145 : nativeWindow mParentNativeWindow;
146 : nsIWebProgressListener* mProgressListener;
147 : nsCOMPtr<nsIWebProgress> mWebProgress;
148 :
149 : nsCOMPtr<nsIPrintSettings> mPrintSettings;
150 :
151 : // cached background color
152 : nscolor mBackgroundColor;
153 :
154 : // persistence object
155 : nsCOMPtr<nsIWebBrowserPersist> mPersist;
156 : uint32_t mPersistCurrentState;
157 : nsresult mPersistResult;
158 : uint32_t mPersistFlags;
159 :
160 : // stream
161 : RefPtr<nsEmbedStream> mStream;
162 :
163 : // Weak Reference interfaces...
164 : nsIWidget* mParentWidget;
165 : nsAutoPtr<nsTArray<nsWebBrowserListenerState> > mListenerArray;
166 : };
167 :
168 : #endif /* nsWebBrowser_h__ */
|