tor-browser

The Tor Browser
git clone https://git.dasho.dev/tor-browser.git
Log | Files | Refs | README | LICENSE

nsDocShellTreeOwner.h (3457B)


      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 nsDocShellTreeOwner_h__
      8 #define nsDocShellTreeOwner_h__
      9 
     10 // Helper Classes
     11 #include "nsCOMPtr.h"
     12 #include "nsString.h"
     13 
     14 // Interfaces Needed
     15 #include "nsIBaseWindow.h"
     16 #include "nsIDocShellTreeOwner.h"
     17 #include "nsIInterfaceRequestor.h"
     18 #include "nsIInterfaceRequestorUtils.h"
     19 #include "nsIWebBrowserChrome.h"
     20 #include "nsIDOMEventListener.h"
     21 #include "nsIWebProgressListener.h"
     22 #include "nsWeakReference.h"
     23 #include "nsITimer.h"
     24 #include "nsIPrompt.h"
     25 #include "nsIAuthPrompt.h"
     26 #include "nsITooltipTextProvider.h"
     27 #include "nsCTooltipTextProvider.h"
     28 
     29 namespace mozilla {
     30 namespace dom {
     31 class Event;
     32 class EventTarget;
     33 }  // namespace dom
     34 }  // namespace mozilla
     35 
     36 class nsIDocShellTreeItem;
     37 class nsWebBrowser;
     38 class ChromeTooltipListener;
     39 
     40 class nsDocShellTreeOwner final : public nsIDocShellTreeOwner,
     41                                  public nsIBaseWindow,
     42                                  public nsIInterfaceRequestor,
     43                                  public nsIWebProgressListener,
     44                                  public nsIDOMEventListener,
     45                                  public nsSupportsWeakReference {
     46  friend class nsWebBrowser;
     47 
     48 public:
     49  NS_DECL_ISUPPORTS
     50 
     51  NS_DECL_NSIBASEWINDOW
     52  NS_DECL_NSIDOCSHELLTREEOWNER
     53  NS_DECL_NSIDOMEVENTLISTENER
     54  NS_DECL_NSIINTERFACEREQUESTOR
     55  NS_DECL_NSIWEBPROGRESSLISTENER
     56 
     57 protected:
     58  nsDocShellTreeOwner();
     59  virtual ~nsDocShellTreeOwner();
     60 
     61  void WebBrowser(nsWebBrowser* aWebBrowser);
     62 
     63  nsWebBrowser* WebBrowser();
     64  NS_IMETHOD SetTreeOwner(nsIDocShellTreeOwner* aTreeOwner);
     65  NS_IMETHOD SetWebBrowserChrome(nsIWebBrowserChrome* aWebBrowserChrome);
     66 
     67  NS_IMETHOD AddChromeListeners();
     68  NS_IMETHOD RemoveChromeListeners();
     69 
     70  void EnsurePrompter();
     71  void EnsureAuthPrompter();
     72 
     73  void AddToWatcher();
     74  void RemoveFromWatcher();
     75 
     76  void EnsureContentTreeOwner();
     77 
     78  // These helper functions return the correct instances of the requested
     79  // interfaces.  If the object passed to SetWebBrowserChrome() implements
     80  // nsISupportsWeakReference, then these functions call QueryReferent on
     81  // that object.  Otherwise, they return an addrefed pointer.  If the
     82  // WebBrowserChrome object doesn't exist, they return nullptr.
     83  already_AddRefed<nsIWebBrowserChrome> GetWebBrowserChrome();
     84  already_AddRefed<nsIBaseWindow> GetOwnerWin();
     85  already_AddRefed<nsIInterfaceRequestor> GetOwnerRequestor();
     86 
     87 protected:
     88  // Weak References
     89  nsWebBrowser* mWebBrowser;
     90  nsIDocShellTreeOwner* mTreeOwner;
     91  nsIDocShellTreeItem* mPrimaryContentShell;
     92 
     93  nsIWebBrowserChrome* mWebBrowserChrome;
     94  nsIBaseWindow* mOwnerWin;
     95  nsIInterfaceRequestor* mOwnerRequestor;
     96 
     97  nsWeakPtr mWebBrowserChromeWeak;  // nsIWebBrowserChrome
     98 
     99  // the objects that listen for chrome events like context menus and tooltips.
    100  // They are separate objects to avoid circular references between |this|
    101  // and the DOM.
    102  RefPtr<ChromeTooltipListener> mChromeTooltipListener;
    103 
    104  RefPtr<nsDocShellTreeOwner> mContentTreeOwner;
    105 
    106  nsCOMPtr<nsIPrompt> mPrompter;
    107  nsCOMPtr<nsIAuthPrompt> mAuthPrompter;
    108  nsCOMPtr<nsIRemoteTab> mPrimaryRemoteTab;
    109 };
    110 
    111 #endif /* nsDocShellTreeOwner_h__ */