AOSP-only changes to support the WebView loading from an APK.
Change-Id: If4404d21802d6fd5a7b9d76238b4bed75fbafd32
diff --git a/chromium/java/com/android/webview/chromium/WebViewChromium.java b/chromium/java/com/android/webview/chromium/WebViewChromium.java
index 74bb12f..bc6bec4 100644
--- a/chromium/java/com/android/webview/chromium/WebViewChromium.java
+++ b/chromium/java/com/android/webview/chromium/WebViewChromium.java
@@ -255,6 +255,9 @@
// Wrap Context so that we can use resources from the webview resource apk.
private static Context resourcesContextWrapper(final Context ctx) {
+ final Resources resources = WebViewChromiumFactoryProvider.getWebViewPackageResources(ctx);
+ final Resources.Theme theme = resources.newTheme();
+
return new ContextWrapper(ctx) {
@Override
public ClassLoader getClassLoader() {
@@ -284,6 +287,15 @@
}
}
+ @Override
+ public Resources getResources() {
+ return resources;
+ }
+
+ @Override
+ public Resources.Theme getTheme() {
+ return theme;
+ }
};
}
diff --git a/chromium/java/com/android/webview/chromium/WebViewChromiumFactoryProvider.java b/chromium/java/com/android/webview/chromium/WebViewChromiumFactoryProvider.java
index 9bdd7fa..8f0ebbd 100644
--- a/chromium/java/com/android/webview/chromium/WebViewChromiumFactoryProvider.java
+++ b/chromium/java/com/android/webview/chromium/WebViewChromiumFactoryProvider.java
@@ -23,6 +23,8 @@
import android.content.ComponentCallbacks2;
import android.content.Context;
import android.content.SharedPreferences;
+import android.content.pm.PackageManager;
+import android.content.res.Resources;
import android.os.Build;
import android.os.Looper;
import android.util.Log;
@@ -32,6 +34,7 @@
import android.webkit.WebStorage;
import android.webkit.WebView;
import android.webkit.WebViewDatabase;
+import android.webkit.WebViewFactory;
import android.webkit.WebViewFactoryProvider;
import android.webkit.WebViewProvider;
@@ -250,16 +253,23 @@
mDevToolsServer.setRemoteDebuggingEnabled(enable);
}
- private void setUpResources(Context ctx) {
- ResourceRewriter.rewriteRValues(ctx);
+ public static Resources getWebViewPackageResources(Context ctx) {
+ try {
+ return ctx.getPackageManager().getResourcesForApplication(
+ WebViewFactory.getWebViewPackageName());
+ } catch (PackageManager.NameNotFoundException e) {
+ throw new RuntimeException("Could not load webview resources apk.", e);
+ }
+ }
- AwResource.setResources(ctx.getResources());
+ private void setUpResources(Context ctx) {
+ AwResource.setResources(getWebViewPackageResources(ctx));
AwResource.setErrorPageResources(com.android.internal.R.raw.loaderror,
com.android.internal.R.raw.nodomain);
AwResource.setDefaultTextEncoding(
com.android.internal.R.string.default_text_encoding);
AwResource.setConfigKeySystemUuidMapping(
- com.android.internal.R.array.config_keySystemUuidMapping);
+ R.array.config_keySystemUuidMapping);
}
@Override
diff --git a/chromium/res/values/config.xml b/chromium/res/values/config.xml
new file mode 100644
index 0000000..ebbaeb4
--- /dev/null
+++ b/chromium/res/values/config.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright 2014 The Chromium Authors. All rights reserved.
+ Use of this source code is governed by a BSD-style license that can be
+ found in the LICENSE file.
+-->
+
+<resources>
+ <!-- Array of "[keySystemName],[UuidOfMediaDrm]" -->
+ <string-array name="config_keySystemUuidMapping" translatable="false">
+ <!-- Use Widevine's UUID to pass the availability-test of MediaDRM plugin -->
+ <item>"com.oem.test-keysystem,EDEF8BA9-79D6-4ACE-A3C8-27DCD51D21ED"</item>
+ </string-array>
+</resources>