Merge "Fix crash in RequiresPermissionChecker.java" am: ede4a8a9d4
Original change: https://android-review.googlesource.com/c/platform/frameworks/base/+/2418000 Change-Id: I912235850ff793a5e7e6f8d64c78a00d7a0843c7 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -412,11 +412,11 @@ public final class RequiresPermissionChecker extends BugChecker
|
||||
|
||||
private static ParsedRequiresPermission parseRequiresPermissionRecursively(
|
||||
MethodInvocationTree tree, VisitorState state) {
|
||||
if (ENFORCE_VIA_CONTEXT.matches(tree, state)) {
|
||||
if (ENFORCE_VIA_CONTEXT.matches(tree, state) && tree.getArguments().size() > 0) {
|
||||
final ParsedRequiresPermission res = new ParsedRequiresPermission();
|
||||
res.allOf.add(String.valueOf(ASTHelpers.constValue(tree.getArguments().get(0))));
|
||||
return res;
|
||||
} else if (ENFORCE_VIA_CHECKER.matches(tree, state)) {
|
||||
} else if (ENFORCE_VIA_CHECKER.matches(tree, state) && tree.getArguments().size() > 1) {
|
||||
final ParsedRequiresPermission res = new ParsedRequiresPermission();
|
||||
res.allOf.add(String.valueOf(ASTHelpers.constValue(tree.getArguments().get(1))));
|
||||
return res;
|
||||
|
||||
@@ -415,4 +415,27 @@ public class RequiresPermissionCheckerTest {
|
||||
"}")
|
||||
.doTest();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testInvalidFunctions() {
|
||||
compilationHelper
|
||||
.addSourceFile("/android/annotation/RequiresPermission.java")
|
||||
.addSourceFile("/android/annotation/SuppressLint.java")
|
||||
.addSourceFile("/android/content/Context.java")
|
||||
.addSourceLines("Example.java",
|
||||
"import android.annotation.RequiresPermission;",
|
||||
"import android.annotation.SuppressLint;",
|
||||
"import android.content.Context;",
|
||||
"class Foo extends Context {",
|
||||
" private static final String RED = \"red\";",
|
||||
" public void checkPermission() {",
|
||||
" }",
|
||||
" @RequiresPermission(RED)",
|
||||
" // BUG: Diagnostic contains:",
|
||||
" public void exampleScoped(Context context) {",
|
||||
" checkPermission();",
|
||||
" }",
|
||||
"}")
|
||||
.doTest();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user