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

Unified Diff: Source/web/WebViewImpl.cpp

Issue 1078473002: Remove WebViewImpl::setIsAcceleratedCompositingActive (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Fix issues Created 5 years, 8 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
« no previous file with comments | « Source/web/WebViewImpl.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/web/WebViewImpl.cpp
diff --git a/Source/web/WebViewImpl.cpp b/Source/web/WebViewImpl.cpp
index 0ed038eb8fa1febc7dfa5d9417dd29ec62f02e80..294f601efe642ac70a466b8fe5bea6ee9a15a28d 100644
--- a/Source/web/WebViewImpl.cpp
+++ b/Source/web/WebViewImpl.cpp
@@ -340,10 +340,14 @@ void WebView::didExitModalLoop()
void WebViewImpl::setMainFrame(WebFrame* frame)
{
- if (frame->isWebLocalFrame())
- toWebLocalFrameImpl(frame)->initializeCoreFrame(&page()->frameHost(), 0, nullAtom, nullAtom);
- else
+ if (frame->isWebLocalFrame()) {
+ WebLocalFrameImpl* localFrame = toWebLocalFrameImpl(frame);
+ localFrame->initializeCoreFrame(&page()->frameHost(), 0, nullAtom, nullAtom);
+ // Composited WebViews want repaints outside the frame visible rect.
+ localFrame->frame()->view()->setClipsRepaints(!m_layerTreeView);
+ } else {
toWebRemoteFrameImpl(frame)->initializeCoreFrame(&page()->frameHost(), 0, nullAtom);
+ }
}
void WebViewImpl::setCredentialManagerClient(WebCredentialManagerClient* webCredentialManagerClient)
@@ -406,19 +410,13 @@ WebViewImpl::WebViewImpl(WebViewClient* client)
, m_rootGraphicsLayer(0)
, m_rootTransformLayer(0)
, m_graphicsLayerFactory(adoptPtr(new GraphicsLayerFactoryChromium(this)))
- , m_isAcceleratedCompositingActive(false)
- , m_layerTreeViewCommitsDeferred(false)
- , m_layerTreeViewClosed(false)
, m_matchesHeuristicsForGpuRasterization(false)
, m_recreatingGraphicsContext(false)
, m_flingModifier(0)
, m_flingSourceDevice(false)
, m_fullscreenController(FullscreenController::create(this))
, m_showFPSCounter(false)
- , m_showPaintRects(false)
- , m_showDebugBorders(false)
, m_continuousPaintingEnabled(false)
- , m_showScrollBottleneckRects(false)
, m_baseBackgroundColor(Color::white)
, m_backgroundColorOverride(Color::transparent)
, m_zoomFactorOverride(0)
@@ -961,7 +959,6 @@ void WebViewImpl::setShowPaintRects(bool show)
TRACE_EVENT0("blink", "WebViewImpl::setShowPaintRects");
m_layerTreeView->setShowPaintRects(show);
}
- m_showPaintRects = show;
setFirstPaintInvalidationTrackingEnabledForShowPaintRects(show);
}
@@ -969,7 +966,6 @@ void WebViewImpl::setShowDebugBorders(bool show)
{
if (m_layerTreeView)
m_layerTreeView->setShowDebugBorders(show);
- m_showDebugBorders = show;
}
void WebViewImpl::setContinuousPaintingEnabled(bool enabled)
@@ -997,7 +993,6 @@ void WebViewImpl::setShowScrollBottleneckRects(bool show)
{
if (m_layerTreeView)
m_layerTreeView->setShowScrollBottleneckRects(show);
- m_showScrollBottleneckRects = show;
}
void WebViewImpl::acceptLanguagesChanged()
@@ -2734,14 +2729,13 @@ void WebViewImpl::setTextDirection(WebTextDirection direction)
bool WebViewImpl::isAcceleratedCompositingActive() const
{
- return m_isAcceleratedCompositingActive;
+ return m_rootLayer;
}
void WebViewImpl::willCloseLayerTreeView()
{
- setIsAcceleratedCompositingActive(false);
+ setRootGraphicsLayer(nullptr);
enne (OOO) 2015/04/23 22:48:17 This is the crash fix from https://codereview.chro
m_layerTreeView = 0;
- m_layerTreeViewClosed = true;
}
void WebViewImpl::didAcquirePointerLock()
@@ -3706,7 +3700,7 @@ void WebViewImpl::sendResizeEventAndRepaint()
}
if (m_client) {
- if (isAcceleratedCompositingActive()) {
+ if (m_layerTreeView) {
updateLayerTreeViewport();
} else {
WebRect damagedRect(0, 0, m_size.width, m_size.height);
@@ -3848,6 +3842,9 @@ void WebViewImpl::setIsTransparent(bool isTransparent)
// Future frames check this to know whether to be transparent.
m_isTransparent = isTransparent;
+
+ if (m_layerTreeView)
+ m_layerTreeView->setHasTransparentBackground(this->isTransparent());
}
bool WebViewImpl::isTransparent() const
@@ -3948,11 +3945,8 @@ void WebViewImpl::didRemoveAllPendingStylesheet(WebLocalFrameImpl* webframe)
void WebViewImpl::resumeTreeViewCommits()
{
- if (m_layerTreeViewCommitsDeferred) {
- if (m_layerTreeView)
- m_layerTreeView->setDeferCommits(false);
- m_layerTreeViewCommitsDeferred = false;
- }
+ if (m_layerTreeView)
+ m_layerTreeView->setDeferCommits(false);
}
void WebViewImpl::postLayoutResize(WebLocalFrameImpl* webframe)
@@ -4148,6 +4142,9 @@ void WebViewImpl::suppressInvalidations(bool enable)
void WebViewImpl::setRootGraphicsLayer(GraphicsLayer* layer)
{
+ if (!m_layerTreeView)
+ return;
+
suppressInvalidations(true);
PinchViewport& pinchViewport = page()->frameHost().pinchViewport();
@@ -4156,26 +4153,30 @@ void WebViewImpl::setRootGraphicsLayer(GraphicsLayer* layer)
m_rootGraphicsLayer = pinchViewport.rootGraphicsLayer();
m_rootLayer = pinchViewport.rootGraphicsLayer()->platformLayer();
m_rootTransformLayer = pinchViewport.rootGraphicsLayer();
+ updateRootLayerTransform();
enne (OOO) 2015/04/23 22:48:17 I rolled https://codereview.chromium.org/109718300
+ m_layerTreeView->setRootLayer(*m_rootLayer);
+ // We register viewport layers here since there may not be a layer
+ // tree view prior to this point.
+ page()->frameHost().pinchViewport().registerLayersWithTreeView(m_layerTreeView);
+ if (m_pageOverlays)
+ m_pageOverlays->update();
+
+ // TODO(enne): Work around page visibility changes not being
+ // propogated to the WebView in some circumstances. This needs to
+ // be refreshed here when setting a new root layer to avoid being
+ // stuck in a presumed incorrectly invisible state.
+ bool visible = page()->visibilityState() == PageVisibilityStateVisible;
enne (OOO) 2015/04/23 22:48:17 This is the fix that made me revert the original p
+ m_layerTreeView->setVisible(visible);
} else {
m_rootGraphicsLayer = nullptr;
m_rootLayer = nullptr;
m_rootTransformLayer = nullptr;
- }
-
- setIsAcceleratedCompositingActive(layer != 0);
-
- updateRootLayerTransform();
-
- if (m_layerTreeView) {
- if (m_rootLayer) {
- m_layerTreeView->setRootLayer(*m_rootLayer);
- // We register viewport layers here since there may not be a layer
- // tree view prior to this point.
- page()->frameHost().pinchViewport().registerLayersWithTreeView(m_layerTreeView);
- } else {
- m_layerTreeView->clearRootLayer();
- page()->frameHost().pinchViewport().clearLayersForTreeView(m_layerTreeView);
- }
+ // 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();
+ page()->frameHost().pinchViewport().clearLayersForTreeView(m_layerTreeView);
}
suppressInvalidations(false);
@@ -4188,10 +4189,9 @@ void WebViewImpl::scheduleCompositingLayerSync()
void WebViewImpl::invalidateRect(const IntRect& rect)
{
- if (m_isAcceleratedCompositingActive) {
- ASSERT(m_layerTreeView);
+ if (m_layerTreeView)
updateLayerTreeViewport();
- } else if (m_client)
+ else if (m_client)
m_client->didInvalidateRect(rect);
}
@@ -4258,58 +4258,6 @@ void WebViewImpl::initializeLayerTreeView()
ASSERT(m_layerTreeView || !m_client || m_client->allowsBrokenNullLayerTreeView());
}
-void WebViewImpl::setIsAcceleratedCompositingActive(bool active)
-{
- // In the middle of shutting down; don't try to spin back up a compositor.
- // FIXME: compositing startup/shutdown should be refactored so that it
- // turns on explicitly rather than lazily, which causes this awkwardness.
- if (m_layerTreeViewClosed)
- return;
-
- ASSERT(!active || m_layerTreeView);
- Platform::current()->histogramEnumeration("GPU.setIsAcceleratedCompositingActive", active * 2 + m_isAcceleratedCompositingActive, 4);
-
- if (m_isAcceleratedCompositingActive == active)
- return;
-
- if (!m_client)
- return;
-
- if (!active) {
- m_isAcceleratedCompositingActive = false;
- if (!m_layerTreeViewCommitsDeferred) {
- ASSERT(m_layerTreeView);
- // This means that we're transitioning to a new page. Suppress commits until WebKit generates invalidations so
- // we don't attempt to paint too early in the next page load.
- m_layerTreeView->setDeferCommits(true);
- m_layerTreeViewCommitsDeferred = true;
- }
- } else {
- TRACE_EVENT0("blink", "WebViewImpl::setIsAcceleratedCompositingActive(true)");
- m_layerTreeView->setRootLayer(*m_rootLayer);
-
- bool visible = page()->visibilityState() == PageVisibilityStateVisible;
- m_layerTreeView->setVisible(visible);
- updateLayerTreeDeviceScaleFactor();
- m_layerTreeView->setPageScaleFactorAndLimits(pageScaleFactor(), minimumPageScaleFactor(), maximumPageScaleFactor());
- updateLayerTreeBackgroundColor();
- m_layerTreeView->setHasTransparentBackground(isTransparent());
- updateLayerTreeViewport();
- m_isAcceleratedCompositingActive = true;
- if (m_pageOverlays)
- m_pageOverlays->update();
- // FIXME: allow emulation, fps counter and continuous painting at the same time: crbug.com/299837.
- m_layerTreeView->setShowFPSCounter(m_showFPSCounter && !m_devToolsEmulator->deviceEmulationEnabled());
- m_layerTreeView->setShowPaintRects(m_showPaintRects);
- m_layerTreeView->setShowDebugBorders(m_showDebugBorders);
- m_layerTreeView->setContinuousPaintingEnabled(m_continuousPaintingEnabled && !m_devToolsEmulator->deviceEmulationEnabled());
- m_layerTreeView->setShowScrollBottleneckRects(m_showScrollBottleneckRects);
- m_layerTreeView->heuristicsForGpuRasterizationUpdated(m_matchesHeuristicsForGpuRasterization);
- }
- if (page() && page()->mainFrame()->isLocalFrame())
- page()->deprecatedLocalMainFrame()->view()->setClipsRepaints(!m_isAcceleratedCompositingActive);
-}
-
void WebViewImpl::updateMainFrameScrollPosition(const DoublePoint& scrollPosition, bool programmaticScroll)
{
if (!page()->mainFrame()->isLocalFrame())
@@ -4431,11 +4379,10 @@ bool WebViewImpl::detectContentOnTouch(const GestureEventWithHitTestResults& tar
void WebViewImpl::setVisibilityState(WebPageVisibilityState visibilityState,
bool isInitialState) {
- if (!page())
- return;
-
ASSERT(visibilityState == WebPageVisibilityStateVisible || visibilityState == WebPageVisibilityStateHidden || visibilityState == WebPageVisibilityStatePrerender);
- m_page->setVisibilityState(static_cast<PageVisibilityState>(static_cast<int>(visibilityState)), isInitialState);
+
+ if (page())
+ m_page->setVisibilityState(static_cast<PageVisibilityState>(static_cast<int>(visibilityState)), isInitialState);
if (m_layerTreeView) {
bool visible = visibilityState == WebPageVisibilityStateVisible;
« no previous file with comments | « Source/web/WebViewImpl.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698