Changeset 239437 in webkit


Ignore:
Timestamp:
Dec 20, 2018 1:12:27 AM (5 years ago)
Author:
Chris Dumez
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:
Location:
trunk/Source/WebKit
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit/ChangeLog

    r239427 r239437  
     12018-12-20  Chris Dumez  <cdumez@apple.com>
     2
     3        [PSON] SuspendedPageProxy fails to release its process assertion if the WebPage fails to enter PageCache
     4        https://bugs.webkit.org/show_bug.cgi?id=192873
     5
     6        Reviewed by Antti Koivisto.
     7
     8        SuspendedPageProxy fails to release its process assertion if the WebPage fails to enter PageCache, preventing
     9        the process from suspending on iOS.
     10
     11        * UIProcess/SuspendedPageProxy.cpp:
     12        (WebKit::SuspendedPageProxy::didProcessRequestToSuspend):
     13        (WebKit::SuspendedPageProxy::didReceiveMessage):
     14        (WebKit::SuspendedPageProxy::didSuspend): Deleted.
     15        (WebKit::SuspendedPageProxy::didFailToSuspend): Deleted.
     16        * UIProcess/SuspendedPageProxy.h:
     17
    1182018-12-19  Chris Dumez  <cdumez@apple.com>
    219
  • trunk/Source/WebKit/UIProcess/SuspendedPageProxy.cpp

    r239333 r239437  
    139139}
    140140
    141 void SuspendedPageProxy::didSuspend()
     141void SuspendedPageProxy::didProcessRequestToSuspend(SuspensionState newSuspensionState)
    142142{
    143143    LOG(ProcessSwapping, "SuspendedPageProxy %s from process %i finished transition to suspended", loggingString(), m_process->processIdentifier());
    144144
    145145    ASSERT(m_suspensionState == SuspensionState::Suspending);
    146     m_suspensionState = SuspensionState::Suspended;
     146    ASSERT(newSuspensionState == SuspensionState::Suspended || newSuspensionState == SuspensionState::FailedToSuspend);
     147
     148    m_suspensionState = newSuspensionState;
    147149
    148150#if PLATFORM(IOS_FAMILY)
    149151    m_suspensionToken = nullptr;
    150152#endif
    151 
    152     if (m_readyToUnsuspendHandler)
    153         m_readyToUnsuspendHandler(this);
    154 }
    155 
    156 void SuspendedPageProxy::didFailToSuspend()
    157 {
    158     ASSERT(m_suspensionState == SuspensionState::Suspending);
    159     m_suspensionState = SuspensionState::FailedToSuspend;
    160153
    161154    if (m_readyToUnsuspendHandler)
     
    168161
    169162    if (decoder.messageName() == Messages::WebPageProxy::DidSuspendAfterProcessSwap::name()) {
    170         didSuspend();
     163        didProcessRequestToSuspend(SuspensionState::Suspended);
    171164        return;
    172165    }
    173166
    174167    if (decoder.messageName() == Messages::WebPageProxy::DidFailToSuspendAfterProcessSwap::name()) {
    175         didFailToSuspend();
     168        didProcessRequestToSuspend(SuspensionState::FailedToSuspend);
    176169        return;
    177170    }
  • trunk/Source/WebKit/UIProcess/SuspendedPageProxy.h

    r239333 r239437  
    5858
    5959private:
    60     void didSuspend();
    61     void didFailToSuspend();
     60    enum class SuspensionState : uint8_t { Suspending, FailedToSuspend, Suspended, Resumed };
     61    void didProcessRequestToSuspend(SuspensionState);
    6262
    6363    // IPC::MessageReceiver
     
    7070    String m_registrableDomain;
    7171
    72     enum class SuspensionState : uint8_t { Suspending, FailedToSuspend, Suspended, Resumed };
    7372    SuspensionState m_suspensionState { SuspensionState::Suspending };
    7473    CompletionHandler<void(SuspendedPageProxy*)> m_readyToUnsuspendHandler;
Note: See TracChangeset for help on using the changeset viewer.