From bb65893a2471a5da6310cf0c64c0659c3f6aefe7 Mon Sep 17 00:00:00 2001 From: "Torne (Richard Coles)" Date: Thu, 5 Jan 2017 16:11:06 +0000 Subject: [PATCH] Abstract ZygoteInit.maybePreload call for webview. Make ZygoteConnection call ZygoteInit.maybePreload via an overridable method on itself, so that the WebView zygote's subclass of ZygoteConnection can override it to do nothing; the WebView zygote doesn't want to do this preloading and can't due to permissions. Test: enable multiprocess webview, test webview apps work Bug: 32735001 Change-Id: Ia6ac7d35172ba69ff861fe5a44b09ac52b0afbf0 --- core/java/com/android/internal/os/WebViewZygoteInit.java | 5 +++++ core/java/com/android/internal/os/ZygoteConnection.java | 6 +++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/core/java/com/android/internal/os/WebViewZygoteInit.java b/core/java/com/android/internal/os/WebViewZygoteInit.java index a8a55499f5f3c..12d699d2ae153 100644 --- a/core/java/com/android/internal/os/WebViewZygoteInit.java +++ b/core/java/com/android/internal/os/WebViewZygoteInit.java @@ -53,6 +53,11 @@ class WebViewZygoteInit { super(socket, abiList); } + @Override + protected void maybePreload() { + // Do nothing, we don't need to call ZygoteInit.maybePreload() for the WebView zygote. + } + @Override protected boolean handlePreloadPackage(String packagePath, String libsPath) { // Ask ApplicationLoaders to create and cache a classloader for the WebView APK so that diff --git a/core/java/com/android/internal/os/ZygoteConnection.java b/core/java/com/android/internal/os/ZygoteConnection.java index e9e642a58a333..345350cc45fbd 100644 --- a/core/java/com/android/internal/os/ZygoteConnection.java +++ b/core/java/com/android/internal/os/ZygoteConnection.java @@ -171,7 +171,7 @@ class ZygoteConnection { return handleAbiListQuery(); } - ZygoteInit.maybePreload(); + maybePreload(); if (parsedArgs.preloadPackage != null) { return handlePreloadPackage(parsedArgs.preloadPackage, @@ -279,6 +279,10 @@ class ZygoteConnection { } } + protected void maybePreload() { + ZygoteInit.maybePreload(); + } + protected boolean handlePreloadPackage(String packagePath, String libsPath) { throw new RuntimeException("Zyogte does not support package preloading"); }