summaryrefslogtreecommitdiff
path: root/chromium/java/com/android/webview
diff options
context:
space:
mode:
authorBen Murdoch <benm@google.com>2014-09-10 19:32:41 +0100
committerBen Murdoch <benm@google.com>2014-09-18 15:50:42 +0000
commitc4da9b7d1b82e905cfb36809f58e13557b56b8a4 (patch)
tree08be8b5f7837c2ab92ab9db3d65c181d37bc8766 /chromium/java/com/android/webview
parenta65663b5dba733416e4acf4417be230584435dc2 (diff)
downloadwebview-c4da9b7d1b82e905cfb36809f58e13557b56b8a4.tar.gz
Remove check for styleable resources in WebView ResourceRewriter.
We know that we don't have any stylable resources in the WebView, so we can eliminate the check in our ResourceRewriter; this removes a costly repeated call to Class.getSimpleName(). Bug: 16870075 Change-Id: I48d1e581bc3bc89013b910d2b46cf480f1e9dcfc (cherry picked from commit 91c538cbe7e746f1a972b463f3497a56addf579c) (cherry picked from commit deb7453daf56a2d4cf99be2d9bf0e2d97ba6fecc)
Diffstat (limited to 'chromium/java/com/android/webview')
-rw-r--r--chromium/java/com/android/webview/chromium/ResourceRewriter.java46
1 files changed, 6 insertions, 40 deletions
diff --git a/chromium/java/com/android/webview/chromium/ResourceRewriter.java b/chromium/java/com/android/webview/chromium/ResourceRewriter.java
index 3410044..637a64f 100644
--- a/chromium/java/com/android/webview/chromium/ResourceRewriter.java
+++ b/chromium/java/com/android/webview/chromium/ResourceRewriter.java
@@ -34,15 +34,15 @@ class ResourceRewriter {
// Rewrite the R 'constants' for all library apks.
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);
- final String name = packageIdentifiers.valueAt(i);
if (id == 0x01 || id == 0x7f) {
continue;
}
- // TODO(mkosiba): We should use jarjar to remove the redundant R classes here, but due
+ // 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.
rewriteRValues(com.android.webview.chromium.R.class, id);
@@ -65,7 +65,8 @@ class ResourceRewriter {
" is not rewritable");
}
- if (field.getType() != int.class && field.getType() != Integer.class) {
+ Class<?> fieldType = field.getType();
+ if (fieldType != int.class && fieldType != Integer.class) {
throw new IllegalArgumentException("Field " + field.getName() +
" is not an integer");
}
@@ -80,53 +81,18 @@ class ResourceRewriter {
}
}
- private static void rewriteIntArrayField(Field field, int packageId) {
- int requiredModifiers = Modifier.STATIC | Modifier.PUBLIC;
-
- if ((field.getModifiers() & requiredModifiers) != requiredModifiers) {
- throw new IllegalArgumentException("Field " + field.getName() +
- " is not rewritable");
- }
-
- if (field.getType() != int[].class) {
- throw new IllegalArgumentException("Field " + field.getName() +
- " is not an integer array");
- }
-
- try {
- int[] array = (int[]) field.get(null);
- for (int i = 0; i < array.length; i++) {
- array[i] = (array[i] & 0x00ffffff) | (packageId << 24);
- }
- } catch (IllegalAccessException e) {
- // This should not occur (we check above if we can write to it)
- throw new IllegalArgumentException(e);
- }
- }
-
private static void rewriteRValues(final Class<?> rClazz, int id) {
try {
- Class<?>[] declaredClasses = rClazz.getDeclaredClasses();
- for (Class<?> clazz : declaredClasses) {
+ for (Class<?> clazz : rClazz.getDeclaredClasses()) {
try {
- if (clazz.getSimpleName().equals("styleable")) {
- for (Field field : clazz.getDeclaredFields()) {
- if (field.getType() == int[].class) {
- rewriteIntArrayField(field, id);
- }
- }
-
- } else {
- for (Field field : clazz.getDeclaredFields()) {
+ for (Field field : clazz.getDeclaredFields()) {
rewriteIntField(field, id);
- }
}
} catch (Exception e) {
throw new IllegalArgumentException("Failed to rewrite R values for " +
clazz.getName(), e);
}
}
-
} catch (Exception e) {
throw new IllegalArgumentException("Failed to rewrite R values", e);
}