Unreviewed, rolling out r210206.
authorcommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 30 Dec 2016 14:00:07 +0000 (14:00 +0000)
committercommit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 30 Dec 2016 14:00:07 +0000 (14:00 +0000)
https://bugs.webkit.org/show_bug.cgi?id=166621

Crashes on macOS PLT (Requested by kling on #webkit).

Reverted changeset:

"Drop the render tree for documents in the page cache."
https://bugs.webkit.org/show_bug.cgi?id=121798
http://trac.webkit.org/changeset/210206

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@210212 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/WebCore/ChangeLog
Source/WebCore/dom/Document.cpp
Source/WebCore/history/CachedFrame.cpp
Source/WebCore/page/FrameView.cpp
Source/WebCore/page/FrameView.h
Source/WebCore/page/animation/AnimationBase.cpp

index 2ab5532..bfe59f5 100644 (file)
@@ -1,3 +1,16 @@
+2016-12-30  Commit Queue  <commit-queue@webkit.org>
+
+        Unreviewed, rolling out r210206.
+        https://bugs.webkit.org/show_bug.cgi?id=166621
+
+        Crashes on macOS PLT (Requested by kling on #webkit).
+
+        Reverted changeset:
+
+        "Drop the render tree for documents in the page cache."
+        https://bugs.webkit.org/show_bug.cgi?id=121798
+        http://trac.webkit.org/changeset/210206
+
 2016-12-28  Sergio Villar Senin  <svillar@igalia.com>
 
         [css-grid] Isolate instrinsic size computation from layout
index 0fe2d7f..7f14cad 100644 (file)
@@ -2221,6 +2221,7 @@ void Document::frameDestroyed()
 void Document::destroyRenderTree()
 {
     ASSERT(hasLivingRenderTree());
+    ASSERT(m_pageCacheState != InPageCache);
 
     SetForScope<bool> change(m_renderTreeBeingDestroyed, true);
 
@@ -4523,13 +4524,6 @@ void Document::setPageCacheState(PageCacheState state)
     if (m_pageCacheState == state)
         return;
 
-    if (state == InPageCache) {
-        // When entering page cache, tear down the render tree before setting the in-cache flag.
-        // This maintains the invariant that render trees are never present in the page cache.
-        if (hasLivingRenderTree())
-            destroyRenderTree();
-    }
-
     m_pageCacheState = state;
 
     FrameView* v = view();
index f2c90f4..2946003 100644 (file)
@@ -130,7 +130,6 @@ void CachedFrameBase::restore()
         m_document->page()->chrome().client().needTouchEvents(true);
 #endif
 
-    frame.view()->didRestoreFromPageCache();
 }
 
 CachedFrame::CachedFrame(Frame& frame)
index 77075fd..9605cf0 100644 (file)
@@ -636,13 +636,6 @@ Ref<Scrollbar> FrameView::createScrollbar(ScrollbarOrientation orientation)
     return ScrollView::createScrollbar(orientation);
 }
 
-void FrameView::didRestoreFromPageCache()
-{
-    // When restoring from page cache, the main frame stays in place while subframes get swapped in.
-    // We update the scrollable area set to ensure that scrolling data structures get invalidated.
-    updateScrollableAreaSet();
-}
-
 void FrameView::setContentsSize(const IntSize& size)
 {
     if (size == contentsSize())
index 23a7fd1..81806ee 100644 (file)
@@ -587,8 +587,6 @@ public:
 
     bool shouldPlaceBlockDirectionScrollbarOnLeft() const final;
 
-    void didRestoreFromPageCache();
-
 protected:
     bool scrollContentsFastPath(const IntSize& scrollDelta, const IntRect& rectToScroll, const IntRect& clipRect) override;
     void scrollContentsSlowPath(const IntRect& updateRect) override;
index 1c47e3d..6eabc34 100644 (file)
@@ -89,11 +89,9 @@ AnimationBase::AnimationBase(const Animation& animation, RenderElement* renderer
 
 void AnimationBase::setNeedsStyleRecalc(Element* element)
 {
-    if (!element || element->document().renderTreeBeingDestroyed())
-        return;
-
-    ASSERT(element->document().pageCacheState() == Document::NotInPageCache);
-    element->invalidateStyleAndLayerComposition();
+    ASSERT(!element || element->document().pageCacheState() == Document::NotInPageCache);
+    if (element)
+        element->invalidateStyleAndLayerComposition();
 }
 
 double AnimationBase::duration() const