tor-browser

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

BrowserBridgeHost.cpp (2745B)


      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 #include "mozilla/dom/BrowserBridgeHost.h"
      8 
      9 #include "mozilla/dom/Element.h"
     10 #include "nsFrameLoader.h"
     11 
     12 namespace mozilla::dom {
     13 
     14 NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION(BrowserBridgeHost)
     15  NS_INTERFACE_MAP_ENTRY(nsISupports)
     16 NS_INTERFACE_MAP_END
     17 
     18 NS_IMPL_CYCLE_COLLECTION(BrowserBridgeHost)
     19 
     20 NS_IMPL_CYCLE_COLLECTING_ADDREF(BrowserBridgeHost)
     21 NS_IMPL_CYCLE_COLLECTING_RELEASE(BrowserBridgeHost)
     22 
     23 BrowserBridgeHost::BrowserBridgeHost(BrowserBridgeChild* aChild)
     24    : mBridge(aChild) {}
     25 
     26 TabId BrowserBridgeHost::GetTabId() const { return mBridge->GetTabId(); }
     27 
     28 mozilla::layers::LayersId BrowserBridgeHost::GetLayersId() const {
     29  return mBridge->GetLayersId();
     30 }
     31 
     32 BrowsingContext* BrowserBridgeHost::GetBrowsingContext() const {
     33  return mBridge->GetBrowsingContext();
     34 }
     35 
     36 nsILoadContext* BrowserBridgeHost::GetLoadContext() const {
     37  return mBridge->GetLoadContext();
     38 }
     39 
     40 bool BrowserBridgeHost::CanRecv() const {
     41  return mBridge && mBridge->CanRecv();
     42 }
     43 
     44 void BrowserBridgeHost::LoadURL(nsDocShellLoadState* aLoadState) {
     45  MOZ_ASSERT(aLoadState);
     46  (void)mBridge->SendLoadURL(WrapNotNull(aLoadState));
     47 }
     48 
     49 void BrowserBridgeHost::ResumeLoad(uint64_t aPendingSwitchId) {
     50  (void)mBridge->SendResumeLoad(aPendingSwitchId);
     51 }
     52 
     53 void BrowserBridgeHost::DestroyStart() {
     54  // We don't clear the bridge until BrowserBridgeChild::ActorDestroy is called,
     55  // which will end up calling DestroyComplete().
     56  if (mBridge) {
     57    (void)mBridge->SendBeginDestroy();
     58  }
     59 }
     60 
     61 void BrowserBridgeHost::DestroyComplete() { mBridge = nullptr; }
     62 
     63 bool BrowserBridgeHost::Show(const OwnerShowInfo& aShowInfo) {
     64  (void)mBridge->SendShow(aShowInfo);
     65  return true;
     66 }
     67 
     68 void BrowserBridgeHost::UpdateDimensions(const LayoutDeviceIntRect& aRect,
     69                                         const LayoutDeviceIntSize& aSize) {
     70  (void)mBridge->SendUpdateDimensions(aRect, aSize);
     71 }
     72 
     73 void BrowserBridgeHost::UpdateEffects(EffectsInfo aEffects) {
     74  if (!mBridge || mEffectsInfo == aEffects) {
     75    return;
     76  }
     77  mEffectsInfo = aEffects;
     78  (void)mBridge->SendUpdateEffects(mEffectsInfo);
     79 }
     80 
     81 already_AddRefed<nsIWidget> BrowserBridgeHost::GetWidget() const {
     82  RefPtr<Element> owner = mBridge->GetFrameLoader()->GetOwnerContent();
     83  nsCOMPtr<nsIWidget> widget = nsContentUtils::WidgetForContent(owner);
     84  if (!widget) {
     85    widget = nsContentUtils::WidgetForDocument(owner->OwnerDoc());
     86  }
     87  return widget.forget();
     88 }
     89 
     90 }  // namespace mozilla::dom