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>