Index: android_webview/glue/java/src/com/android/webview/chromium/WebViewChromiumFactoryProvider.java |
diff --git a/android_webview/glue/java/src/com/android/webview/chromium/WebViewChromiumFactoryProvider.java b/android_webview/glue/java/src/com/android/webview/chromium/WebViewChromiumFactoryProvider.java |
index 4c6da6f631b8b8ec4b163ea51380e6d73029f6a6..782747beda511a0162df9e26dec56cfe014887ae 100644 |
--- a/android_webview/glue/java/src/com/android/webview/chromium/WebViewChromiumFactoryProvider.java |
+++ b/android_webview/glue/java/src/com/android/webview/chromium/WebViewChromiumFactoryProvider.java |
@@ -50,6 +50,7 @@ import org.chromium.android_webview.HttpAuthDatabase; |
import org.chromium.android_webview.PlatformServiceBridge; |
import org.chromium.android_webview.ResourcesContextWrapperFactory; |
import org.chromium.base.BuildConfig; |
+import org.chromium.base.BuildInfo; |
import org.chromium.base.CommandLine; |
import org.chromium.base.ContextUtils; |
import org.chromium.base.MemoryPressureListener; |
@@ -198,6 +199,13 @@ public class WebViewChromiumFactoryProvider implements WebViewFactoryProvider { |
initialize(WebViewDelegateFactory.createProxyDelegate(delegate)); |
} |
+ /** |
+ * Constructor for internal use when a proxy delegate has already been created. |
+ */ |
+ WebViewChromiumFactoryProvider(WebViewDelegate delegate) { |
+ initialize(delegate); |
+ } |
+ |
@SuppressFBWarnings("DMI_HARDCODED_ABSOLUTE_FILENAME") |
private void initialize(WebViewDelegate webViewDelegate) { |
mWebViewDelegate = webViewDelegate; |
@@ -225,9 +233,17 @@ public class WebViewChromiumFactoryProvider implements WebViewFactoryProvider { |
CommandLine.init(null); |
} |
- if (Settings.Global.getInt(ContextUtils.getApplicationContext().getContentResolver(), |
- Settings.Global.WEBVIEW_MULTIPROCESS, 0) |
- == 1) { |
+ boolean multiProcess = false; |
+ if (BuildInfo.isAtLeastO()) { |
+ // Ask the system if multiprocess should be enabled on O+. |
+ multiProcess = mWebViewDelegate.isMultiProcessEnabled(); |
+ } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { |
+ // Check the multiprocess developer setting directly on N. |
+ multiProcess = Settings.Global.getInt( |
+ ContextUtils.getApplicationContext().getContentResolver(), |
+ Settings.Global.WEBVIEW_MULTIPROCESS, 0) == 1; |
+ } |
+ if (multiProcess) { |
CommandLine cl = CommandLine.getInstance(); |
cl.appendSwitch("webview-sandboxed-renderer"); |
} |