Title: [242133] branches/safari-607-branch/Source/WebKit
Revision
242133
Author
bshaf...@apple.com
Date
2019-02-27 10:49:14 -0800 (Wed, 27 Feb 2019)

Log Message

Cherry-pick r242098. rdar://problem/48429674

    [iOS] REGRESSION(r238490?): Safari sometimes shows blank page until a cross site navigation or re-opening the tab
    https://bugs.webkit.org/show_bug.cgi?id=195037
    <rdar://problem/48154508>

    Reviewed by Antti Koivisto.

    Restore the pre-r238490 behavior of WebPage::didCompletePageTransition clearing LayerTreeFreezeReason::ProcessSuspended
    as this has been an issue when I was able to reproduce the issue locally.

    Also added release logging to help diagnose the issue in the future.

    * WebProcess/WebPage/WebPage.cpp:
    (WebKit::WebPage::freezeLayerTree):
    (WebKit::WebPage::unfreezeLayerTree):
    (WebKit::WebPage::didCompletePageTransition):
    * WebProcess/WebProcess.cpp:
    (WebKit::WebProcess::freezeAllLayerTrees):
    (WebKit::WebProcess::unfreezeAllLayerTrees):

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

Modified Paths

Diff

Modified: branches/safari-607-branch/Source/WebKit/ChangeLog (242132 => 242133)


--- branches/safari-607-branch/Source/WebKit/ChangeLog	2019-02-27 18:47:49 UTC (rev 242132)
+++ branches/safari-607-branch/Source/WebKit/ChangeLog	2019-02-27 18:49:14 UTC (rev 242133)
@@ -1,3 +1,50 @@
+2019-02-27  Babak Shafiei  <bshaf...@apple.com>
+
+        Cherry-pick r242098. rdar://problem/48429674
+
+    [iOS] REGRESSION(r238490?): Safari sometimes shows blank page until a cross site navigation or re-opening the tab
+    https://bugs.webkit.org/show_bug.cgi?id=195037
+    <rdar://problem/48154508>
+    
+    Reviewed by Antti Koivisto.
+    
+    Restore the pre-r238490 behavior of WebPage::didCompletePageTransition clearing LayerTreeFreezeReason::ProcessSuspended
+    as this has been an issue when I was able to reproduce the issue locally.
+    
+    Also added release logging to help diagnose the issue in the future.
+    
+    * WebProcess/WebPage/WebPage.cpp:
+    (WebKit::WebPage::freezeLayerTree):
+    (WebKit::WebPage::unfreezeLayerTree):
+    (WebKit::WebPage::didCompletePageTransition):
+    * WebProcess/WebProcess.cpp:
+    (WebKit::WebProcess::freezeAllLayerTrees):
+    (WebKit::WebProcess::unfreezeAllLayerTrees):
+    
+    
+    git-svn-id: https://svn.webkit.org/repository/webkit/trunk@242098 268f45cc-cd09-0410-ab3c-d52691b4dbfc
+
+    2019-02-26  Ryosuke Niwa  <rn...@webkit.org>
+
+            [iOS] REGRESSION(r238490?): Safari sometimes shows blank page until a cross site navigation or re-opening the tab
+            https://bugs.webkit.org/show_bug.cgi?id=195037
+            <rdar://problem/48154508>
+
+            Reviewed by Antti Koivisto.
+
+            Restore the pre-r238490 behavior of WebPage::didCompletePageTransition clearing LayerTreeFreezeReason::ProcessSuspended
+            as this has been an issue when I was able to reproduce the issue locally.
+
+            Also added release logging to help diagnose the issue in the future.
+
+            * WebProcess/WebPage/WebPage.cpp:
+            (WebKit::WebPage::freezeLayerTree):
+            (WebKit::WebPage::unfreezeLayerTree):
+            (WebKit::WebPage::didCompletePageTransition):
+            * WebProcess/WebProcess.cpp:
+            (WebKit::WebProcess::freezeAllLayerTrees):
+            (WebKit::WebProcess::unfreezeAllLayerTrees):
+
 2019-02-24  Babak Shafiei  <bshaf...@apple.com>
 
         Cherry-pick r241963. rdar://problem/48350367

