Title: [255662] trunk/Source/WebKit
- Revision
- 255662
- Author
- cdu...@apple.com
- Date
- 2020-02-03 21:46:57 -0800 (Mon, 03 Feb 2020)
Log Message
Stop relying on ResponsivenessTimer to keep the WebProcess from suspending during initialization
https://bugs.webkit.org/show_bug.cgi?id=207144
Reviewed by Brady Eidson.
Stop relying on ResponsivenessTimer to keep the WebProcess from suspending during initialization. Instead, make the
WebProcess::InitializeWebProcess IPC async with a reply and take a process assertion on behalf of the WebContent
process until we get a response back.
This avoids sending an extra WebProcess::MainThreadPing IPC to the WebProcess for no reason (since we're already
sending the WebProcess::InitializeWebProcess IPC) and this is also more reliable since the ResponsivenessTimer can
actually time out and cause the process to get suspended during initialization still.
* UIProcess/WebProcessPool.cpp:
(WebKit::WebProcessPool::initializeNewWebProcess):
* WebProcess/WebProcess.cpp:
(WebKit::WebProcess::initializeWebProcess):
* WebProcess/WebProcess.h:
* WebProcess/WebProcess.messages.in:
Modified Paths
Diff
Modified: trunk/Source/WebKit/ChangeLog (255661 => 255662)
--- trunk/Source/WebKit/ChangeLog 2020-02-04 05:37:30 UTC (rev 255661)
+++ trunk/Source/WebKit/ChangeLog 2020-02-04 05:46:57 UTC (rev 255662)
@@ -1,3 +1,25 @@
+2020-02-03 Chris Dumez <cdu...@apple.com>
+
+ Stop relying on ResponsivenessTimer to keep the WebProcess from suspending during initialization
+ https://bugs.webkit.org/show_bug.cgi?id=207144
+
+ Reviewed by Brady Eidson.
+
+ Stop relying on ResponsivenessTimer to keep the WebProcess from suspending during initialization. Instead, make the
+ WebProcess::InitializeWebProcess IPC async with a reply and take a process assertion on behalf of the WebContent
+ process until we get a response back.
+
+ This avoids sending an extra WebProcess::MainThreadPing IPC to the WebProcess for no reason (since we're already
+ sending the WebProcess::InitializeWebProcess IPC) and this is also more reliable since the ResponsivenessTimer can
+ actually time out and cause the process to get suspended during initialization still.
+
+ * UIProcess/WebProcessPool.cpp:
+ (WebKit::WebProcessPool::initializeNewWebProcess):
+ * WebProcess/WebProcess.cpp:
+ (WebKit::WebProcess::initializeWebProcess):
+ * WebProcess/WebProcess.h:
+ * WebProcess/WebProcess.messages.in:
+
2020-02-03 Jiewen Tan <jiewen_...@apple.com>
Pass a hint from the extension to decidePolicyForSOAuthorizationLoadWithCurrentPolicy
Modified: trunk/Source/WebKit/UIProcess/WebProcessPool.cpp (255661 => 255662)
--- trunk/Source/WebKit/UIProcess/WebProcessPool.cpp 2020-02-04 05:37:30 UTC (rev 255661)
+++ trunk/Source/WebKit/UIProcess/WebProcessPool.cpp 2020-02-04 05:46:57 UTC (rev 255662)
@@ -963,12 +963,6 @@
void WebProcessPool::initializeNewWebProcess(WebProcessProxy& process, WebsiteDataStore* websiteDataStore, WebProcessProxy::IsPrewarmed isPrewarmed)
{
auto initializationActivity = process.throttler().backgroundActivity("WebProcess initialization"_s);
- auto scopeExit = makeScopeExit([&process, initializationActivity = WTFMove(initializationActivity)]() mutable {
- // Round-trip to the Web Content process before releasing the
- // initialization activity, so that we're sure that all
- // messages sent from this function have been handled.
- process.isResponsive([initializationActivity = WTFMove(initializationActivity)] (bool) { });
- });
ensureNetworkProcess();
@@ -1053,7 +1047,7 @@
if (websiteDataStore)
parameters.websiteDataStoreParameters = webProcessDataStoreParameters(process, *websiteDataStore);
- process.send(Messages::WebProcess::InitializeWebProcess(parameters), 0);
+ process.sendWithAsyncReply(Messages::WebProcess::InitializeWebProcess(parameters), [initializationActivity = WTFMove(initializationActivity)] { });
#if PLATFORM(COCOA)
process.send(Messages::WebProcess::SetQOS(webProcessLatencyQOS(), webProcessThroughputQOS()), 0);
Modified: trunk/Source/WebKit/WebProcess/WebProcess.cpp (255661 => 255662)
--- trunk/Source/WebKit/WebProcess/WebProcess.cpp 2020-02-04 05:37:30 UTC (rev 255661)
+++ trunk/Source/WebKit/WebProcess/WebProcess.cpp 2020-02-04 05:46:57 UTC (rev 255662)
@@ -293,7 +293,7 @@
#endif
}
-void WebProcess::initializeWebProcess(WebProcessCreationParameters&& parameters)
+void WebProcess::initializeWebProcess(WebProcessCreationParameters&& parameters, CompletionHandler<void()>&& completionHandler)
{
TraceScope traceScope(InitializeWebProcessStart, InitializeWebProcessEnd);
@@ -458,6 +458,7 @@
#endif
RELEASE_LOG_IF_ALLOWED(Process, "initializeWebProcess: Presenting process = %d", WebCore::presentingApplicationPID());
+ completionHandler();
}
void WebProcess::setWebsiteDataStoreParameters(WebProcessDataStoreParameters&& parameters)
Modified: trunk/Source/WebKit/WebProcess/WebProcess.h (255661 => 255662)
--- trunk/Source/WebKit/WebProcess/WebProcess.h 2020-02-04 05:37:30 UTC (rev 255661)
+++ trunk/Source/WebKit/WebProcess/WebProcess.h 2020-02-04 05:46:57 UTC (rev 255662)
@@ -327,7 +327,7 @@
WebProcess();
~WebProcess();
- void initializeWebProcess(WebProcessCreationParameters&&);
+ void initializeWebProcess(WebProcessCreationParameters&&, CompletionHandler<void()>&&);
void platformInitializeWebProcess(WebProcessCreationParameters&);
void setWebsiteDataStoreParameters(WebProcessDataStoreParameters&&);
void platformSetWebsiteDataStoreParameters(WebProcessDataStoreParameters&&);
Modified: trunk/Source/WebKit/WebProcess/WebProcess.messages.in (255661 => 255662)
--- trunk/Source/WebKit/WebProcess/WebProcess.messages.in 2020-02-04 05:37:30 UTC (rev 255661)
+++ trunk/Source/WebKit/WebProcess/WebProcess.messages.in 2020-02-04 05:46:57 UTC (rev 255662)
@@ -21,7 +21,7 @@
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
messages -> WebProcess LegacyReceiver NotRefCounted {
- InitializeWebProcess(struct WebKit::WebProcessCreationParameters processCreationParameters)
+ InitializeWebProcess(struct WebKit::WebProcessCreationParameters processCreationParameters) -> () Async
SetWebsiteDataStoreParameters(struct WebKit::WebProcessDataStoreParameters parameters)
# Create a new page.
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes