diff options
author | Torne (Richard Coles) <torne@google.com> | 2014-09-18 13:59:18 +0100 |
---|---|---|
committer | Ignacio Solla Paula <igsolla@google.com> | 2014-10-03 15:41:06 +0000 |
commit | 80ea4ead5bdf2a86aa63f70c6afeebbd5c0ec6d6 (patch) | |
tree | 4d1c97ba132204e68b52b8f3b58481aff7862352 /chromium/java/com | |
parent | 84e387193b55f94d61a9544ccfbe3c79e5e23f25 (diff) | |
download | webview-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
Diffstat (limited to 'chromium/java/com')
-rw-r--r-- | chromium/java/com/android/webview/chromium/ResourceRewriter.java | 30 |
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; + } } } } |