Changeset 255662 in webkit
- Timestamp:
- Feb 3, 2020 9:46:57 PM (4 years ago)
- Location:
- trunk/Source/WebKit
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/WebKit/ChangeLog
r255660 r255662 1 2020-02-03 Chris Dumez <cdumez@apple.com> 2 3 Stop relying on ResponsivenessTimer to keep the WebProcess from suspending during initialization 4 https://bugs.webkit.org/show_bug.cgi?id=207144 5 6 Reviewed by Brady Eidson. 7 8 Stop relying on ResponsivenessTimer to keep the WebProcess from suspending during initialization. Instead, make the 9 WebProcess::InitializeWebProcess IPC async with a reply and take a process assertion on behalf of the WebContent 10 process until we get a response back. 11 12 This avoids sending an extra WebProcess::MainThreadPing IPC to the WebProcess for no reason (since we're already 13 sending the WebProcess::InitializeWebProcess IPC) and this is also more reliable since the ResponsivenessTimer can 14 actually time out and cause the process to get suspended during initialization still. 15 16 * UIProcess/WebProcessPool.cpp: 17 (WebKit::WebProcessPool::initializeNewWebProcess): 18 * WebProcess/WebProcess.cpp: 19 (WebKit::WebProcess::initializeWebProcess): 20 * WebProcess/WebProcess.h: 21 * WebProcess/WebProcess.messages.in: 22 1 23 2020-02-03 Jiewen Tan <jiewen_tan@apple.com> 2 24 -
trunk/Source/WebKit/UIProcess/WebProcessPool.cpp
r254706 r255662 964 964 { 965 965 auto initializationActivity = process.throttler().backgroundActivity("WebProcess initialization"_s); 966 auto scopeExit = makeScopeExit([&process, initializationActivity = WTFMove(initializationActivity)]() mutable {967 // Round-trip to the Web Content process before releasing the968 // initialization activity, so that we're sure that all969 // messages sent from this function have been handled.970 process.isResponsive([initializationActivity = WTFMove(initializationActivity)] (bool) { });971 });972 966 973 967 ensureNetworkProcess(); … … 1054 1048 parameters.websiteDataStoreParameters = webProcessDataStoreParameters(process, *websiteDataStore); 1055 1049 1056 process.send (Messages::WebProcess::InitializeWebProcess(parameters), 0);1050 process.sendWithAsyncReply(Messages::WebProcess::InitializeWebProcess(parameters), [initializationActivity = WTFMove(initializationActivity)] { }); 1057 1051 1058 1052 #if PLATFORM(COCOA) -
trunk/Source/WebKit/WebProcess/WebProcess.cpp
r255577 r255662 294 294 } 295 295 296 void WebProcess::initializeWebProcess(WebProcessCreationParameters&& parameters )296 void WebProcess::initializeWebProcess(WebProcessCreationParameters&& parameters, CompletionHandler<void()>&& completionHandler) 297 297 { 298 298 TraceScope traceScope(InitializeWebProcessStart, InitializeWebProcessEnd); … … 459 459 460 460 RELEASE_LOG_IF_ALLOWED(Process, "initializeWebProcess: Presenting process = %d", WebCore::presentingApplicationPID()); 461 completionHandler(); 461 462 } 462 463 -
trunk/Source/WebKit/WebProcess/WebProcess.h
r255189 r255662 328 328 ~WebProcess(); 329 329 330 void initializeWebProcess(WebProcessCreationParameters&& );330 void initializeWebProcess(WebProcessCreationParameters&&, CompletionHandler<void()>&&); 331 331 void platformInitializeWebProcess(WebProcessCreationParameters&); 332 332 void setWebsiteDataStoreParameters(WebProcessDataStoreParameters&&); -
trunk/Source/WebKit/WebProcess/WebProcess.messages.in
r255038 r255662 22 22 23 23 messages -> WebProcess LegacyReceiver NotRefCounted { 24 InitializeWebProcess(struct WebKit::WebProcessCreationParameters processCreationParameters) 24 InitializeWebProcess(struct WebKit::WebProcessCreationParameters processCreationParameters) -> () Async 25 25 SetWebsiteDataStoreParameters(struct WebKit::WebProcessDataStoreParameters parameters) 26 26
Note: See TracChangeset
for help on using the changeset viewer.