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

Commit 49ec477e authored by Karishma Vakil's avatar Karishma Vakil
Browse files

[DeviceAware] Track op accesses per device in AppOpsService

* Add device id validation checks in AppOpsManager APIs
* Track accesses per persistent device id andbinder token
* Notify all listeners about app ops events with device attribution

Bug: 299330771
Bug: 308202270
Bug: 299333373
Bug: 308716998
Bug: 299331189
Bug: 299331038
Bug: 299330986
Bug: 299330466
Test: atest CtsAppOpsTestCases CtsAppOps2TestCases
Change-Id: I3ea74be2b2dff1fbee70adba25267ecc6f1cb6fa
parent 8177bca2
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -743,7 +743,8 @@ public class AppStateTrackerImpl implements AppStateTracker {

    private final class AppOpsWatcher extends IAppOpsCallback.Stub {
        @Override
        public void opChanged(int op, int uid, String packageName) throws RemoteException {
        public void opChanged(int op, int uid, String packageName,
                String persistentDeviceId) throws RemoteException {
            boolean restricted = false;
            try {
                restricted = mAppOpsService.checkOperation(TARGET_OP,
+2 −2
Original line number Diff line number Diff line
@@ -2026,8 +2026,8 @@ public class AlarmManagerService extends SystemService {
                iAppOpsService.startWatchingMode(AppOpsManager.OP_SCHEDULE_EXACT_ALARM, null,
                        new IAppOpsCallback.Stub() {
                            @Override
                            public void opChanged(int op, int uid, String packageName)
                                    throws RemoteException {
                            public void opChanged(int op, int uid, String packageName,
                                    String persistentDeviceId) throws RemoteException {
                                final int userId = UserHandle.getUserId(uid);
                                if (op != AppOpsManager.OP_SCHEDULE_EXACT_ALARM
                                        || !isExactAlarmChangeEnabled(packageName, userId)) {
+1 −1
Original line number Diff line number Diff line
@@ -227,7 +227,7 @@ public class InternalResourceService extends SystemService {

    private final IAppOpsCallback mApbListener = new IAppOpsCallback.Stub() {
        @Override
        public void opChanged(int op, int uid, String packageName) {
        public void opChanged(int op, int uid, String packageName, String persistentDeviceId) {
            boolean restricted = false;
            try {
                restricted = mAppOpsService.checkOperation(
+2 −1
Original line number Diff line number Diff line
@@ -671,7 +671,8 @@ public class AppStandbyController
                        /*packageName=*/ null,
                        new IAppOpsCallback.Stub() {
                            @Override
                            public void opChanged(int op, int uid, String packageName) {
                            public void opChanged(int op, int uid, String packageName,
                                    String persistentDeviceId) {
                                final int userId = UserHandle.getUserId(uid);
                                synchronized (mSystemExemptionAppOpMode) {
                                    mSystemExemptionAppOpMode.delete(uid);
+2 −0
Original line number Diff line number Diff line
@@ -5084,10 +5084,12 @@ package android.app {
  public static interface AppOpsManager.OnOpActiveChangedListener {
    method public void onOpActiveChanged(@NonNull String, int, @NonNull String, boolean);
    method @FlaggedApi("android.permission.flags.device_aware_permission_apis_enabled") public default void onOpActiveChanged(@NonNull String, int, @NonNull String, @Nullable String, int, boolean, int, int);
  }
  public static interface AppOpsManager.OnOpChangedListener {
    method public void onOpChanged(String, String);
    method @FlaggedApi("android.permission.flags.device_aware_permission_apis_enabled") public default void onOpChanged(@NonNull String, @NonNull String, int, @NonNull String);
  }
  public abstract static class AppOpsManager.OnOpNotedCallback {
Loading