diff --git a/core/java/android/os/PermissionEnforcer.java b/core/java/android/os/PermissionEnforcer.java index d772fe3bd037b..91d22698d7df7 100644 --- a/core/java/android/os/PermissionEnforcer.java +++ b/core/java/android/os/PermissionEnforcer.java @@ -34,6 +34,38 @@ import android.permission.PermissionCheckerManager; * PermissionEnforcer to validate the permissions. The methods available are * purposely similar to the AIDL annotation syntax. * + *
The constructor of the Stub generated by AIDL expects a + * PermissionEnforcer. It can be based on the current Context. For example: + * + *
{@code
+ * class MyFoo extends Foo.Stub {
+ * MyFoo(Context context) {
+ * super(PermissionEnforcer.fromContext(context));
+ * }
+ *
+ * @Override
+ * @EnforcePermission(android.Manifest.permission.INTERNET)
+ * public MyMethod() {
+ * MyMethod_enforcePermission();
+ * }
+ * }
+ * }
+ *
+ * A {@link android.os.test.FakePermissionEnforcer} is available for unit + * testing. It can be attached to a mocked Context using: + *
{@code
+ * @Mock private Context mContext;
+ *
+ * @Before
+ * public setUp() {
+ * fakeEnforcer = new FakePermissionEnforcer();
+ * fakeEnforcer.grant(android.Manifest.permission.INTERNET);
+ *
+ * doReturn(fakeEnforcer).when(mContext).getSystemService(
+ eq(Context.PERMISSION_ENFORCER_SERVICE));
+ * }
+ * }
+ *
* @see android.permission.PermissionManager
*
* @hide