Index: base/android/jni_generator/jni_generator.py |
diff --git a/base/android/jni_generator/jni_generator.py b/base/android/jni_generator/jni_generator.py |
index 35a75101088c076c421a274dd9637830968eb2b3..1196f76285ed3ba11e2581701ab403146a04a69d 100755 |
--- a/base/android/jni_generator/jni_generator.py |
+++ b/base/android/jni_generator/jni_generator.py |
@@ -337,8 +337,11 @@ class JniParams(object): |
def RemapClassName(class_name): |
"""Remaps class names using the jarjar mapping table.""" |
for old, new in JniParams._remappings: |
- if old in class_name: |
+ if old.endswith('**') and old[:-2] in class_name: |
+ return class_name.replace(old[:-2], new, 1) |
+ if '*' not in old and class_name.endswith(old): |
return class_name.replace(old, new, 1) |
+ |
return class_name |
@staticmethod |
@@ -346,17 +349,26 @@ class JniParams(object): |
"""Parse jarjar mappings from a string.""" |
JniParams._remappings = [] |
for line in mappings.splitlines(): |
- keyword, src, dest = line.split() |
- if keyword != 'rule': |
+ rule = line.split() |
+ if rule[0] != 'rule': |
continue |
- assert src.endswith('.**') |
- src = src[:-2].replace('.', '/') |
+ _, src, dest = rule |
+ src = src.replace('.', '/') |
dest = dest.replace('.', '/') |
- if dest.endswith('@0'): |
- JniParams._remappings.append((src, dest[:-2] + src)) |
+ if src.endswith('**'): |
+ src_real_name = src[:-2] |
else: |
- assert dest.endswith('@1') |
+ assert not '*' in src |
+ src_real_name = src |
+ |
+ if dest.endswith('@0'): |
+ JniParams._remappings.append((src, dest[:-2] + src_real_name)) |
+ elif dest.endswith('@1'): |
+ assert '**' in src |
JniParams._remappings.append((src, dest[:-2])) |
+ else: |
+ assert not '@' in dest |
+ JniParams._remappings.append((src, dest)) |
def ExtractJNINamespace(contents): |