From a7e4fe9af0964a2377ebc1c3d5f47a6d38b593f7 Mon Sep 17 00:00:00 2001 From: "Torne (Richard Coles)" Date: Thu, 24 Jul 2014 16:10:59 +0100 Subject: [PATCH] Load the WebView Java code via createPackageContext. Bug: 16329371 Change-Id: I94b4bb0df46a373454eb8ee9742413e13ce1e6a8 --- core/java/android/webkit/WebViewFactory.java | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/core/java/android/webkit/WebViewFactory.java b/core/java/android/webkit/WebViewFactory.java index f694c2f03bf2..732518d71c6d 100644 --- a/core/java/android/webkit/WebViewFactory.java +++ b/core/java/android/webkit/WebViewFactory.java @@ -16,6 +16,9 @@ package android.webkit; +import android.app.AppGlobals; +import android.content.Context; +import android.content.pm.PackageManager; import android.os.Build; import android.os.StrictMode; import android.os.SystemProperties; @@ -92,6 +95,16 @@ public final class WebViewFactory { } private static Class getFactoryClass() throws ClassNotFoundException { - return (Class) Class.forName(CHROMIUM_WEBVIEW_FACTORY); + try { + Context webViewContext = AppGlobals.getInitialApplication().createPackageContext( + getWebViewPackageName(), + Context.CONTEXT_INCLUDE_CODE | Context.CONTEXT_IGNORE_SECURITY); + ClassLoader clazzLoader = webViewContext.getClassLoader(); + return (Class) Class.forName(CHROMIUM_WEBVIEW_FACTORY, true, + clazzLoader); + } catch (PackageManager.NameNotFoundException e) { + Log.e(LOGTAG, "Chromium WebView package does not exist"); + return (Class) Class.forName(NULL_WEBVIEW_FACTORY); + } } } -- 2.11.0