Changeset 245048 in webkit
- Timestamp:
- May 7, 2019 6:28:26 PM (5 years ago)
- Location:
- trunk/Source/WebKit
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit/ChangeLog
r245046 r245048 1 2019-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 1 23 2019-05-07 Carlos Garcia Campos <cgarcia@igalia.com> 2 24 -
trunk/Source/WebKit/WebProcess/WebPage/WebPage.cpp
r245025 r245048 417 417 , m_layerVolatilityTimer(*this, &WebPage::layerVolatilityTimerFired) 418 418 , 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") 422 420 , m_userInterfaceLayoutDirection(parameters.userInterfaceLayoutDirection) 423 421 , m_overrideContentSecurityPolicy { parameters.overrideContentSecurityPolicy } … … 766 764 bool isActive = m_activityState.containsAny({ ActivityState::IsLoading, ActivityState::IsAudible, ActivityState::IsCapturingMedia, ActivityState::WindowIsActive }); 767 765 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(); 774 773 else 775 m_userActivityHysteresis.start();776 }777 778 void WebPage::updateUserActivity()779 {780 if (m_userActivityHysteresis.state() == PAL::HysteresisState::Started)781 774 m_userActivity.start(); 782 else783 m_userActivity.stop();784 775 } 785 776 … … 2663 2654 SetForScope<bool> userIsInteractingChange { m_userIsInteracting, true }; 2664 2655 2665 m_userActivity Hysteresis.impulse();2656 m_userActivity.impulse(); 2666 2657 2667 2658 bool shouldHandleEvent = true; … … 2711 2702 void WebPage::wheelEvent(const WebWheelEvent& wheelEvent) 2712 2703 { 2713 m_userActivity Hysteresis.impulse();2704 m_userActivity.impulse(); 2714 2705 2715 2706 CurrentEvent currentEvent(wheelEvent); … … 2734 2725 SetForScope<bool> userIsInteractingChange { m_userIsInteracting, true }; 2735 2726 2736 m_userActivity Hysteresis.impulse();2727 m_userActivity.impulse(); 2737 2728 2738 2729 PlatformKeyboardEvent::setCurrentModifierState(platform(keyboardEvent).modifiers()); … … 3520 3511 setSessionID(PAL::SessionID::defaultSessionID()); 3521 3512 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; 3525 3516 updateThrottleState(); 3526 3517 } -
trunk/Source/WebKit/WebProcess/WebPage/WebPage.h
r245025 r245048 1192 1192 1193 1193 void updateThrottleState(); 1194 void updateUserActivity();1195 1194 1196 1195 // IPC::MessageSender … … 1855 1854 OptionSet<WebCore::ActivityState::Flag> m_activityState; 1856 1855 1857 bool m_ processSuppressionEnabled;1856 bool m_isAppNapEnabled { true }; 1858 1857 UserActivity m_userActivity; 1859 PAL::HysteresisActivity m_userActivityHysteresis;1860 1858 1861 1859 uint64_t m_pendingNavigationID { 0 };
Note: See TracChangeset
for help on using the changeset viewer.