summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTorne (Richard Coles) <torne@google.com>2014-09-18 13:59:18 +0100
committerIgnacio Solla Paula <igsolla@google.com>2014-10-03 15:41:06 +0000
commit80ea4ead5bdf2a86aa63f70c6afeebbd5c0ec6d6 (patch)
tree4d1c97ba132204e68b52b8f3b58481aff7862352
parent84e387193b55f94d61a9544ccfbe3c79e5e23f25 (diff)
downloadwebview-80ea4ead5bdf2a86aa63f70c6afeebbd5c0ec6d6.tar.gz
Cherry-pick: Fix resource rewriting in apps with other shared libs.
The resource rewriter was inadvertantly rewriting the resources for the first shared library it found in the current application whether that was the WebView or not due to a copy and paste oversight. Actually check the name of the package before rewriting its resources. This is the name of the package as the R class sees it, which is always com.android.webview even when the manifest package name has been changed. Also remove unused imports. BUG=17539974 Change-Id: I6c35451748ee9c32011b9a8b885f7c9b0b2e915d
-rw-r--r--chromium/java/com/android/webview/chromium/ResourceRewriter.java30
1 files changed, 15 insertions, 15 deletions
diff --git a/chromium/java/com/android/webview/chromium/ResourceRewriter.java b/chromium/java/com/android/webview/chromium/ResourceRewriter.java
index 99fa46f..683277a 100644
--- a/chromium/java/com/android/webview/chromium/ResourceRewriter.java
+++ b/chromium/java/com/android/webview/chromium/ResourceRewriter.java
@@ -19,9 +19,6 @@ package com.android.webview.chromium;
import android.content.Context;
import android.util.SparseArray;
-import java.lang.reflect.Field;
-import java.lang.reflect.Modifier;
-
/**
* Helper class used to fix up resource ids.
* This is mostly a copy of the code in frameworks/base/core/java/android/app/LoadedApk.java.
@@ -31,25 +28,28 @@ import java.lang.reflect.Modifier;
class ResourceRewriter {
public static void rewriteRValues(Context ctx) {
- // Rewrite the R 'constants' for all library apks.
+ // Rewrite the R 'constants' for the WebView library apk.
SparseArray<String> packageIdentifiers = ctx.getResources().getAssets()
.getAssignedPackageIdentifiers();
final int N = packageIdentifiers.size();
for (int i = 0; i < N; i++) {
- final int id = packageIdentifiers.keyAt(i);
- if (id == 0x01 || id == 0x7f) {
- continue;
- }
+ final String name = packageIdentifiers.valueAt(i);
- // TODO: We should use jarjar to remove the redundant R classes here, but due
- // to a bug in jarjar it's not possible to rename classes with '$' in their name.
- // See b/15684775.
- com.android.webview.chromium.R.onResourcesLoaded(id);
- org.chromium.ui.R.onResourcesLoaded(id);
- org.chromium.content.R.onResourcesLoaded(id);
+ // The resources are always called com.android.webview even if the manifest has had the
+ // package renamed.
+ if ("com.android.webview".equals(name)) {
+ final int id = packageIdentifiers.keyAt(i);
- break;
+ // TODO: We should use jarjar to remove the redundant R classes here, but due
+ // to a bug in jarjar it's not possible to rename classes with '$' in their name.
+ // See b/15684775.
+ com.android.webview.chromium.R.onResourcesLoaded(id);
+ org.chromium.ui.R.onResourcesLoaded(id);
+ org.chromium.content.R.onResourcesLoaded(id);
+
+ break;
+ }
}
}
}