diff options
author | Aurimas Liutikas <aurimas@google.com> | 2018-07-13 16:40:21 -0700 |
---|---|---|
committer | Aurimas Liutikas <aurimas@google.com> | 2018-07-13 16:40:21 -0700 |
commit | 2e958569bb647461c97e85cd8276387b41f18f70 (patch) | |
tree | c305a76662bb915a31cfbc7cd131bf65c0c0cea5 /src | |
parent | 205eac053946d9db44f1d9baa6d1e40f2693de65 (diff) | |
download | doclava-2e958569bb647461c97e85cd8276387b41f18f70.tar.gz |
More robust @RequiresPermission handling.
The "conditional" value doesn't have any permissions to examine.
Test: builds, boots, "conditional" annotations work
Bug: 73559440
Change-Id: I78b3a9c86bdc972f1a3a7817e885e994cf84f8f6
Merged-In: I78b3a9c86bdc972f1a3a7817e885e994cf84f8f6
Diffstat (limited to 'src')
-rw-r--r-- | src/com/google/doclava/AndroidLinter.java | 4 | ||||
-rw-r--r-- | src/com/google/doclava/Stubs.java | 4 |
2 files changed, 5 insertions, 3 deletions
diff --git a/src/com/google/doclava/AndroidLinter.java b/src/com/google/doclava/AndroidLinter.java index 399226d..c5a00f0 100644 --- a/src/com/google/doclava/AndroidLinter.java +++ b/src/com/google/doclava/AndroidLinter.java @@ -77,7 +77,7 @@ public class AndroidLinter implements Linter { for (AnnotationInstanceInfo a : method.annotations()) { if (a.type().qualifiedNameMatches("android", "annotation.RequiresPermission")) { hasAnnotation = true; - ArrayList<AnnotationValueInfo> values = new ArrayList<AnnotationValueInfo>(); + ArrayList<AnnotationValueInfo> values = new ArrayList<>(); for (AnnotationValueInfo val : a.elementValues()) { switch (val.element().name()) { case "value": @@ -91,6 +91,8 @@ public class AndroidLinter implements Linter { break; } } + if (values.isEmpty()) continue; + for (AnnotationValueInfo value : values) { String perm = String.valueOf(value.value()); if (perm.indexOf('.') >= 0) perm = perm.substring(perm.lastIndexOf('.') + 1); diff --git a/src/com/google/doclava/Stubs.java b/src/com/google/doclava/Stubs.java index 3c9138a..5a9fe5c 100644 --- a/src/com/google/doclava/Stubs.java +++ b/src/com/google/doclava/Stubs.java @@ -1664,11 +1664,10 @@ public class Stubs { if (a.type().qualifiedNameMatches("android", "annotation.RequiresPermission")) { hasAnnotation = true; for (AnnotationValueInfo val : a.elementValues()) { - ArrayList<AnnotationValueInfo> values = null; + ArrayList<AnnotationValueInfo> values = new ArrayList<>(); boolean any = false; switch (val.element().name()) { case "value": - values = new ArrayList<AnnotationValueInfo>(); values.add(val); break; case "allOf": @@ -1679,6 +1678,7 @@ public class Stubs { values = (ArrayList<AnnotationValueInfo>) val.value(); break; } + if (values.isEmpty()) continue; ArrayList<String> system = new ArrayList<>(); ArrayList<String> nonSystem = new ArrayList<>(); |