Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(979)

Unified Diff: android_webview/java/src/org/chromium/android_webview/AwBrowserProcess.java

Issue 2390203006: Prewarm WebView renderer when in multiprocess mode. (Closed)
Patch Set: Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: android_webview/java/src/org/chromium/android_webview/AwBrowserProcess.java
diff --git a/android_webview/java/src/org/chromium/android_webview/AwBrowserProcess.java b/android_webview/java/src/org/chromium/android_webview/AwBrowserProcess.java
index 7935305d99046658c29e9496fde5896f9023f841..5bdfe8145cf01872add0c3d64f5a949416843a50 100644
--- a/android_webview/java/src/org/chromium/android_webview/AwBrowserProcess.java
+++ b/android_webview/java/src/org/chromium/android_webview/AwBrowserProcess.java
@@ -5,6 +5,7 @@
package org.chromium.android_webview;
import android.content.Context;
+import android.os.AsyncTask;
import android.os.StrictMode;
import org.chromium.android_webview.policy.AwPolicyProvider;
@@ -18,6 +19,7 @@ import org.chromium.base.library_loader.LibraryProcessType;
import org.chromium.base.library_loader.ProcessInitException;
import org.chromium.content.browser.BrowserStartupController;
import org.chromium.content.browser.ChildProcessCreationParams;
+import org.chromium.content.browser.ChildProcessLauncher;
import org.chromium.policy.CombinedPolicyProvider;
import java.io.File;
@@ -78,7 +80,19 @@ public abstract class AwBrowserProcess {
ThreadUtils.runOnUiThreadBlocking(new Runnable() {
@Override
public void run() {
- Context appContext = ContextUtils.getApplicationContext();
+ final Context appContext = ContextUtils.getApplicationContext();
+ boolean multiProcess = CommandLine.getInstance().hasSwitch(
+ AwSwitches.WEBVIEW_SANDBOXED_RENDERER);
+ if (multiProcess) {
+ // Have a background thread warm up a renderer process now, so that this can
+ // proceed in parallel to the browser process initialisation.
+ AsyncTask.THREAD_POOL_EXECUTOR.execute(new Runnable() {
+ @Override
+ public void run() {
+ ChildProcessLauncher.warmUp(appContext);
+ }
+ });
+ }
// The policies are used by browser startup, so we need to register the policy
// providers before starting the browser process. This only registers java objects
// and doesn't need the native library.
@@ -86,8 +100,7 @@ public abstract class AwBrowserProcess {
try {
BrowserStartupController.get(appContext, LibraryProcessType.PROCESS_WEBVIEW)
- .startBrowserProcessesSync(!CommandLine.getInstance().hasSwitch(
- AwSwitches.WEBVIEW_SANDBOXED_RENDERER));
+ .startBrowserProcessesSync(!multiProcess);
} catch (ProcessInitException e) {
throw new RuntimeException("Cannot initialize WebView", e);
}
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698