diff --git a/core/java/android/webkit/WebViewFactory.java b/core/java/android/webkit/WebViewFactory.java index 2c7b3ebccdaf3..0401fb7729f5c 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.Process; import android.os.RemoteException; @@ -100,9 +103,14 @@ public final class WebViewFactory { private static Class getFactoryClass() throws ClassNotFoundException { try { - return (Class) Class.forName(CHROMIUM_WEBVIEW_FACTORY); - } catch (ClassNotFoundException e) { - Log.e(LOGTAG, "Chromium WebView does not exist"); + 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); } }