Changeset 207346 in webkit
- Timestamp:
- Oct 14, 2016 11:06:47 AM (7 years ago)
- Location:
- trunk/Source/WebKit2
- Files:
-
- 13 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit2/ChangeLog
r207330 r207346 1 2016-10-14 Gavin Barraclough <barraclough@apple.com> 2 3 Add API to restrict WebKit processes to background priority 4 https://bugs.webkit.org/show_bug.cgi?id=163363 5 6 Reviewed by Anders Carlson. 7 8 Add API on _WKProcessPoolConfiguration to flag a process pool as 'alwaysRunsAtBackgroundPriority'. 9 WebContent and Networking processes associated with that pool will only run a background priority, 10 when they otherwise would have run at foreground priority. 11 12 * UIProcess/API/APIProcessPoolConfiguration.h: 13 - Add m_alwaysRunsAtBackgroundPriority flag to pool configuration object. 14 * UIProcess/API/Cocoa/_WKProcessPoolConfiguration.h: 15 * UIProcess/API/Cocoa/_WKProcessPoolConfiguration.mm: 16 (-[_WKProcessPoolConfiguration alwaysRunsAtBackgroundPriority]): 17 (-[_WKProcessPoolConfiguration setAlwaysRunsAtBackgroundPriority:]): 18 - Expose new configuration property through API. 19 * UIProcess/Network/NetworkProcessProxy.cpp: 20 (WebKit::NetworkProcessProxy::alwaysRunsAtBackgroundPriority): 21 * UIProcess/Network/NetworkProcessProxy.h: 22 - Support ProcessThrottlerClient interface to check if alwaysRunsAtBackgroundPriority is set. 23 * UIProcess/ProcessThrottler.cpp: 24 (WebKit::ProcessThrottler::assertionState): 25 - When determining whether to take a foreground exception check alwaysRunsAtBackgroundPriority. 26 * UIProcess/ProcessThrottlerClient.h: 27 - Add interface to access alwaysRunsAtBackgroundPriority state of WebProcess of NetworkProcess. 28 * UIProcess/WebProcessPool.cpp: 29 (WebKit::WebProcessPool::WebProcessPool): 30 * UIProcess/WebProcessPool.h: 31 - Add m_alwaysRunsAtBackgroundPriority, set by configuration. 32 * UIProcess/WebProcessProxy.cpp: 33 (WebKit::WebProcessProxy::alwaysRunsAtBackgroundPriority): 34 * UIProcess/WebProcessProxy.h: 35 - Support ProcessThrottlerClient interface to check if alwaysRunsAtBackgroundPriority is set. 36 1 37 2016-10-14 Youenn Fablet <youenn@apple.com> 2 38 -
trunk/Source/WebKit2/UIProcess/API/APIProcessPoolConfiguration.cpp
r206604 r207346 114 114 copy->m_sourceApplicationBundleIdentifier = this->m_sourceApplicationBundleIdentifier; 115 115 copy->m_sourceApplicationSecondaryIdentifier = this->m_sourceApplicationSecondaryIdentifier; 116 copy->m_alwaysRunsAtBackgroundPriority = this->m_alwaysRunsAtBackgroundPriority; 116 117 #if PLATFORM(IOS) 117 118 copy->m_ctDataConnectionServiceType = this->m_ctDataConnectionServiceType; -
trunk/Source/WebKit2/UIProcess/API/APIProcessPoolConfiguration.h
r206604 r207346 109 109 void setSourceApplicationSecondaryIdentifier(const WTF::String& sourceApplicationSecondaryIdentifier) { m_sourceApplicationSecondaryIdentifier = sourceApplicationSecondaryIdentifier; } 110 110 111 bool alwaysRunsAtBackgroundPriority() const { return m_alwaysRunsAtBackgroundPriority; } 112 void setAlwaysRunsAtBackgroundPriority(bool alwaysRunsAtBackgroundPriority) { m_alwaysRunsAtBackgroundPriority = alwaysRunsAtBackgroundPriority; } 113 111 114 #if PLATFORM(IOS) 112 115 const WTF::String& ctDataConnectionServiceType() const { return m_ctDataConnectionServiceType; } … … 139 142 WTF::String m_sourceApplicationBundleIdentifier; 140 143 WTF::String m_sourceApplicationSecondaryIdentifier; 144 bool m_alwaysRunsAtBackgroundPriority { false }; 141 145 #if PLATFORM(IOS) 142 146 WTF::String m_ctDataConnectionServiceType; -
trunk/Source/WebKit2/UIProcess/API/Cocoa/_WKProcessPoolConfiguration.h
r206604 r207346 50 50 #if TARGET_OS_IPHONE 51 51 @property (nonatomic, nullable, copy) NSString *CTDataConnectionServiceType WK_API_AVAILABLE(ios(WK_IOS_TBA)); 52 @property (nonatomic) BOOL alwaysRunsAtBackgroundPriority WK_API_AVAILABLE(ios(WK_IOS_TBA)); 52 53 #endif 53 54 -
trunk/Source/WebKit2/UIProcess/API/Cocoa/_WKProcessPoolConfiguration.mm
r206604 r207346 182 182 _processPoolConfiguration->setCTDataConnectionServiceType(ctDataConnectionServiceType); 183 183 } 184 185 - (BOOL)alwaysRunsAtBackgroundPriority 186 { 187 return _processPoolConfiguration->alwaysRunsAtBackgroundPriority(); 188 } 189 190 - (void)setAlwaysRunsAtBackgroundPriority:(BOOL)alwaysRunsAtBackgroundPriority 191 { 192 _processPoolConfiguration->setAlwaysRunsAtBackgroundPriority(alwaysRunsAtBackgroundPriority); 193 } 184 194 #endif 185 195 -
trunk/Source/WebKit2/UIProcess/Network/NetworkProcessProxy.cpp
r205275 r207346 391 391 } 392 392 393 bool NetworkProcessProxy::alwaysRunsAtBackgroundPriority() 394 { 395 return m_processPool.alwaysRunsAtBackgroundPriority(); 396 } 397 393 398 void NetworkProcessProxy::processReadyToSuspend() 394 399 { -
trunk/Source/WebKit2/UIProcess/Network/NetworkProcessProxy.h
r205207 r207346 92 92 void sendCancelPrepareToSuspend() override; 93 93 void sendProcessDidResume() override; 94 bool alwaysRunsAtBackgroundPriority() override; 94 95 void didSetAssertionState(AssertionState) override; 95 96 -
trunk/Source/WebKit2/UIProcess/ProcessThrottler.cpp
r205275 r207346 48 48 49 49 if (m_foregroundCounter.value()) 50 return AssertionState::Foreground;50 return m_process.alwaysRunsAtBackgroundPriority() ? AssertionState::Background : AssertionState::Foreground; 51 51 if (m_backgroundCounter.value()) 52 52 return AssertionState::Background; -
trunk/Source/WebKit2/UIProcess/ProcessThrottlerClient.h
r184774 r207346 39 39 virtual void sendCancelPrepareToSuspend() = 0; 40 40 virtual void sendProcessDidResume() = 0; 41 41 virtual bool alwaysRunsAtBackgroundPriority() = 0; 42 42 virtual void didSetAssertionState(AssertionState) = 0; 43 43 }; -
trunk/Source/WebKit2/UIProcess/WebProcessPool.cpp
r207145 r207346 178 178 , m_didNetworkProcessCrash(false) 179 179 , m_memoryCacheDisabled(false) 180 , m_alwaysRunsAtBackgroundPriority(m_configuration->alwaysRunsAtBackgroundPriority()) 180 181 , m_userObservablePageCounter([this](RefCounterEvent) { updateProcessSuppressionState(); }) 181 182 , m_processSuppressionDisabledForPageCounter([this](RefCounterEvent) { updateProcessSuppressionState(); }) -
trunk/Source/WebKit2/UIProcess/WebProcessPool.h
r204668 r207346 367 367 void setResourceLoadStatisticsEnabled(bool enabled) { m_resourceLoadStatisticsEnabled = enabled; } 368 368 369 bool alwaysRunsAtBackgroundPriority() { return m_alwaysRunsAtBackgroundPriority; } 370 369 371 #if ENABLE(GAMEPAD) 370 372 void gamepadConnected(const UIGamepad&); … … 534 536 bool m_resourceLoadStatisticsEnabled { false }; 535 537 538 bool m_alwaysRunsAtBackgroundPriority; 539 536 540 UserObservablePageCounter m_userObservablePageCounter; 537 541 ProcessSuppressionDisabledCounter m_processSuppressionDisabledForPageCounter; -
trunk/Source/WebKit2/UIProcess/WebProcessProxy.cpp
r206789 r207346 928 928 } 929 929 930 bool WebProcessProxy::alwaysRunsAtBackgroundPriority() 931 { 932 return m_processPool->alwaysRunsAtBackgroundPriority(); 933 } 934 930 935 void WebProcessProxy::processReadyToSuspend() 931 936 { -
trunk/Source/WebKit2/UIProcess/WebProcessProxy.h
r206937 r207346 209 209 void sendCancelPrepareToSuspend() override; 210 210 void sendProcessDidResume() override; 211 bool alwaysRunsAtBackgroundPriority() override; 211 212 void didSetAssertionState(AssertionState) override; 212 213
Note: See TracChangeset
for help on using the changeset viewer.