Bug 1348280 - Remove LayerManager type assertions from TabChild
As per https://bugzilla.mozilla.org/show_bug.cgi?id=1348280#c22 TabChild should not assert that it gets a certain type of LayerManager. Additionally, GetLayerManager should not be called in assertions since that code has side effects.
MozReview-Commit-ID: F4pwuUTjHQf
--- a/dom/ipc/TabChild.cpp
+++ b/dom/ipc/TabChild.cpp
@@ -2559,30 +2559,24 @@ TabChild::InternalSetDocShellIsActive(bo
// been a request to force paint. This is so that the BackgroundHangMonitor
// for force painting can be made to wait again.
if (aIsActive) {
ProcessHangMonitor::ClearForcePaint();
}
});
if (mCompositorOptions) {
- // Note that |GetLayerManager()| has side-effects in that it creates a layer
- // manager if one doesn't exist already. Calling it inside a debug-only
- // assertion is generally bad but in this case we call it unconditionally
- // just below so it's ok.
MOZ_ASSERT(mPuppetWidget);
- MOZ_ASSERT(mPuppetWidget->GetLayerManager());
- MOZ_ASSERT(mPuppetWidget->GetLayerManager()->GetBackendType() == LayersBackend::LAYERS_CLIENT
- || mPuppetWidget->GetLayerManager()->GetBackendType() == LayersBackend::LAYERS_WR
- || (gfxPlatform::IsHeadless() && mPuppetWidget->GetLayerManager()->GetBackendType() == LayersBackend::LAYERS_BASIC));
+ RefPtr<LayerManager> lm = mPuppetWidget->GetLayerManager();
+ MOZ_ASSERT(lm);
// We send the current layer observer epoch to the compositor so that
// TabParent knows whether a layer update notification corresponds to the
// latest SetDocShellIsActive request that was made.
- mPuppetWidget->GetLayerManager()->SetLayerObserverEpoch(mLayerObserverEpoch);
+ lm->SetLayerObserverEpoch(mLayerObserverEpoch);
}
// docshell is consider prerendered only if not active yet
mIsPrerendered &= !aIsActive;
nsCOMPtr<nsIDocShell> docShell = do_GetInterface(WebNavigation());
if (docShell) {
bool wasActive;
docShell->GetIsActive(&wasActive);
@@ -3068,22 +3062,20 @@ TabChild::GetFrom(uint64_t aLayersId)
}
void
TabChild::DidComposite(uint64_t aTransactionId,
const TimeStamp& aCompositeStart,
const TimeStamp& aCompositeEnd)
{
MOZ_ASSERT(mPuppetWidget);
- MOZ_ASSERT(mPuppetWidget->GetLayerManager());
- MOZ_ASSERT(mPuppetWidget->GetLayerManager()->GetBackendType() == LayersBackend::LAYERS_CLIENT
- || mPuppetWidget->GetLayerManager()->GetBackendType() == LayersBackend::LAYERS_WR
- || (gfxPlatform::IsHeadless() && mPuppetWidget->GetLayerManager()->GetBackendType() == LayersBackend::LAYERS_BASIC));
-
- mPuppetWidget->GetLayerManager()->DidComposite(aTransactionId, aCompositeStart, aCompositeEnd);
+ RefPtr<LayerManager> lm = mPuppetWidget->GetLayerManager();
+ MOZ_ASSERT(lm);
+
+ lm->DidComposite(aTransactionId, aCompositeStart, aCompositeEnd);
}
void
TabChild::DidRequestComposite(const TimeStamp& aCompositeReqStart,
const TimeStamp& aCompositeReqEnd)
{
nsCOMPtr<nsIDocShell> docShellComPtr = do_GetInterface(WebNavigation());
if (!docShellComPtr) {
@@ -3106,34 +3098,29 @@ TabChild::DidRequestComposite(const Time
MarkerTracingType::END, MarkerStackRequest::NO_STACK);
}
}
void
TabChild::ClearCachedResources()
{
MOZ_ASSERT(mPuppetWidget);
- MOZ_ASSERT(mPuppetWidget->GetLayerManager());
- MOZ_ASSERT(mPuppetWidget->GetLayerManager()->GetBackendType() == LayersBackend::LAYERS_CLIENT
- || mPuppetWidget->GetLayerManager()->GetBackendType() == LayersBackend::LAYERS_WR
- || (gfxPlatform::IsHeadless() && mPuppetWidget->GetLayerManager()->GetBackendType() == LayersBackend::LAYERS_BASIC));
-
- mPuppetWidget->GetLayerManager()->ClearCachedResources();
+ RefPtr<LayerManager> lm = mPuppetWidget->GetLayerManager();
+ MOZ_ASSERT(lm);
+
+ lm->ClearCachedResources();
}
void
TabChild::InvalidateLayers()
{
MOZ_ASSERT(mPuppetWidget);
- MOZ_ASSERT(mPuppetWidget->GetLayerManager());
- MOZ_ASSERT(mPuppetWidget->GetLayerManager()->GetBackendType() == LayersBackend::LAYERS_CLIENT
- || mPuppetWidget->GetLayerManager()->GetBackendType() == LayersBackend::LAYERS_WR
- || (gfxPlatform::IsHeadless() && mPuppetWidget->GetLayerManager()->GetBackendType() == LayersBackend::LAYERS_BASIC));
-
RefPtr<LayerManager> lm = mPuppetWidget->GetLayerManager();
+ MOZ_ASSERT(lm);
+
FrameLayerBuilder::InvalidateAllLayers(lm);
}
void
TabChild::ReinitRendering()
{
MOZ_ASSERT(mLayersId);
@@ -3219,20 +3206,16 @@ TabChild::ReinitRenderingForDeviceReset(
// Proceed with destroying and recreating the layer manager.
ReinitRendering();
}
void
TabChild::CompositorUpdated(const TextureFactoryIdentifier& aNewIdentifier,
uint64_t aDeviceResetSeqNo)
{
- MOZ_ASSERT(mPuppetWidget->GetLayerManager()->GetBackendType() == LayersBackend::LAYERS_CLIENT
- || mPuppetWidget->GetLayerManager()->GetBackendType() == LayersBackend::LAYERS_WR
- || (gfxPlatform::IsHeadless() && mPuppetWidget->GetLayerManager()->GetBackendType() == LayersBackend::LAYERS_BASIC));
-
RefPtr<LayerManager> lm = mPuppetWidget->GetLayerManager();
mTextureFactoryIdentifier = aNewIdentifier;
lm->UpdateTextureFactoryIdentifier(aNewIdentifier, aDeviceResetSeqNo);
FrameLayerBuilder::InvalidateAllLayers(lm);
}
NS_IMETHODIMP