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