tor-browser

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

BrowserBridgeChild.h (3870B)


      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 mozilla_dom_BrowserBridgeChild_h
      8 #define mozilla_dom_BrowserBridgeChild_h
      9 
     10 #include "mozilla/dom/BrowserChild.h"
     11 #include "mozilla/dom/PBrowserBridgeChild.h"
     12 #include "mozilla/dom/ipc/IdType.h"
     13 
     14 namespace mozilla::dom {
     15 class BrowsingContext;
     16 class ContentChild;
     17 class BrowserBridgeHost;
     18 
     19 /**
     20 * BrowserBridgeChild implements the child actor part of the PBrowserBridge
     21 * protocol. See PBrowserBridge for more information.
     22 */
     23 class BrowserBridgeChild : public PBrowserBridgeChild {
     24 public:
     25  typedef mozilla::layers::LayersId LayersId;
     26 
     27  NS_INLINE_DECL_REFCOUNTING(BrowserBridgeChild, final);
     28 
     29  BrowserChild* Manager() {
     30    MOZ_ASSERT(CanSend());
     31    return static_cast<BrowserChild*>(PBrowserBridgeChild::Manager());
     32  }
     33 
     34  TabId GetTabId() { return mId; }
     35 
     36  LayersId GetLayersId() { return mLayersId; }
     37 
     38  nsFrameLoader* GetFrameLoader() const { return mFrameLoader; }
     39 
     40  BrowsingContext* GetBrowsingContext() { return mBrowsingContext; }
     41 
     42  nsILoadContext* GetLoadContext();
     43 
     44  void NavigateByKey(bool aForward, bool aForDocumentNavigation);
     45 
     46  void Activate(uint64_t aActionId);
     47 
     48  void Deactivate(bool aWindowLowering, uint64_t aActionId);
     49 
     50  already_AddRefed<BrowserBridgeHost> FinishInit(nsFrameLoader* aFrameLoader);
     51 
     52 #if defined(ACCESSIBILITY)
     53  void SetEmbedderAccessible(PDocAccessibleChild* aDoc, uint64_t aID) {
     54    MOZ_ASSERT((aDoc && aID) || (!aDoc && !aID));
     55    mEmbedderAccessibleID = aID;
     56    (void)SendSetEmbedderAccessible(aDoc, aID);
     57  }
     58 
     59  uint64_t GetEmbedderAccessibleID() { return mEmbedderAccessibleID; }
     60 #endif  // defined(ACCESSIBILITY)
     61 
     62  static BrowserBridgeChild* GetFrom(nsFrameLoader* aFrameLoader);
     63 
     64  static BrowserBridgeChild* GetFrom(nsIContent* aContent);
     65 
     66  BrowserBridgeChild(BrowsingContext* aBrowsingContext, TabId aId,
     67                     const LayersId& aLayersId);
     68 
     69 protected:
     70  friend class ContentChild;
     71  friend class PBrowserBridgeChild;
     72 
     73  mozilla::ipc::IPCResult RecvRequestFocus(const bool& aCanRaise,
     74                                           const CallerType aCallerType);
     75 
     76  mozilla::ipc::IPCResult RecvMoveFocus(const bool& aForward,
     77                                        const bool& aForDocumentNavigation);
     78 
     79  // TODO: Use MOZ_CAN_RUN_SCRIPT when it gains IPDL support (bug 1539864)
     80  MOZ_CAN_RUN_SCRIPT_BOUNDARY mozilla::ipc::IPCResult
     81  RecvMaybeFireEmbedderLoadEvents(
     82      EmbedderElementEventType aFireEventAtEmbeddingElement);
     83 
     84  mozilla::ipc::IPCResult RecvIntrinsicSizeOrRatioChanged(
     85      const Maybe<IntrinsicSize>& aIntrinsicSize,
     86      const Maybe<AspectRatio>& aIntrinsicRatio);
     87 
     88  mozilla::ipc::IPCResult RecvImageLoadComplete(const nsresult& aResult);
     89 
     90  MOZ_CAN_RUN_SCRIPT_BOUNDARY
     91  mozilla::ipc::IPCResult RecvScrollRectIntoView(
     92      const nsRect& aRect, const ScrollAxis& aVertical,
     93      const ScrollAxis& aHorizontal, const ScrollFlags& aScrollFlags,
     94      const int32_t& aAppUnitsPerDevPixel);
     95 
     96  MOZ_CAN_RUN_SCRIPT_BOUNDARY
     97  mozilla::ipc::IPCResult RecvSubFrameCrashed();
     98 
     99  void ActorDestroy(ActorDestroyReason aWhy) override;
    100 
    101 private:
    102  ~BrowserBridgeChild();
    103 
    104  void UnblockOwnerDocsLoadEvent();
    105 
    106  TabId mId;
    107  LayersId mLayersId;
    108  bool mHadInitialLoad = false;
    109  RefPtr<nsFrameLoader> mFrameLoader;
    110  RefPtr<BrowsingContext> mBrowsingContext;
    111 #if defined(ACCESSIBILITY)
    112  // We need to keep track of the embedder accessible id we last sent to the
    113  // parent process.
    114  uint64_t mEmbedderAccessibleID = 0;
    115 #endif  // defined(ACCESSIBILITY)
    116 };
    117 
    118 }  // namespace mozilla::dom
    119 
    120 #endif  // !defined(mozilla_dom_BrowserBridgeParent_h)