summaryrefslogtreecommitdiff
path: root/chromium/java/com/android/webview
diff options
context:
space:
mode:
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);
}