summaryrefslogtreecommitdiffstats
path: root/toolkit/components/browser/nsWebBrowser.h
diff options
context:
space:
mode:
Diffstat (limited to 'toolkit/components/browser/nsWebBrowser.h')
-rw-r--r--toolkit/components/browser/nsWebBrowser.h164
1 files changed, 164 insertions, 0 deletions
diff --git a/toolkit/components/browser/nsWebBrowser.h b/toolkit/components/browser/nsWebBrowser.h
new file mode 100644
index 0000000000..f2cbaeb938
--- /dev/null
+++ b/toolkit/components/browser/nsWebBrowser.h
@@ -0,0 +1,164 @@
+/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
+/* vim: set ts=8 sts=2 et sw=2 tw=80: */
+/* This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+#ifndef nsWebBrowser_h__
+#define nsWebBrowser_h__
+
+// Local Includes
+#include "nsDocShellTreeOwner.h"
+
+// Core Includes
+#include "nsCOMPtr.h"
+#include "nsCycleCollectionParticipant.h"
+
+// Interfaces needed
+#include "nsIBaseWindow.h"
+#include "nsIDocShell.h"
+#include "nsIDocShellTreeItem.h"
+#include "nsIInterfaceRequestor.h"
+#include "nsIInterfaceRequestorUtils.h"
+#include "nsIWidget.h"
+#include "nsIWebProgress.h"
+#include "nsIWebBrowser.h"
+#include "nsIWebNavigation.h"
+#include "nsIWebBrowserPersist.h"
+#include "nsIWindowWatcher.h"
+#include "nsIPrintSettings.h"
+#include "nsIWidgetListener.h"
+
+#include "mozilla/BasePrincipal.h"
+#include "nsTArray.h"
+#include "nsIWeakReferenceUtils.h"
+
+class nsWebBrowserInitInfo {
+ public:
+ // nsIBaseWindow Stuff
+ int32_t x;
+ int32_t y;
+ int32_t cx;
+ int32_t cy;
+ bool visible;
+ nsString name;
+};
+
+// {cda5863a-aa9c-411e-be49-ea0d525ab4b5} -
+#define NS_WEBBROWSER_CID \
+ { \
+ 0xcda5863a, 0xaa9c, 0x411e, { \
+ 0xbe, 0x49, 0xea, 0x0d, 0x52, 0x5a, 0xb4, 0xb5 \
+ } \
+ }
+
+class mozIDOMWindowProxy;
+class nsDocShell;
+
+namespace mozilla {
+namespace dom {
+class WindowGlobalChild;
+} // namespace dom
+} // namespace mozilla
+
+class nsWebBrowser final : public nsIWebBrowser,
+ public nsIWebNavigation,
+ public nsIDocShellTreeItem,
+ public nsIBaseWindow,
+ public nsIInterfaceRequestor,
+ public nsIWebBrowserPersist,
+ public nsIWebProgressListener,
+ public nsSupportsWeakReference {
+ friend class nsDocShellTreeOwner;
+
+ public:
+ // The implementation of non-refcounted nsIWidgetListener, which would hold a
+ // strong reference on stack before calling nsWebBrowser's
+ // MOZ_CAN_RUN_SCRIPT methods.
+ class WidgetListenerDelegate : public nsIWidgetListener {
+ public:
+ explicit WidgetListenerDelegate(nsWebBrowser* aWebBrowser)
+ : mWebBrowser(aWebBrowser) {}
+ MOZ_CAN_RUN_SCRIPT_BOUNDARY virtual void WindowActivated() override;
+ MOZ_CAN_RUN_SCRIPT_BOUNDARY virtual void WindowDeactivated() override;
+ MOZ_CAN_RUN_SCRIPT_BOUNDARY virtual bool PaintWindow(
+ nsIWidget* aWidget, mozilla::LayoutDeviceIntRegion aRegion) override;
+
+ private:
+ // The lifetime of WidgetListenerDelegate is bound to nsWebBrowser so we
+ // just use raw pointer here.
+ nsWebBrowser* mWebBrowser;
+ };
+
+ NS_DECL_CYCLE_COLLECTING_ISUPPORTS
+ NS_DECL_CYCLE_COLLECTION_CLASS_AMBIGUOUS(nsWebBrowser, nsIWebBrowser)
+
+ NS_DECL_NSIBASEWINDOW
+ NS_DECL_NSIDOCSHELLTREEITEM
+ NS_DECL_NSIINTERFACEREQUESTOR
+ NS_DECL_NSIWEBBROWSER
+ NS_DECL_NSIWEBNAVIGATION
+ NS_DECL_NSIWEBBROWSERPERSIST
+ NS_DECL_NSICANCELABLE
+ NS_DECL_NSIWEBPROGRESSLISTENER
+
+ void SetAllowDNSPrefetch(bool aAllowPrefetch);
+ // TODO: Convert FocusDeactivate() to MOZ_CAN_RUN_SCRIPT
+ MOZ_CAN_RUN_SCRIPT_BOUNDARY void FocusActivate(uint64_t aActionId);
+ // TODO: Convert FocusDeactivate() to MOZ_CAN_RUN_SCRIPT
+ MOZ_CAN_RUN_SCRIPT_BOUNDARY void FocusDeactivate(uint64_t aActionId);
+ void SetWillChangeProcess();
+
+ static already_AddRefed<nsWebBrowser> Create(
+ nsIWebBrowserChrome* aContainerWindow, nsIWidget* aParentWidget,
+ mozilla::dom::BrowsingContext* aBrowsingContext,
+ mozilla::dom::WindowGlobalChild* aInitialWindowChild);
+
+ protected:
+ virtual ~nsWebBrowser();
+ void InternalDestroy();
+
+ void SetDocShell(nsDocShell* aDocShell);
+ void EnsureDocShellTreeOwner();
+
+ nsIWidget* EnsureWidget();
+
+ // nsIWidgetListener methods for WidgetListenerDelegate.
+ MOZ_CAN_RUN_SCRIPT void WindowActivated();
+ MOZ_CAN_RUN_SCRIPT void WindowDeactivated();
+ MOZ_CAN_RUN_SCRIPT bool PaintWindow(nsIWidget* aWidget,
+ mozilla::LayoutDeviceIntRegion aRegion);
+
+ explicit nsWebBrowser(int aItemType);
+
+ protected:
+ RefPtr<nsDocShellTreeOwner> mDocShellTreeOwner;
+ RefPtr<nsDocShell> mDocShell;
+ mozilla::OriginAttributes mOriginAttributes;
+
+ nsCOMPtr<nsIWidget> mInternalWidget;
+ nsCOMPtr<nsIWindowWatcher> mWWatch;
+ const uint32_t mContentType;
+ bool mShouldEnableHistory;
+ bool mWillChangeProcess;
+ nativeWindow mParentNativeWindow;
+ nsIWebProgressListener* mProgressListener;
+
+ nsCOMPtr<nsIPrintSettings> mPrintSettings;
+
+ WidgetListenerDelegate mWidgetListenerDelegate;
+
+ // cached background color
+ nscolor mBackgroundColor;
+
+ // persistence object
+ nsCOMPtr<nsIWebBrowserPersist> mPersist;
+ uint32_t mPersistCurrentState;
+ nsresult mPersistResult;
+ uint32_t mPersistFlags;
+
+ // Weak Reference interfaces...
+ nsIWidget* mParentWidget;
+};
+
+#endif /* nsWebBrowser_h__ */