REGRESSION(r237467) [PSON] iOS: Going back to a page sometimes doesn't restore the...
authorantti@apple.com <antti@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 16 Nov 2018 17:51:10 +0000 (17:51 +0000)
committerantti@apple.com <antti@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 16 Nov 2018 17:51:10 +0000 (17:51 +0000)
https://bugs.webkit.org/show_bug.cgi?id=191737

Reviewed by Simon Fraser.

* WebProcess/WebPage/WebPage.cpp:
(WebKit::WebPage::setLayerTreeStateIsFrozen):

Layer tree should stay frozen in m_shouldResetDrawingArea state. Otherwise spurious commit transactions may
mess up state on UI process side.

Specifically WKWebView._needsResetViewStateAfterCommitLoadForMainFrame would get stuck to TRUE and prevent
all viewport updates because WKWebView._firstPaintAfterCommitLoadTransactionID has value greater
than any current transaction IDs.

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

Source/WebKit/ChangeLog
Source/WebKit/WebProcess/WebPage/WebPage.cpp

index f278b6d..1146467 100644 (file)
@@ -1,3 +1,20 @@
+2018-11-16  Antti Koivisto  <antti@apple.com>
+
+        REGRESSION(r237467) [PSON] iOS: Going back to a page sometimes doesn't restore the full page
+        https://bugs.webkit.org/show_bug.cgi?id=191737
+
+        Reviewed by Simon Fraser.
+
+        * WebProcess/WebPage/WebPage.cpp:
+        (WebKit::WebPage::setLayerTreeStateIsFrozen):
+
+        Layer tree should stay frozen in m_shouldResetDrawingArea state. Otherwise spurious commit transactions may
+        mess up state on UI process side.
+
+        Specifically WKWebView._needsResetViewStateAfterCommitLoadForMainFrame would get stuck to TRUE and prevent
+        all viewport updates because WKWebView._firstPaintAfterCommitLoadTransactionID has value greater
+        than any current transaction IDs.
+
 2018-11-16  Chris Dumez  <cdumez@apple.com>
 
         Unreviewed typo fix in comment added in r238250.
index 332e825..0e38466 100644 (file)
@@ -2333,7 +2333,7 @@ void WebPage::setLayerTreeStateIsFrozen(bool frozen)
     if (!drawingArea)
         return;
 
-    drawingArea->setLayerTreeStateIsFrozen(frozen || m_isSuspended);
+    drawingArea->setLayerTreeStateIsFrozen(frozen || m_isSuspended || m_shouldResetDrawingArea);
 }
 
 void WebPage::callVolatilityCompletionHandlers(bool succeeded)