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

Commit ab6ec317 authored by Thiébaud Weksteen's avatar Thiébaud Weksteen
Browse files

Add AppOps, Runtime and AllOf/AnyOf tests

Update the test services to use the Stub constructor and provide their
own Context (best practice).

Test: atest EnforcePermissionTest
Bug: 269721152
Change-Id: I059a31950034e0bb67977eb88990515ed0cac4e1
parent 44ec9a5b
Loading
Loading
Loading
Loading
+21 −0
Original line number Diff line number Diff line
@@ -31,4 +31,25 @@ interface IProtected {

    @EnforcePermission("INTERNET")
    void ProtectedByInternetAndReadSyncSettingsImplicitly();

    @EnforcePermission("TURN_SCREEN_ON")
    void ProtectedByTurnScreenOn();

    @EnforcePermission("READ_CONTACTS")
    void ProtectedByReadContacts();

    @EnforcePermission("READ_CALENDAR")
    void ProtectedByReadCalendar();

    @EnforcePermission(allOf={"INTERNET", "VIBRATE"})
    void ProtectedByInternetAndVibrate();

    @EnforcePermission(allOf={"INTERNET", "READ_SYNC_SETTINGS"})
    void ProtectedByInternetAndReadSyncSettings();

    @EnforcePermission(anyOf={"ACCESS_WIFI_STATE", "VIBRATE"})
    void ProtectedByAccessWifiStateOrVibrate();

    @EnforcePermission(anyOf={"INTERNET", "VIBRATE"})
    void ProtectedByInternetOrVibrate();
}
+3 −0
Original line number Diff line number Diff line
@@ -15,6 +15,9 @@
-->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="android.tests.enforcepermission.service">

    <uses-permission android:name="android.permission.UPDATE_APP_OPS_STATS" />

    <application>
        <service
          android:name=".TestService"
+15 −2
Original line number Diff line number Diff line
@@ -18,13 +18,21 @@ package android.tests.enforcepermission.service;

import android.annotation.EnforcePermission;
import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.os.IBinder;
import android.os.PermissionEnforcer;
import android.tests.enforcepermission.INested;
import android.util.Log;

public class NestedTestService extends Service {
    private static final String TAG = "EnforcePermission.NestedTestService";
    private INested.Stub mBinder;

    @Override
    public void onCreate() {
        mBinder = new Stub(this);
    }

    @Override
    public IBinder onBind(Intent intent) {
@@ -32,7 +40,12 @@ public class NestedTestService extends Service {
        return mBinder;
    }

    private final INested.Stub mBinder = new INested.Stub() {
    private static class Stub extends INested.Stub {

        Stub(Context context) {
            super(PermissionEnforcer.fromContext(context));
        }

        @Override
        @EnforcePermission(android.Manifest.permission.ACCESS_NETWORK_STATE)
        public void ProtectedByAccessNetworkState() {
@@ -44,5 +57,5 @@ public class NestedTestService extends Service {
        public void ProtectedByReadSyncSettings() {
            ProtectedByReadSyncSettings_enforcePermission();
        }
    };
    }
}
+60 −3
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@ import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.os.IBinder;
import android.os.PermissionEnforcer;
import android.os.RemoteException;
import android.tests.enforcepermission.INested;
import android.tests.enforcepermission.IProtected;
@@ -36,9 +37,11 @@ public class TestService extends Service {

    private static final String TAG = "EnforcePermission.TestService";
    private volatile ServiceConnection mNestedServiceConnection;
    private IProtected.Stub mBinder;

    @Override
    public void onCreate() {
        mBinder = new Stub(this);
        mNestedServiceConnection = new ServiceConnection();
        Intent intent = new Intent(this, NestedTestService.class);
        boolean bound = bindService(intent, mNestedServiceConnection, Context.BIND_AUTO_CREATE);
@@ -78,7 +81,12 @@ public class TestService extends Service {
        return mBinder;
    }

    private final IProtected.Stub mBinder = new IProtected.Stub() {
    private class Stub extends IProtected.Stub {

        Stub(Context context) {
            super(PermissionEnforcer.fromContext(context));
        }

        @Override
        @EnforcePermission(android.Manifest.permission.INTERNET)
        public void ProtectedByInternet() {
@@ -105,7 +113,6 @@ public class TestService extends Service {
            ProtectedByInternetAndAccessNetworkStateImplicitly_enforcePermission();

            mNestedServiceConnection.get().ProtectedByAccessNetworkState();

        }

        @Override
@@ -115,5 +122,55 @@ public class TestService extends Service {

            mNestedServiceConnection.get().ProtectedByReadSyncSettings();
        }
    };

        @Override
        @EnforcePermission(android.Manifest.permission.TURN_SCREEN_ON)
        public void ProtectedByTurnScreenOn() {
            ProtectedByTurnScreenOn_enforcePermission();
        }

        @Override
        @EnforcePermission(android.Manifest.permission.READ_CONTACTS)
        public void ProtectedByReadContacts() {
            ProtectedByReadContacts_enforcePermission();
        }

        @Override
        @EnforcePermission(android.Manifest.permission.READ_CALENDAR)
        public void ProtectedByReadCalendar() {
            ProtectedByReadCalendar_enforcePermission();
        }

        @Override
        @EnforcePermission(allOf = {
                android.Manifest.permission.INTERNET,
                android.Manifest.permission.VIBRATE})
        public void ProtectedByInternetAndVibrate() {
            ProtectedByInternetAndVibrate_enforcePermission();
        }

        @Override
        @EnforcePermission(allOf = {
                android.Manifest.permission.INTERNET,
                android.Manifest.permission.READ_SYNC_SETTINGS})
        public void ProtectedByInternetAndReadSyncSettings() {
            ProtectedByInternetAndReadSyncSettings_enforcePermission();
        }

        @Override
        @EnforcePermission(anyOf = {
                  android.Manifest.permission.ACCESS_WIFI_STATE,
                  android.Manifest.permission.VIBRATE})
        public void ProtectedByAccessWifiStateOrVibrate() {
            ProtectedByAccessWifiStateOrVibrate_enforcePermission();
        }

        @Override
        @EnforcePermission(anyOf = {
                android.Manifest.permission.INTERNET,
                android.Manifest.permission.VIBRATE})
        public void ProtectedByInternetOrVibrate() {
            ProtectedByInternetOrVibrate_enforcePermission();
        }
    }
}
+12 −1
Original line number Diff line number Diff line
@@ -16,9 +16,20 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="android.tests.enforcepermission.tests">

    <!-- Expected for the tests (not actually used) -->
    <!-- Expected permissions for the tests (not actually used). These
         are granted automatically at runtime by Tradefed (see
         GrantPermissionPreparer). -->
    <!-- normal -->
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.READ_SYNC_SETTINGS" />
    <!-- normal|appops -->
    <uses-permission android:name="android.permission.TURN_SCREEN_ON" />
    <!-- dangerous -->
    <uses-permission android:name="android.permission.READ_CONTACTS" />

    <!-- Used by the tests to activate/deactivate AppOps -->
    <uses-permission android:name="android.permission.MANAGE_APP_OPS_MODES" />
    <uses-permission android:name="android.permission.MANAGE_APPOPS" />

    <queries>
        <package android:name="android.tests.enforcepermission.service" />
Loading