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