Title: [239437] trunk/Source/WebKit
Revision
239437
Author
[email protected]
Date
2018-12-20 01:12:27 -0800 (Thu, 20 Dec 2018)

Log Message

[PSON] SuspendedPageProxy fails to release its process assertion if the WebPage fails to enter PageCache
https://bugs.webkit.org/show_bug.cgi?id=192873

Reviewed by Antti Koivisto.

SuspendedPageProxy fails to release its process assertion if the WebPage fails to enter PageCache, preventing
the process from suspending on iOS.

* UIProcess/SuspendedPageProxy.cpp:
(WebKit::SuspendedPageProxy::didProcessRequestToSuspend):
(WebKit::SuspendedPageProxy::didReceiveMessage):
(WebKit::SuspendedPageProxy::didSuspend): Deleted.
(WebKit::SuspendedPageProxy::didFailToSuspend): Deleted.
* UIProcess/SuspendedPageProxy.h:

Modified Paths

Diff

Modified: trunk/Source/WebKit/ChangeLog (239436 => 239437)


--- trunk/Source/WebKit/ChangeLog	2018-12-20 08:45:22 UTC (rev 239436)
+++ trunk/Source/WebKit/ChangeLog	2018-12-20 09:12:27 UTC (rev 239437)
@@ -1,3 +1,20 @@
+2018-12-20  Chris Dumez  <[email protected]>
+
+        [PSON] SuspendedPageProxy fails to release its process assertion if the WebPage fails to enter PageCache
+        https://bugs.webkit.org/show_bug.cgi?id=192873
+
+        Reviewed by Antti Koivisto.
+
+        SuspendedPageProxy fails to release its process assertion if the WebPage fails to enter PageCache, preventing
+        the process from suspending on iOS.
+
+        * UIProcess/SuspendedPageProxy.cpp:
+        (WebKit::SuspendedPageProxy::didProcessRequestToSuspend):
+        (WebKit::SuspendedPageProxy::didReceiveMessage):
+        (WebKit::SuspendedPageProxy::didSuspend): Deleted.
+        (WebKit::SuspendedPageProxy::didFailToSuspend): Deleted.
+        * UIProcess/SuspendedPageProxy.h:
+
 2018-12-19  Chris Dumez  <[email protected]>
 
         wtf/Optional.h: move-constructor and move-assignment operator should disengage the value being moved from

Modified: trunk/Source/WebKit/UIProcess/SuspendedPageProxy.cpp (239436 => 239437)


--- trunk/Source/WebKit/UIProcess/SuspendedPageProxy.cpp	2018-12-20 08:45:22 UTC (rev 239436)
+++ trunk/Source/WebKit/UIProcess/SuspendedPageProxy.cpp	2018-12-20 09:12:27 UTC (rev 239437)
@@ -138,13 +138,15 @@
     m_process->send(Messages::WebPage::SetIsSuspended(false), m_page.pageID());
 }
 
-void SuspendedPageProxy::didSuspend()
+void SuspendedPageProxy::didProcessRequestToSuspend(SuspensionState newSuspensionState)
 {
     LOG(ProcessSwapping, "SuspendedPageProxy %s from process %i finished transition to suspended", loggingString(), m_process->processIdentifier());
 
     ASSERT(m_suspensionState == SuspensionState::Suspending);
-    m_suspensionState = SuspensionState::Suspended;
+    ASSERT(newSuspensionState == SuspensionState::Suspended || newSuspensionState == SuspensionState::FailedToSuspend);
 
+    m_suspensionState = newSuspensionState;
+
 #if PLATFORM(IOS_FAMILY)
     m_suspensionToken = nullptr;
 #endif
@@ -153,26 +155,17 @@
         m_readyToUnsuspendHandler(this);
 }
 
-void SuspendedPageProxy::didFailToSuspend()
-{
-    ASSERT(m_suspensionState == SuspensionState::Suspending);
-    m_suspensionState = SuspensionState::FailedToSuspend;
-
-    if (m_readyToUnsuspendHandler)
-        m_readyToUnsuspendHandler(this);
-}
-
 void SuspendedPageProxy::didReceiveMessage(IPC::Connection&, IPC::Decoder& decoder)
 {
     ASSERT(decoder.messageReceiverName() == Messages::WebPageProxy::messageReceiverName());
 
     if (decoder.messageName() == Messages::WebPageProxy::DidSuspendAfterProcessSwap::name()) {
-        didSuspend();
+        didProcessRequestToSuspend(SuspensionState::Suspended);
         return;
     }
 
     if (decoder.messageName() == Messages::WebPageProxy::DidFailToSuspendAfterProcessSwap::name()) {
-        didFailToSuspend();
+        didProcessRequestToSuspend(SuspensionState::FailedToSuspend);
         return;
     }
 

Modified: trunk/Source/WebKit/UIProcess/SuspendedPageProxy.h (239436 => 239437)


--- trunk/Source/WebKit/UIProcess/SuspendedPageProxy.h	2018-12-20 08:45:22 UTC (rev 239436)
+++ trunk/Source/WebKit/UIProcess/SuspendedPageProxy.h	2018-12-20 09:12:27 UTC (rev 239437)
@@ -57,8 +57,8 @@
 #endif
 
 private:
-    void didSuspend();
-    void didFailToSuspend();
+    enum class SuspensionState : uint8_t { Suspending, FailedToSuspend, Suspended, Resumed };
+    void didProcessRequestToSuspend(SuspensionState);
 
     // IPC::MessageReceiver
     void didReceiveMessage(IPC::Connection&, IPC::Decoder&) final;
@@ -69,7 +69,6 @@
     uint64_t m_mainFrameID;
     String m_registrableDomain;
 
-    enum class SuspensionState : uint8_t { Suspending, FailedToSuspend, Suspended, Resumed };
     SuspensionState m_suspensionState { SuspensionState::Suspending };
     CompletionHandler<void(SuspendedPageProxy*)> m_readyToUnsuspendHandler;
 #if PLATFORM(IOS_FAMILY)
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to