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