diff options
author | Torne (Richard Coles) <torne@google.com> | 2014-07-17 14:14:48 -0700 |
---|---|---|
committer | Ben Murdoch <benm@google.com> | 2014-08-01 14:23:55 +0100 |
commit | 6c778cebc73e7eb76510f6e2183d804b8c07082b (patch) | |
tree | 217709450d8381bd884efa506dccc4115e7fc6e6 /core/java/android | |
parent | 732af43eb1025dd4abd690c02f051aa7738c4c9b (diff) | |
download | frameworks_base-6c778cebc73e7eb76510f6e2183d804b8c07082b.zip frameworks_base-6c778cebc73e7eb76510f6e2183d804b8c07082b.tar.gz frameworks_base-6c778cebc73e7eb76510f6e2183d804b8c07082b.tar.bz2 |
Cherry pick Load the WebView Java code from an APK. DO NOT MERGE
Use the WebView APK to load the Java code via createPackageContext.
Original Bug: 16329371
Original Change-Id: I1292edab639d85c2027dc8ebb52def8c36d41cde
Bug: 16723226
Change-Id: I8e692a5e12706f91a8af0a8b385bac336ce60913
Diffstat (limited to 'core/java/android')
-rw-r--r-- | core/java/android/webkit/WebViewFactory.java | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/core/java/android/webkit/WebViewFactory.java b/core/java/android/webkit/WebViewFactory.java index 2c7b3eb..0401fb7 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<WebViewFactoryProvider> getFactoryClass() throws ClassNotFoundException { try { - return (Class<WebViewFactoryProvider>) 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<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); } } |