Bug 1721537 - Simplify nsIWidget::GetLayerManager by removing unused parameters. r=miko

Differential Revision: https://phabricator.services.mozilla.com/D120439
This commit is contained in:
Matt Woodrow
2021-07-22 22:58:57 +00:00
parent 306e20fc85
commit 4df1e6d64a
19 changed files with 23 additions and 118 deletions

View File

@@ -6685,29 +6685,17 @@ already_AddRefed<LayerManager> nsContentUtils::LayerManagerForContent(
return nullptr; return nullptr;
} }
static already_AddRefed<LayerManager> LayerManagerForDocumentInternal( already_AddRefed<LayerManager> nsContentUtils::LayerManagerForDocument(
const Document* aDoc, bool aRequirePersistent) { const Document* aDoc) {
nsIWidget* widget = nsContentUtils::WidgetForDocument(aDoc); nsIWidget* widget = nsContentUtils::WidgetForDocument(aDoc);
if (widget) { if (widget) {
RefPtr<LayerManager> manager = widget->GetLayerManager( RefPtr<LayerManager> manager = widget->GetLayerManager();
aRequirePersistent ? nsIWidget::LAYER_MANAGER_PERSISTENT
: nsIWidget::LAYER_MANAGER_CURRENT);
return manager.forget(); return manager.forget();
} }
return nullptr; return nullptr;
} }
already_AddRefed<LayerManager> nsContentUtils::LayerManagerForDocument(
const Document* aDoc) {
return LayerManagerForDocumentInternal(aDoc, false);
}
already_AddRefed<LayerManager>
nsContentUtils::PersistentLayerManagerForDocument(Document* aDoc) {
return LayerManagerForDocumentInternal(aDoc, true);
}
bool nsContentUtils::AllowXULXBLForPrincipal(nsIPrincipal* aPrincipal) { bool nsContentUtils::AllowXULXBLForPrincipal(nsIPrincipal* aPrincipal) {
if (!aPrincipal) { if (!aPrincipal) {
return false; return false;

View File

@@ -2374,23 +2374,6 @@ class nsContentUtils {
static already_AddRefed<mozilla::layers::LayerManager> LayerManagerForContent( static already_AddRefed<mozilla::layers::LayerManager> LayerManagerForContent(
const nsIContent* aContent); const nsIContent* aContent);
/**
* Returns a layer manager to use for the given document. Basically we
* look up the document hierarchy for the first document which has
* a presentation with an associated widget, and use that widget's
* layer manager. In addition to the normal layer manager lookup this will
* specifically request a persistent layer manager. This means that the layer
* manager is expected to remain the layer manager for the document in the
* forseeable future. This function should be used carefully as it may change
* the document's layer manager.
*
* @param aDoc the document for which to return a layer manager.
* @param aAllowRetaining an outparam that states whether the returned
* layer manager should be used for retained layers
*/
static already_AddRefed<mozilla::layers::LayerManager>
PersistentLayerManagerForDocument(Document* aDoc);
/** /**
* Determine whether a content node is focused or not, * Determine whether a content node is focused or not,
* *

View File

@@ -2545,8 +2545,7 @@ nsDOMWindowUtils::GetLayerManagerType(nsAString& aType) {
nsCOMPtr<nsIWidget> widget = GetWidget(); nsCOMPtr<nsIWidget> widget = GetWidget();
if (!widget) return NS_ERROR_FAILURE; if (!widget) return NS_ERROR_FAILURE;
LayerManager* mgr = LayerManager* mgr = widget->GetLayerManager();
widget->GetLayerManager(nsIWidget::LAYER_MANAGER_PERSISTENT);
if (!mgr) return NS_ERROR_FAILURE; if (!mgr) return NS_ERROR_FAILURE;
mgr->GetBackendName(aType); mgr->GetBackendName(aType);

View File

@@ -1418,8 +1418,7 @@ static already_AddRefed<LayerManager> LayerManagerFromCanvasElement(
return nullptr; return nullptr;
} }
return nsContentUtils::PersistentLayerManagerForDocument( return nsContentUtils::LayerManagerForDocument(aCanvasElement->OwnerDoc());
aCanvasElement->OwnerDoc());
} }
bool CanvasRenderingContext2D::TrySharedTarget( bool CanvasRenderingContext2D::TrySharedTarget(

View File

@@ -585,9 +585,7 @@ bool PuppetWidget::GetEditCommands(NativeKeyBindingsType aType,
return true; return true;
} }
LayerManager* PuppetWidget::GetLayerManager( LayerManager* PuppetWidget::GetLayerManager() {
PLayerTransactionChild* aShadowManager, LayersBackend aBackendHint,
LayerManagerPersistence aPersistence) {
if (!mLayerManager) { if (!mLayerManager) {
if (XRE_IsParentProcess()) { if (XRE_IsParentProcess()) {
// On the parent process there is no CompositorBridgeChild which confuses // On the parent process there is no CompositorBridgeChild which confuses

View File

@@ -171,10 +171,7 @@ class PuppetWidget : public nsBaseWidget,
return eTransparencyTransparent; return eTransparencyTransparent;
} }
virtual LayerManager* GetLayerManager( virtual LayerManager* GetLayerManager() override;
PLayerTransactionChild* aShadowManager = nullptr,
LayersBackend aBackendHint = mozilla::layers::LayersBackend::LAYERS_NONE,
LayerManagerPersistence aPersistence = LAYER_MANAGER_CURRENT) override;
// This is used for creating remote layer managers and for re-creating // This is used for creating remote layer managers and for re-creating
// them after a compositor reset. The lambda aInitializeFunc is used to // them after a compositor reset. The lambda aInitializeFunc is used to

View File

@@ -2176,8 +2176,7 @@ nsresult nsWindow::MakeFullScreen(bool aFullScreen, nsIScreen*) {
return NS_OK; return NS_OK;
} }
mozilla::layers::LayerManager* nsWindow::GetLayerManager( mozilla::layers::LayerManager* nsWindow::GetLayerManager() {
PLayerTransactionChild*, LayersBackend, LayerManagerPersistence) {
if (mLayerManager) { if (mLayerManager) {
return mLayerManager; return mLayerManager;
} }

View File

@@ -178,10 +178,7 @@ class nsWindow final : public nsBaseWidget {
const InputContextAction& aAction) override; const InputContextAction& aAction) override;
virtual InputContext GetInputContext() override; virtual InputContext GetInputContext() override;
LayerManager* GetLayerManager( LayerManager* GetLayerManager() override;
PLayerTransactionChild* aShadowManager = nullptr,
LayersBackend aBackendHint = mozilla::layers::LayersBackend::LAYERS_NONE,
LayerManagerPersistence aPersistence = LAYER_MANAGER_CURRENT) override;
virtual bool NeedsPaint() override; virtual bool NeedsPaint() override;

View File

@@ -296,10 +296,7 @@ class nsCocoaWindow final : public nsBaseWidget, public nsPIWidgetCocoa {
virtual void Invalidate(const LayoutDeviceIntRect& aRect) override; virtual void Invalidate(const LayoutDeviceIntRect& aRect) override;
virtual nsresult ConfigureChildren(const nsTArray<Configuration>& aConfigurations) override; virtual nsresult ConfigureChildren(const nsTArray<Configuration>& aConfigurations) override;
virtual LayerManager* GetLayerManager( virtual LayerManager* GetLayerManager() override;
PLayerTransactionChild* aShadowManager = nullptr,
LayersBackend aBackendHint = mozilla::layers::LayersBackend::LAYERS_NONE,
LayerManagerPersistence aPersistence = LAYER_MANAGER_CURRENT) override;
virtual nsresult DispatchEvent(mozilla::WidgetGUIEvent* aEvent, nsEventStatus& aStatus) override; virtual nsresult DispatchEvent(mozilla::WidgetGUIEvent* aEvent, nsEventStatus& aStatus) override;
virtual void CaptureRollupEvents(nsIRollupListener* aListener, bool aDoCapture) override; virtual void CaptureRollupEvents(nsIRollupListener* aListener, bool aDoCapture) override;
[[nodiscard]] virtual nsresult GetAttention(int32_t aCycleCount) override; [[nodiscard]] virtual nsresult GetAttention(int32_t aCycleCount) override;

View File

@@ -1035,11 +1035,9 @@ nsresult nsCocoaWindow::ConfigureChildren(const nsTArray<Configuration>& aConfig
return NS_OK; return NS_OK;
} }
LayerManager* nsCocoaWindow::GetLayerManager(PLayerTransactionChild* aShadowManager, LayerManager* nsCocoaWindow::GetLayerManager() {
LayersBackend aBackendHint,
LayerManagerPersistence aPersistence) {
if (mPopupContentView) { if (mPopupContentView) {
return mPopupContentView->GetLayerManager(aShadowManager, aBackendHint, aPersistence); return mPopupContentView->GetLayerManager();
} }
return nullptr; return nullptr;
} }

View File

@@ -8276,9 +8276,7 @@ nsresult nsWindow::BeginResizeDrag(WidgetGUIEvent* aEvent, int32_t aHorizontal,
return NS_OK; return NS_OK;
} }
nsIWidget::LayerManager* nsWindow::GetLayerManager( nsIWidget::LayerManager* nsWindow::GetLayerManager() {
PLayerTransactionChild* aShadowManager, LayersBackend aBackendHint,
LayerManagerPersistence aPersistence) {
if (mIsDestroyed) { if (mIsDestroyed) {
// Prevent external code from triggering the re-creation of the // Prevent external code from triggering the re-creation of the
// LayerManager/Compositor during shutdown. Just return what we currently // LayerManager/Compositor during shutdown. Just return what we currently
@@ -8286,8 +8284,7 @@ nsIWidget::LayerManager* nsWindow::GetLayerManager(
return mLayerManager; return mLayerManager;
} }
return nsBaseWidget::GetLayerManager(aShadowManager, aBackendHint, return nsBaseWidget::GetLayerManager();
aPersistence);
} }
void nsWindow::SetCompositorWidgetDelegate(CompositorWidgetDelegate* delegate) { void nsWindow::SetCompositorWidgetDelegate(CompositorWidgetDelegate* delegate) {

View File

@@ -598,10 +598,7 @@ class nsWindow final : public nsBaseWidget {
void DispatchMissedButtonReleases(GdkEventCrossing* aGdkEvent); void DispatchMissedButtonReleases(GdkEventCrossing* aGdkEvent);
// nsBaseWidget // nsBaseWidget
virtual LayerManager* GetLayerManager( virtual LayerManager* GetLayerManager() override;
PLayerTransactionChild* aShadowManager = nullptr,
LayersBackend aBackendHint = mozilla::layers::LayersBackend::LAYERS_NONE,
LayerManagerPersistence aPersistence = LAYER_MANAGER_CURRENT) override;
void SetCompositorWidgetDelegate(CompositorWidgetDelegate* delegate) override; void SetCompositorWidgetDelegate(CompositorWidgetDelegate* delegate) override;

View File

@@ -250,11 +250,8 @@ LayoutDeviceIntPoint HeadlessWidget::WidgetToScreenOffset() {
return mTopLevel->GetBounds().TopLeft(); return mTopLevel->GetBounds().TopLeft();
} }
LayerManager* HeadlessWidget::GetLayerManager( LayerManager* HeadlessWidget::GetLayerManager() {
PLayerTransactionChild* aShadowManager, LayersBackend aBackendHint, return nsBaseWidget::GetLayerManager();
LayerManagerPersistence aPersistence) {
return nsBaseWidget::GetLayerManager(aShadowManager, aBackendHint,
aPersistence);
} }
void HeadlessWidget::SetCompositorWidgetDelegate( void HeadlessWidget::SetCompositorWidgetDelegate(

View File

@@ -100,10 +100,7 @@ class HeadlessWidget : public nsBaseWidget {
} }
virtual InputContext GetInputContext() override { return mInputContext; } virtual InputContext GetInputContext() override { return mInputContext; }
virtual LayerManager* GetLayerManager( virtual LayerManager* GetLayerManager() override;
PLayerTransactionChild* aShadowManager = nullptr,
LayersBackend aBackendHint = mozilla::layers::LayersBackend::LAYERS_NONE,
LayerManagerPersistence aPersistence = LAYER_MANAGER_CURRENT) override;
void SetCompositorWidgetDelegate(CompositorWidgetDelegate* delegate) override; void SetCompositorWidgetDelegate(CompositorWidgetDelegate* delegate) override;

View File

@@ -1505,9 +1505,7 @@ bool nsBaseWidget::ShouldUseOffMainThreadCompositing() {
return gfxPlatform::UsesOffMainThreadCompositing(); return gfxPlatform::UsesOffMainThreadCompositing();
} }
LayerManager* nsBaseWidget::GetLayerManager( LayerManager* nsBaseWidget::GetLayerManager() {
PLayerTransactionChild* aShadowManager, LayersBackend aBackendHint,
LayerManagerPersistence aPersistence) {
if (!mLayerManager) { if (!mLayerManager) {
if (!mShutdownObserver) { if (!mShutdownObserver) {
// We are shutting down, do not try to re-create a LayerManager // We are shutting down, do not try to re-create a LayerManager
@@ -1515,11 +1513,6 @@ LayerManager* nsBaseWidget::GetLayerManager(
} }
// Try to use an async compositor first, if possible // Try to use an async compositor first, if possible
if (ShouldUseOffMainThreadCompositing()) { if (ShouldUseOffMainThreadCompositing()) {
// e10s uses the parameter to pass in the shadow manager from the
// BrowserChild so we don't expect to see it there since this doesn't
// support e10s.
NS_ASSERTION(aShadowManager == nullptr,
"Async Compositor not supported with e10s");
CreateCompositor(); CreateCompositor();
} }

View File

@@ -218,10 +218,7 @@ class nsBaseWidget : public nsIWidget, public nsSupportsWeakReference {
nsIScreen* aScreen = nullptr) override; nsIScreen* aScreen = nullptr) override;
void InfallibleMakeFullScreen(bool aFullScreen, nsIScreen* aScreen = nullptr); void InfallibleMakeFullScreen(bool aFullScreen, nsIScreen* aScreen = nullptr);
LayerManager* GetLayerManager( LayerManager* GetLayerManager() override;
PLayerTransactionChild* aShadowManager = nullptr,
LayersBackend aBackendHint = mozilla::layers::LayersBackend::LAYERS_NONE,
LayerManagerPersistence aPersistence = LAYER_MANAGER_CURRENT) override;
// A remote compositor session tied to this window has been lost and IPC // A remote compositor session tied to this window has been lost and IPC
// messages will no longer work. The widget must clean up any lingering // messages will no longer work. The widget must clean up any lingering

View File

@@ -1294,24 +1294,7 @@ class nsIWidget : public nsISupports {
* Return the widget's LayerManager. The layer tree for that * Return the widget's LayerManager. The layer tree for that
* LayerManager is what gets rendered to the widget. * LayerManager is what gets rendered to the widget.
*/ */
inline LayerManager* GetLayerManager() { virtual LayerManager* GetLayerManager() = 0;
return GetLayerManager(nullptr, mozilla::layers::LayersBackend::LAYERS_NONE,
LAYER_MANAGER_CURRENT);
}
inline LayerManager* GetLayerManager(LayerManagerPersistence aPersistence) {
return GetLayerManager(nullptr, mozilla::layers::LayersBackend::LAYERS_NONE,
aPersistence);
}
/**
* Like GetLayerManager(), but prefers creating a layer manager of
* type |aBackendHint| instead of what would normally be created.
* LayersBackend::LAYERS_NONE means "no hint".
*/
virtual LayerManager* GetLayerManager(
PLayerTransactionChild* aShadowManager, LayersBackend aBackendHint,
LayerManagerPersistence aPersistence = LAYER_MANAGER_CURRENT) = 0;
/** /**
* Called before each layer manager transaction to allow any preparation * Called before each layer manager transaction to allow any preparation

View File

@@ -4080,9 +4080,7 @@ bool nsWindow::HasPendingInputEvent() {
* *
**************************************************************/ **************************************************************/
LayerManager* nsWindow::GetLayerManager(PLayerTransactionChild* aShadowManager, LayerManager* nsWindow::GetLayerManager() {
LayersBackend aBackendHint,
LayerManagerPersistence aPersistence) {
if (mLayerManager) { if (mLayerManager) {
return mLayerManager; return mLayerManager;
} }
@@ -4097,12 +4095,6 @@ LayerManager* nsWindow::GetLayerManager(PLayerTransactionChild* aShadowManager,
// Try OMTC first. // Try OMTC first.
if (!mLayerManager && ShouldUseOffMainThreadCompositing()) { if (!mLayerManager && ShouldUseOffMainThreadCompositing()) {
gfxWindowsPlatform::GetPlatform()->UpdateRenderMode(); gfxWindowsPlatform::GetPlatform()->UpdateRenderMode();
// e10s uses the parameter to pass in the shadow manager from the
// BrowserChild so we don't expect to see it there since this doesn't
// support e10s.
NS_ASSERTION(aShadowManager == nullptr,
"Async Compositor not supported with e10s");
CreateCompositor(); CreateCompositor();
} }

View File

@@ -210,10 +210,7 @@ class nsWindow final : public nsWindowBase {
bool aDoCapture) override; bool aDoCapture) override;
[[nodiscard]] virtual nsresult GetAttention(int32_t aCycleCount) override; [[nodiscard]] virtual nsresult GetAttention(int32_t aCycleCount) override;
virtual bool HasPendingInputEvent() override; virtual bool HasPendingInputEvent() override;
virtual LayerManager* GetLayerManager( virtual LayerManager* GetLayerManager() override;
PLayerTransactionChild* aShadowManager = nullptr,
LayersBackend aBackendHint = mozilla::layers::LayersBackend::LAYERS_NONE,
LayerManagerPersistence aPersistence = LAYER_MANAGER_CURRENT) override;
void SetCompositorWidgetDelegate(CompositorWidgetDelegate* delegate) override; void SetCompositorWidgetDelegate(CompositorWidgetDelegate* delegate) override;
[[nodiscard]] virtual nsresult OnDefaultButtonLoaded( [[nodiscard]] virtual nsresult OnDefaultButtonLoaded(
const LayoutDeviceIntRect& aButtonRect) override; const LayoutDeviceIntRect& aButtonRect) override;