Title: [173066] trunk/Source/WebCore
Revision
173066
Author
akl...@apple.com
Date
2014-08-28 10:54:31 -0700 (Thu, 28 Aug 2014)

Log Message

ASSERTION FAILED: !m_renderView.document().inPageCache() in compositing/iframes/resources/page-cache-helper.html
<https://webkit.org/b/136329>

Cancel any pending compositing layer updates when moving a document
into the page cache.

Reviewed by Zalan Bujtas.

* dom/Document.cpp:
(WebCore::Document::documentWillSuspendForPageCache):
* rendering/RenderLayerCompositor.cpp:
(WebCore::RenderLayerCompositor::cancelCompositingLayerUpdate):
* rendering/RenderLayerCompositor.h:

Modified Paths

Diff

Modified: trunk/Source/WebCore/ChangeLog (173065 => 173066)


--- trunk/Source/WebCore/ChangeLog	2014-08-28 17:26:08 UTC (rev 173065)
+++ trunk/Source/WebCore/ChangeLog	2014-08-28 17:54:31 UTC (rev 173066)
@@ -1,3 +1,19 @@
+2014-08-28  Andreas Kling  <akl...@apple.com>
+
+        ASSERTION FAILED: !m_renderView.document().inPageCache() in compositing/iframes/resources/page-cache-helper.html
+        <https://webkit.org/b/136329>
+
+        Cancel any pending compositing layer updates when moving a document
+        into the page cache.
+
+        Reviewed by Zalan Bujtas.
+
+        * dom/Document.cpp:
+        (WebCore::Document::documentWillSuspendForPageCache):
+        * rendering/RenderLayerCompositor.cpp:
+        (WebCore::RenderLayerCompositor::cancelCompositingLayerUpdate):
+        * rendering/RenderLayerCompositor.h:
+
 2014-08-28  Mihnea Ovidenie  <mih...@adobe.com>
 
         [CSSRegions] Incorrect selection clearing on a document without regions

Modified: trunk/Source/WebCore/dom/Document.cpp (173065 => 173066)


--- trunk/Source/WebCore/dom/Document.cpp	2014-08-28 17:26:08 UTC (rev 173065)
+++ trunk/Source/WebCore/dom/Document.cpp	2014-08-28 17:54:31 UTC (rev 173066)
@@ -4139,6 +4139,11 @@
     // is dispatched, after the document is restored from the page cache.
     m_didDispatchViewportPropertiesChanged = false;
 #endif
+
+    if (RenderView* view = renderView()) {
+        if (view->usesCompositing())
+            view->compositor().cancelCompositingLayerUpdate();
+    }
 }
 
 void Document::documentDidResumeFromPageCache() 

Modified: trunk/Source/WebCore/rendering/RenderLayerCompositor.cpp (173065 => 173066)


--- trunk/Source/WebCore/rendering/RenderLayerCompositor.cpp	2014-08-28 17:26:08 UTC (rev 173065)
+++ trunk/Source/WebCore/rendering/RenderLayerCompositor.cpp	2014-08-28 17:54:31 UTC (rev 173066)
@@ -646,6 +646,11 @@
     return m_compositedLayerCount > (rootLayer.isComposited() ? 1 : 0);
 }
 
+void RenderLayerCompositor::cancelCompositingLayerUpdate()
+{
+    m_updateCompositingLayersTimer.stop();
+}
+
 void RenderLayerCompositor::updateCompositingLayers(CompositingUpdateType updateType, RenderLayer* updateRoot)
 {
     m_updateCompositingLayersTimer.stop();

Modified: trunk/Source/WebCore/rendering/RenderLayerCompositor.h (173065 => 173066)


--- trunk/Source/WebCore/rendering/RenderLayerCompositor.h	2014-08-28 17:26:08 UTC (rev 173065)
+++ trunk/Source/WebCore/rendering/RenderLayerCompositor.h	2014-08-28 17:54:31 UTC (rev 173066)
@@ -140,6 +140,8 @@
     // This is only used when state changes and we do not exepect a style update or layout to happen soon (e.g. when
     // we discover that an iframe is overlapped during painting).
     void scheduleCompositingLayerUpdate();
+    // This is used to cancel any pending update timers when the document goes into page cache.
+    void cancelCompositingLayerUpdate();
 
     // Update the compositing state of the given layer. Returns true if that state changed.
     enum CompositingChangeRepaint { CompositingChangeRepaintNow, CompositingChangeWillRepaintLater };
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to