Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1293)

Unified Diff: third_party/WebKit/Source/web/WebViewImpl.cpp

Issue 2342103002: Refactor the way PaintArtifactCompositor is attached and used. (Closed)
Patch Set: none Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/web/WebViewImpl.cpp
diff --git a/third_party/WebKit/Source/web/WebViewImpl.cpp b/third_party/WebKit/Source/web/WebViewImpl.cpp
index 967783155d0b9540c390605a97edd23015b26b47..86809ad2ae6323269499cc70a24ceb52101d56c1 100644
--- a/third_party/WebKit/Source/web/WebViewImpl.cpp
+++ b/third_party/WebKit/Source/web/WebViewImpl.cpp
@@ -2786,11 +2786,6 @@ void WebViewImpl::setTextDirection(WebTextDirection direction)
bool WebViewImpl::isAcceleratedCompositingActive() const
{
- // For SPv2, accelerated compositing is managed by the
- // PaintArtifactCompositor.
- if (RuntimeEnabledFeatures::slimmingPaintV2Enabled())
- return m_paintArtifactCompositor.rootLayer();
-
return m_rootLayer;
}
@@ -2805,10 +2800,7 @@ void WebViewImpl::willCloseLayerTreeView()
if (m_layerTreeView)
page()->willCloseLayerTreeView(*m_layerTreeView);
- if (RuntimeEnabledFeatures::slimmingPaintV2Enabled())
- detachPaintArtifactCompositor();
- else
- setRootGraphicsLayer(nullptr);
+ setRootLayer(nullptr);
m_mutator = nullptr;
m_layerTreeView = nullptr;
@@ -4242,18 +4234,17 @@ void WebViewImpl::registerViewportLayersWithCompositor()
layoutViewportWebLayer);
}
-void WebViewImpl::setRootGraphicsLayer(GraphicsLayer* layer)
+void WebViewImpl::setRootGraphicsLayer(GraphicsLayer* graphicsLayer)
{
if (!m_layerTreeView)
return;
- // In SPv2, we attach layers via PaintArtifactCompositor, rather than
- // supplying a root GraphicsLayer from PaintLayerCompositor.
+ // In SPv2, setRootLayer is used instead.
DCHECK(!RuntimeEnabledFeatures::slimmingPaintV2Enabled());
VisualViewport& visualViewport = page()->frameHost().visualViewport();
- visualViewport.attachToLayerTree(layer);
- if (layer) {
+ visualViewport.attachToLayerTree(graphicsLayer);
+ if (graphicsLayer) {
m_rootGraphicsLayer = visualViewport.rootGraphicsLayer();
m_visualViewportContainerLayer = visualViewport.containerLayer();
m_rootLayer = m_rootGraphicsLayer->platformLayer();
@@ -4283,6 +4274,28 @@ void WebViewImpl::setRootGraphicsLayer(GraphicsLayer* layer)
}
}
+void WebViewImpl::setRootLayer(WebLayer* layer)
+{
+ if (!m_layerTreeView)
+ return;
+
+ if (layer) {
+ m_rootLayer = layer;
+ m_layerTreeView->setRootLayer(*m_rootLayer);
+ m_layerTreeView->setVisible(page()->isPageVisible());
+ } else {
+ m_rootLayer = nullptr;
+ // This means that we're transitioning to a new page. Suppress
+ // commits until Blink generates invalidations so we don't
+ // attempt to paint too early in the next page load.
+ m_layerTreeView->setDeferCommits(true);
+ m_layerTreeView->clearRootLayer();
+ m_layerTreeView->clearViewportLayers();
+ if (WebDevToolsAgentImpl* devTools = mainFrameDevToolsAgentImpl())
+ devTools->rootLayerCleared();
+ }
+}
+
void WebViewImpl::invalidateRect(const IntRect& rect)
{
if (m_layerTreeView) {
@@ -4355,9 +4368,6 @@ void WebViewImpl::initializeLayerTreeView()
m_linkHighlightsTimeline = CompositorAnimationTimeline::create();
attachCompositorAnimationTimeline(m_linkHighlightsTimeline.get());
}
-
- if (RuntimeEnabledFeatures::slimmingPaintV2Enabled())
- attachPaintArtifactCompositor();
}
void WebViewImpl::applyViewportDeltas(
@@ -4555,36 +4565,6 @@ void WebViewImpl::updatePageOverlays()
}
}
-void WebViewImpl::attachPaintArtifactCompositor()
-{
- if (!m_layerTreeView)
- return;
-
- // Otherwise, PaintLayerCompositor is expected to supply a root
- // GraphicsLayer via setRootGraphicsLayer.
- DCHECK(RuntimeEnabledFeatures::slimmingPaintV2Enabled());
-
- // TODO(jbroman): This should probably have hookups for overlays, visual
- // viewport, etc.
-
- WebLayer* rootLayer = m_paintArtifactCompositor.getWebLayer();
- DCHECK(rootLayer);
- m_layerTreeView->setRootLayer(*rootLayer);
-
- // TODO(jbroman): This is cargo-culted from setRootGraphicsLayer. Is it
- // necessary?
- m_layerTreeView->setVisible(page()->isPageVisible());
-}
-
-void WebViewImpl::detachPaintArtifactCompositor()
-{
- if (!m_layerTreeView)
- return;
-
- m_layerTreeView->setDeferCommits(true);
- m_layerTreeView->clearRootLayer();
-}
-
float WebViewImpl::deviceScaleFactor() const
{
// TODO(oshima): Investigate if this should return the ScreenInfo's scale factor rather than

Powered by Google App Engine
This is Rietveld 408576698