• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 package com.google.android.lint.aidl
2 
3 import com.android.tools.lint.checks.infrastructure.LintDetectorTest.java
4 import com.android.tools.lint.checks.infrastructure.TestFile
5 
6 val aidlStub: TestFile = java(
7     """
8     package android.test;
9     public interface ITest extends android.os.IInterface {
10         public static abstract class Stub extends android.os.Binder implements android.test.ITest {
11             protected void test_enforcePermission() throws SecurityException {}
12         }
13         public void test() throws android.os.RemoteException;
14     }
15     """
16 ).indented()
17 
18 val contextStub: TestFile = java(
19     """
20     package android.content;
21     public class Context {
22         @android.annotation.PermissionMethod(orSelf = true)
23         public void enforceCallingOrSelfPermission(@android.annotation.PermissionName String permission, String message) {}
24         @android.annotation.PermissionMethod
25         public void enforceCallingPermission(@android.annotation.PermissionName String permission, String message) {}
26         @android.annotation.PermissionMethod(orSelf = true)
27         public int checkCallingOrSelfPermission(@android.annotation.PermissionName String permission, String message) {}
28         @android.annotation.PermissionMethod
29         public int checkCallingPermission(@android.annotation.PermissionName String permission, String message) {}
30     }
31     """
32 ).indented()
33 
34 val binderStub: TestFile = java(
35     """
36     package android.os;
37     public class Binder {
38         public static int getCallingUid() {}
39     }
40     """
41 ).indented()
42 
43 val permissionMethodStub: TestFile = java(
44     """
45     package android.annotation;
46 
47     import static java.lang.annotation.ElementType.METHOD;
48     import static java.lang.annotation.RetentionPolicy.CLASS;
49 
50     import java.lang.annotation.Retention;
51     import java.lang.annotation.Target;
52 
53     @Retention(CLASS)
54     @Target({METHOD})
55     public @interface PermissionMethod {}
56     """
57 ).indented()
58 
59 val permissionNameStub: TestFile = java(
60     """
61     package android.annotation;
62 
63     import static java.lang.annotation.ElementType.FIELD;
64     import static java.lang.annotation.ElementType.LOCAL_VARIABLE;
65     import static java.lang.annotation.ElementType.METHOD;
66     import static java.lang.annotation.ElementType.PARAMETER;
67     import static java.lang.annotation.RetentionPolicy.CLASS;
68 
69     import java.lang.annotation.Retention;
70     import java.lang.annotation.Target;
71 
72     @Retention(CLASS)
73     @Target({PARAMETER, METHOD, LOCAL_VARIABLE, FIELD})
74     public @interface PermissionName {}
75     """
76 ).indented()
77 
78 val manifestStub: TestFile = java(
79     """
80     package android;
81 
82     public final class Manifest {
83         public static final class permission {
84             public static final String READ_CONTACTS="android.permission.READ_CONTACTS";
85         }
86     }
87     """.trimIndent()
88 )
89 
90 // A service with permission annotation on the method.
91 val interfaceIFoo: TestFile = java(
92     """
93         public interface IFoo extends android.os.IInterface {
94          public static abstract class Stub extends android.os.Binder implements IFoo {
95           }
96           @Override
97           @android.annotation.EnforcePermission(android.Manifest.permission.READ_PHONE_STATE)
98           public void testMethod();
99           @Override
100           @android.annotation.RequiresNoPermission
101           public void testMethodNoPermission(int parameter1, int parameter2);
102           @Override
103           @android.annotation.PermissionManuallyEnforced
104           public void testMethodManual();
105         }
106         """
107 ).indented()
108 
109 // A service with no permission annotation.
110 val interfaceIBar: TestFile = java(
111     """
112         public interface IBar extends android.os.IInterface {
113          public static abstract class Stub extends android.os.Binder implements IBar {
114           }
115           public void testMethod(int parameter1, int parameter2);
116         }
117         """
118 ).indented()
119 
120 // A service whose AIDL Interface is exempted.
121 val interfaceIExempted: TestFile = java(
122     """
123         package android.accessibilityservice;
124         public interface IBrailleDisplayConnection extends android.os.IInterface {
125          public static abstract class Stub extends android.os.Binder implements IBrailleDisplayConnection {
126           }
127           public void testMethod();
128         }
129         """
130 ).indented()
131