mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-12-11 16:32:59 +00:00
c7d8e549f3
This seems to work, and turns out I need to fix this before bug 1847584, because the epoch handling breaks with those patches in the case customize mode sets display: none on browser elements. Instead of dealing with epochs, just always report the last "has layers" state to BrowserParent. This is both simpler and more reliable (there were a couple hacks in WebRenderBridgeParent to make sure we notified even though a transaction failed). AsyncTabSwitcher pretty much already deals with this correctly because it already needs to deal with browsers that already have layers, we only had to loosen some assertions for potentially previous messages which are fine. Differential Revision: https://phabricator.services.mozilla.com/D187203
124 lines
3.9 KiB
C++
124 lines
3.9 KiB
C++
/* -*- 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 mozilla_dom_BrowserBridgeParent_h
|
|
#define mozilla_dom_BrowserBridgeParent_h
|
|
|
|
#include "mozilla/dom/PBrowserBridgeParent.h"
|
|
#include "mozilla/dom/ipc/IdType.h"
|
|
#include "mozilla/dom/WindowGlobalTypes.h"
|
|
|
|
namespace mozilla {
|
|
|
|
namespace a11y {
|
|
class DocAccessibleParent;
|
|
}
|
|
|
|
namespace embedding {
|
|
class PrintData;
|
|
}
|
|
|
|
namespace dom {
|
|
|
|
class BrowserParent;
|
|
|
|
/**
|
|
* BrowserBridgeParent implements the parent actor part of the PBrowserBridge
|
|
* protocol. See PBrowserBridge for more information.
|
|
*/
|
|
class BrowserBridgeParent : public PBrowserBridgeParent {
|
|
public:
|
|
NS_INLINE_DECL_REFCOUNTING(BrowserBridgeParent, final);
|
|
|
|
BrowserBridgeParent();
|
|
|
|
nsresult InitWithProcess(BrowserParent* aParentBrowser,
|
|
ContentParent* aContentParent,
|
|
const WindowGlobalInit& aWindowInit,
|
|
uint32_t aChromeFlags, TabId aTabId);
|
|
|
|
BrowserParent* GetBrowserParent() { return mBrowserParent; }
|
|
|
|
CanonicalBrowsingContext* GetBrowsingContext();
|
|
|
|
// Get our manager actor.
|
|
BrowserParent* Manager();
|
|
|
|
#if defined(ACCESSIBILITY)
|
|
/**
|
|
* Get the DocAccessibleParent which contains this iframe.
|
|
*/
|
|
a11y::DocAccessibleParent* GetEmbedderAccessibleDoc();
|
|
|
|
/**
|
|
* Get the unique id of the OuterDocAccessible associated with this iframe.
|
|
* This is the id of the RemoteAccessible inside the document returned by
|
|
* GetEmbedderAccessibleDoc.
|
|
*/
|
|
uint64_t GetEmbedderAccessibleId() { return mEmbedderAccessibleID; }
|
|
|
|
/**
|
|
* Get the DocAccessibleParent for the embedded document.
|
|
*/
|
|
a11y::DocAccessibleParent* GetDocAccessibleParent();
|
|
#endif // defined(ACCESSIBILITY)
|
|
|
|
// Tear down this BrowserBridgeParent.
|
|
void Destroy();
|
|
|
|
protected:
|
|
friend class PBrowserBridgeParent;
|
|
|
|
mozilla::ipc::IPCResult RecvShow(const OwnerShowInfo&);
|
|
mozilla::ipc::IPCResult RecvScrollbarPreferenceChanged(ScrollbarPreference);
|
|
mozilla::ipc::IPCResult RecvLoadURL(nsDocShellLoadState* aLoadState);
|
|
mozilla::ipc::IPCResult RecvResumeLoad(uint64_t aPendingSwitchID);
|
|
mozilla::ipc::IPCResult RecvUpdateDimensions(const nsIntRect& aRect,
|
|
const ScreenIntSize& aSize);
|
|
mozilla::ipc::IPCResult RecvUpdateEffects(const EffectsInfo& aEffects);
|
|
mozilla::ipc::IPCResult RecvUpdateRemotePrintSettings(
|
|
const embedding::PrintData&);
|
|
mozilla::ipc::IPCResult RecvRenderLayers(const bool& aEnabled);
|
|
|
|
mozilla::ipc::IPCResult RecvNavigateByKey(const bool& aForward,
|
|
const bool& aForDocumentNavigation);
|
|
mozilla::ipc::IPCResult RecvBeginDestroy();
|
|
|
|
mozilla::ipc::IPCResult RecvDispatchSynthesizedMouseEvent(
|
|
const WidgetMouseEvent& aEvent);
|
|
|
|
mozilla::ipc::IPCResult RecvWillChangeProcess();
|
|
|
|
mozilla::ipc::IPCResult RecvActivate(uint64_t aActionId);
|
|
|
|
mozilla::ipc::IPCResult RecvDeactivate(const bool& aWindowLowering,
|
|
uint64_t aActionId);
|
|
|
|
mozilla::ipc::IPCResult RecvUpdateRemoteStyle(
|
|
const StyleImageRendering& aImageRendering);
|
|
|
|
#ifdef ACCESSIBILITY
|
|
mozilla::ipc::IPCResult RecvSetEmbedderAccessible(PDocAccessibleParent* aDoc,
|
|
uint64_t aID);
|
|
#endif
|
|
|
|
void ActorDestroy(ActorDestroyReason aWhy) override;
|
|
|
|
private:
|
|
~BrowserBridgeParent();
|
|
|
|
RefPtr<BrowserParent> mBrowserParent;
|
|
#ifdef ACCESSIBILITY
|
|
RefPtr<a11y::DocAccessibleParent> mEmbedderAccessibleDoc;
|
|
uint64_t mEmbedderAccessibleID = 0;
|
|
#endif // ACCESSIBILITY
|
|
};
|
|
|
|
} // namespace dom
|
|
} // namespace mozilla
|
|
|
|
#endif // !defined(mozilla_dom_BrowserBridgeParent_h)
|