Changeset 245048 in webkit


Ignore:
Timestamp:
May 7, 2019 6:28:26 PM (5 years ago)
Author:
Chris Dumez
Message:

Simplify logic to prevent App Nap in WebPage
https://bugs.webkit.org/show_bug.cgi?id=197674

Reviewed by Geoff Garen.

Simplify logic to prevent App Nap in WebPage. We do not need both m_userActivityHysteresis and
m_userActivity since UserActivity is already a HysteresisActivity. We had 2 levels of
HysteresisActivity stacked on top of one another. Also rename "process suppression" to "app nap" as
I find it clearer.

  • WebProcess/WebPage/WebPage.cpp:

(WebKit::WebPage::updateThrottleState):
(WebKit::WebPage::mouseEvent):
(WebKit::WebPage::wheelEvent):
(WebKit::WebPage::keyEvent):
(WebKit::WebPage::updatePreferences):
(WebKit::m_userActivityHysteresis): Deleted.
(WebKit::WebPage::updateUserActivity): Deleted.

  • WebProcess/WebPage/WebPage.h:
Location:
trunk/Source/WebKit
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit/ChangeLog

    r245046 r245048  
     12019-05-07  Chris Dumez  <cdumez@apple.com>
     2
     3        Simplify logic to prevent App Nap in WebPage
     4        https://bugs.webkit.org/show_bug.cgi?id=197674
     5
     6        Reviewed by Geoff Garen.
     7
     8        Simplify logic to prevent App Nap in WebPage. We do not need both m_userActivityHysteresis and
     9        m_userActivity since UserActivity is already a HysteresisActivity. We had 2 levels of
     10        HysteresisActivity stacked on top of one another. Also rename "process suppression" to "app nap" as
     11        I find it clearer.
     12
     13        * WebProcess/WebPage/WebPage.cpp:
     14        (WebKit::WebPage::updateThrottleState):
     15        (WebKit::WebPage::mouseEvent):
     16        (WebKit::WebPage::wheelEvent):
     17        (WebKit::WebPage::keyEvent):
     18        (WebKit::WebPage::updatePreferences):
     19        (WebKit::m_userActivityHysteresis): Deleted.
     20        (WebKit::WebPage::updateUserActivity): Deleted.
     21        * WebProcess/WebPage/WebPage.h:
     22
    1232019-05-07  Carlos Garcia Campos  <cgarcia@igalia.com>
    224
  • trunk/Source/WebKit/WebProcess/WebPage/WebPage.cpp

    r245025 r245048  
    417417    , m_layerVolatilityTimer(*this, &WebPage::layerVolatilityTimerFired)
    418418    , m_activityState(parameters.activityState)
    419     , m_processSuppressionEnabled(true)
    420     , m_userActivity("Process suppression disabled for page.")
    421     , m_userActivityHysteresis([this](PAL::HysteresisState) { updateUserActivity(); })
     419    , m_userActivity("App nap disabled for page due to user activity")
    422420    , m_userInterfaceLayoutDirection(parameters.userInterfaceLayoutDirection)
    423421    , m_overrideContentSecurityPolicy { parameters.overrideContentSecurityPolicy }
     
    766764    bool isActive = m_activityState.containsAny({ ActivityState::IsLoading, ActivityState::IsAudible, ActivityState::IsCapturingMedia, ActivityState::WindowIsActive });
    767765    bool isVisuallyIdle = m_activityState.contains(ActivityState::IsVisuallyIdle);
    768     bool pageSuppressed = m_processSuppressionEnabled && !isActive && isVisuallyIdle;
    769 
    770     // The UserActivity keeps the processes runnable. So if the page should be suppressed, stop the activity.
    771     // If the page should not be supressed, start it.
    772     if (pageSuppressed)
    773         m_userActivityHysteresis.stop();
     766
     767    bool shouldAllowAppNap = m_isAppNapEnabled && !isActive && isVisuallyIdle;
     768
     769    // The UserActivity prevents App Nap. So if we want to allow App Nap of the page, stop the activity.
     770    // If the page should not be app nap'd, start it.
     771    if (shouldAllowAppNap)
     772        m_userActivity.stop();
    774773    else
    775         m_userActivityHysteresis.start();
    776 }
    777 
    778 void WebPage::updateUserActivity()
    779 {
    780     if (m_userActivityHysteresis.state() == PAL::HysteresisState::Started)
    781774        m_userActivity.start();
    782     else
    783         m_userActivity.stop();
    784775}
    785776
     
    26632654    SetForScope<bool> userIsInteractingChange { m_userIsInteracting, true };
    26642655
    2665     m_userActivityHysteresis.impulse();
     2656    m_userActivity.impulse();
    26662657
    26672658    bool shouldHandleEvent = true;
     
    27112702void WebPage::wheelEvent(const WebWheelEvent& wheelEvent)
    27122703{
    2713     m_userActivityHysteresis.impulse();
     2704    m_userActivity.impulse();
    27142705
    27152706    CurrentEvent currentEvent(wheelEvent);
     
    27342725    SetForScope<bool> userIsInteractingChange { m_userIsInteracting, true };
    27352726
    2736     m_userActivityHysteresis.impulse();
     2727    m_userActivity.impulse();
    27372728
    27382729    PlatformKeyboardEvent::setCurrentModifierState(platform(keyboardEvent).modifiers());
     
    35203511        setSessionID(PAL::SessionID::defaultSessionID());
    35213512
    3522     bool processSuppressionEnabled = store.getBoolValueForKey(WebPreferencesKey::pageVisibilityBasedProcessSuppressionEnabledKey());
    3523     if (m_processSuppressionEnabled != processSuppressionEnabled) {
    3524         m_processSuppressionEnabled = processSuppressionEnabled;
     3513    bool isAppNapEnabled = store.getBoolValueForKey(WebPreferencesKey::pageVisibilityBasedProcessSuppressionEnabledKey());
     3514    if (m_isAppNapEnabled != isAppNapEnabled) {
     3515        m_isAppNapEnabled = isAppNapEnabled;
    35253516        updateThrottleState();
    35263517    }
  • trunk/Source/WebKit/WebProcess/WebPage/WebPage.h

    r245025 r245048  
    11921192
    11931193    void updateThrottleState();
    1194     void updateUserActivity();
    11951194
    11961195    // IPC::MessageSender
     
    18551854    OptionSet<WebCore::ActivityState::Flag> m_activityState;
    18561855
    1857     bool m_processSuppressionEnabled;
     1856    bool m_isAppNapEnabled { true };
    18581857    UserActivity m_userActivity;
    1859     PAL::HysteresisActivity m_userActivityHysteresis;
    18601858
    18611859    uint64_t m_pendingNavigationID { 0 };
Note: See TracChangeset for help on using the changeset viewer.