diff options
| -rw-r--r-- | core/java/android/webkit/WebViewFactory.java | 15 |
1 files changed, 14 insertions, 1 deletions
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<WebViewFactoryProvider> getFactoryClass() throws ClassNotFoundException { - return (Class<WebViewFactoryProvider>) 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<WebViewFactoryProvider>) Class.forName(CHROMIUM_WEBVIEW_FACTORY, true, + clazzLoader); + } catch (PackageManager.NameNotFoundException e) { + Log.e(LOGTAG, "Chromium WebView package does not exist"); + return (Class<WebViewFactoryProvider>) Class.forName(NULL_WEBVIEW_FACTORY); + } } } |