Modified: branches/safari-607-branch/Source/WebKit/WebProcess/WebPage/WebPage.cpp (242132 => 242133)


--- branches/safari-607-branch/Source/WebKit/WebProcess/WebPage/WebPage.cpp	2019-02-27 18:47:49 UTC (rev 242132)
+++ branches/safari-607-branch/Source/WebKit/WebProcess/WebPage/WebPage.cpp	2019-02-27 18:49:14 UTC (rev 242133)
@@ -2387,6 +2387,8 @@
 
 void WebPage::freezeLayerTree(LayerTreeFreezeReason reason)
 {
+    RELEASE_LOG(ProcessSuspension, "%p - WebPage (PageID=%llu) - Adding a reason %d to freeze layer tree; current reasons are %d",
+        this, m_pageID, static_cast<unsigned>(reason), m_LayerTreeFreezeReasons.toRaw());
     m_LayerTreeFreezeReasons.add(reason);
     updateDrawingAreaLayerTreeFreezeState();
 }
@@ -2393,6 +2395,8 @@
 
 void WebPage::unfreezeLayerTree(LayerTreeFreezeReason reason)
 {
+    RELEASE_LOG(ProcessSuspension, "%p - WebPage (PageID=%llu) - Removing a reason %d to freeze layer tree; current reasons are %d",
+        this, m_pageID, static_cast<unsigned>(reason), m_LayerTreeFreezeReasons.toRaw());
     m_LayerTreeFreezeReasons.remove(reason);
     updateDrawingAreaLayerTreeFreezeState();
 }
@@ -3098,6 +3102,15 @@
 {
     unfreezeLayerTree(LayerTreeFreezeReason::PageTransition);
 
+    if (m_LayerTreeFreezeReasons.contains(LayerTreeFreezeReason::ProcessSuspended)) {
+        RELEASE_LOG_ERROR(ProcessSuspension, "%p - WebPage (PageID=%llu) - LayerTreeFreezeReason::ProcessSuspended was set when removing LayerTreeFreezeReason::PageTransition; current reasons are %d",
+            this, m_pageID, m_LayerTreeFreezeReasons.toRaw());
+    }
+
+    // FIXME: In iOS, we sometimes never unset ProcessSuspended. See <rdar://problem/48154508>.
+    unfreezeLayerTree(LayerTreeFreezeReason::ProcessSuspended);
+    RELEASE_LOG_IF_ALLOWED("%p - WebPage - Did complete page transition", this);
+
     bool isInitialEmptyDocument = !m_mainFrame;
     if (!isInitialEmptyDocument)
         unfreezeLayerTree(LayerTreeFreezeReason::ProcessSwap);

Modified: branches/safari-607-branch/Source/WebKit/WebProcess/WebProcess.cpp (242132 => 242133)


--- branches/safari-607-branch/Source/WebKit/WebProcess/WebProcess.cpp	2019-02-27 18:47:49 UTC (rev 242132)
+++ branches/safari-607-branch/Source/WebKit/WebProcess/WebProcess.cpp	2019-02-27 18:49:14 UTC (rev 242133)
@@ -1528,6 +1528,7 @@
 
 void WebProcess::freezeAllLayerTrees()
 {
+    RELEASE_LOG(ProcessSuspension, "WebProcess %i is freezing all layer trees", getpid());
     for (auto& page : m_pageMap.values())
         page->freezeLayerTree(WebPage::LayerTreeFreezeReason::ProcessSuspended);
 }
@@ -1534,6 +1535,7 @@
 
 void WebProcess::unfreezeAllLayerTrees()
 {
+    RELEASE_LOG(ProcessSuspension, "WebProcess %i is unfreezing all layer trees", getpid());
     for (auto& page : m_pageMap.values())
         page->unfreezeLayerTree(WebPage::LayerTreeFreezeReason::ProcessSuspended);
 }
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to