Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6a088277 authored by Cole Faust's avatar Cole Faust Committed by Automerger Merge Worker
Browse files

Merge "Fix crash in RequiresPermissionChecker.java" am: ede4a8a9 am: 484c0892

parents 8eef6136 484c0892
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -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;
+23 −0
Original line number Diff line number Diff line
@@ -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();
    }
}