Merge "Fix crash in RequiresPermissionChecker.java" into tm-qpr-dev
This commit is contained in:
@@ -412,11 +412,11 @@ public final class RequiresPermissionChecker extends BugChecker
|
|||||||
|
|
||||||
private static ParsedRequiresPermission parseRequiresPermissionRecursively(
|
private static ParsedRequiresPermission parseRequiresPermissionRecursively(
|
||||||
MethodInvocationTree tree, VisitorState state) {
|
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();
|
final ParsedRequiresPermission res = new ParsedRequiresPermission();
|
||||||
res.allOf.add(String.valueOf(ASTHelpers.constValue(tree.getArguments().get(0))));
|
res.allOf.add(String.valueOf(ASTHelpers.constValue(tree.getArguments().get(0))));
|
||||||
return res;
|
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();
|
final ParsedRequiresPermission res = new ParsedRequiresPermission();
|
||||||
res.allOf.add(String.valueOf(ASTHelpers.constValue(tree.getArguments().get(1))));
|
res.allOf.add(String.valueOf(ASTHelpers.constValue(tree.getArguments().get(1))));
|
||||||
return res;
|
return res;
|
||||||
|
|||||||
@@ -415,4 +415,27 @@ public class RequiresPermissionCheckerTest {
|
|||||||
"}")
|
"}")
|
||||||
.doTest();
|
.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