Title: [242098] trunk/Source/WebKit
Revision
242098
Author
[email protected]
Date
2019-02-26 12:24:43 -0800 (Tue, 26 Feb 2019)

Log Message

[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):

Modified Paths

Diff

Modified: trunk/Source/WebKit/ChangeLog (242097 => 242098)


--- trunk/Source/WebKit/ChangeLog	2019-02-26 19:47:38 UTC (rev 242097)
+++ trunk/Source/WebKit/ChangeLog	2019-02-26 20:24:43 UTC (rev 242098)
@@ -1,3 +1,24 @@
+2019-02-26  Ryosuke Niwa  <[email protected]>
+
+        [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-26  Youenn Fablet  <[email protected]>
 
         Create WebPageProxy::m_userMediaPermissionRequestManager only when needed

Modified: trunk/Source/WebKit/WebProcess/WebPage/WebPage.cpp (242097 => 242098)


--- trunk/Source/WebKit/WebProcess/WebPage/WebPage.cpp	2019-02-26 19:47:38 UTC (rev 242097)
+++ trunk/Source/WebKit/WebProcess/WebPage/WebPage.cpp	2019-02-26 20:24:43 UTC (rev 242098)
@@ -2401,6 +2401,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();
 }
@@ -2407,6 +2409,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();
 }
@@ -3133,6 +3137,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: trunk/Source/WebKit/WebProcess/WebProcess.cpp (242097 => 242098)


--- trunk/Source/WebKit/WebProcess/WebProcess.cpp	2019-02-26 19:47:38 UTC (rev 242097)
+++ trunk/Source/WebKit/WebProcess/WebProcess.cpp	2019-02-26 20:24:43 UTC (rev 242098)
@@ -1521,6 +1521,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);
 }
@@ -1527,6 +1528,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
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to