Loading core/java/android/webkit/WebViewFactory.java +5 −0 Original line number Diff line number Diff line Loading @@ -63,6 +63,11 @@ public final class WebViewFactory { private static final Object sProviderLock = new Object(); private static boolean sAddressSpaceReserved = false; public static String getWebViewPackageName() { // TODO: Make this dynamic based on resource configuration. return "com.android.webview"; } static WebViewFactoryProvider getProvider() { synchronized (sProviderLock) { // For now the main purpose of this function (and the factory abstraction) is to keep Loading services/core/java/com/android/server/webkit/WebViewUpdateService.java +31 −1 Original line number Diff line number Diff line Loading @@ -16,10 +16,15 @@ package com.android.server.webkit; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.os.Binder; import android.os.Process; import android.util.Log; import android.webkit.IWebViewUpdateService; import android.webkit.WebViewFactory; /** * Private service to wait for the updatable WebView to be ready for use. Loading @@ -32,7 +37,22 @@ public class WebViewUpdateService extends IWebViewUpdateService.Stub { private boolean mRelroReady32Bit = false; private boolean mRelroReady64Bit = false; public WebViewUpdateService() { private BroadcastReceiver mWebViewUpdatedReceiver; public WebViewUpdateService(Context context) { mWebViewUpdatedReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { String webviewPackage = "package:" + WebViewFactory.getWebViewPackageName(); if (webviewPackage.equals(intent.getDataString())) { onWebViewUpdateInstalled(); } } }; IntentFilter filter = new IntentFilter(); filter.addAction(Intent.ACTION_PACKAGE_REPLACED); filter.addDataScheme("package"); context.registerReceiver(mWebViewUpdatedReceiver, filter); } /** Loading Loading @@ -75,4 +95,14 @@ public class WebViewUpdateService extends IWebViewUpdateService.Stub { } } } private void onWebViewUpdateInstalled() { Log.d(TAG, "WebView Package updated!"); synchronized (this) { mRelroReady32Bit = false; mRelroReady64Bit = false; } WebViewFactory.prepareWebViewInSystemServer(); } } services/java/com/android/server/SystemServer.java +1 −1 Original line number Diff line number Diff line Loading @@ -411,7 +411,7 @@ public final class SystemServer { SystemConfig.getInstance(); Slog.i(TAG, "WebView Update Service"); ServiceManager.addService("webviewupdate", new WebViewUpdateService()); ServiceManager.addService("webviewupdate", new WebViewUpdateService(context)); Slog.i(TAG, "WebViewFactory preparation"); WebViewFactory.prepareWebViewInSystemServer(); Loading Loading
core/java/android/webkit/WebViewFactory.java +5 −0 Original line number Diff line number Diff line Loading @@ -63,6 +63,11 @@ public final class WebViewFactory { private static final Object sProviderLock = new Object(); private static boolean sAddressSpaceReserved = false; public static String getWebViewPackageName() { // TODO: Make this dynamic based on resource configuration. return "com.android.webview"; } static WebViewFactoryProvider getProvider() { synchronized (sProviderLock) { // For now the main purpose of this function (and the factory abstraction) is to keep Loading
services/core/java/com/android/server/webkit/WebViewUpdateService.java +31 −1 Original line number Diff line number Diff line Loading @@ -16,10 +16,15 @@ package com.android.server.webkit; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.os.Binder; import android.os.Process; import android.util.Log; import android.webkit.IWebViewUpdateService; import android.webkit.WebViewFactory; /** * Private service to wait for the updatable WebView to be ready for use. Loading @@ -32,7 +37,22 @@ public class WebViewUpdateService extends IWebViewUpdateService.Stub { private boolean mRelroReady32Bit = false; private boolean mRelroReady64Bit = false; public WebViewUpdateService() { private BroadcastReceiver mWebViewUpdatedReceiver; public WebViewUpdateService(Context context) { mWebViewUpdatedReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { String webviewPackage = "package:" + WebViewFactory.getWebViewPackageName(); if (webviewPackage.equals(intent.getDataString())) { onWebViewUpdateInstalled(); } } }; IntentFilter filter = new IntentFilter(); filter.addAction(Intent.ACTION_PACKAGE_REPLACED); filter.addDataScheme("package"); context.registerReceiver(mWebViewUpdatedReceiver, filter); } /** Loading Loading @@ -75,4 +95,14 @@ public class WebViewUpdateService extends IWebViewUpdateService.Stub { } } } private void onWebViewUpdateInstalled() { Log.d(TAG, "WebView Package updated!"); synchronized (this) { mRelroReady32Bit = false; mRelroReady64Bit = false; } WebViewFactory.prepareWebViewInSystemServer(); } }
services/java/com/android/server/SystemServer.java +1 −1 Original line number Diff line number Diff line Loading @@ -411,7 +411,7 @@ public final class SystemServer { SystemConfig.getInstance(); Slog.i(TAG, "WebView Update Service"); ServiceManager.addService("webviewupdate", new WebViewUpdateService()); ServiceManager.addService("webviewupdate", new WebViewUpdateService(context)); Slog.i(TAG, "WebViewFactory preparation"); WebViewFactory.prepareWebViewInSystemServer(); Loading