summaryrefslogtreecommitdiffstats
path: root/core/java/android
diff options
context:
space:
mode:
authorTorne (Richard Coles) <torne@google.com>2014-07-17 14:14:48 -0700
committerBen Murdoch <benm@google.com>2014-08-01 14:23:55 +0100
commit6c778cebc73e7eb76510f6e2183d804b8c07082b (patch)
tree217709450d8381bd884efa506dccc4115e7fc6e6 /core/java/android
parent732af43eb1025dd4abd690c02f051aa7738c4c9b (diff)
downloadframeworks_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.java14
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);
}
}