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

Commit df179c3d authored by Evan Severson's avatar Evan Severson Committed by Android (Google) Code Review
Browse files

Merge changes I32ab8848,If470bc9a

* changes:
  Notify if a sensor is used but privacy is enabled
  Add flags to onOpNoted/Started callbacks
parents f0465425 4bc16d22
Loading
Loading
Loading
Loading
+8 −6
Original line number Diff line number Diff line
@@ -6511,9 +6511,10 @@ public class AppOpsManager {
         * @param code The op code.
         * @param uid The UID performing the operation.
         * @param packageName The package performing the operation.
         * @param flags The flags of this op
         * @param result The result of the note.
         */
        void onOpNoted(int code, int uid, String packageName, int result);
        void onOpNoted(int code, int uid, String packageName, @OpFlags int flags, @Mode int result);
    }

    /**
@@ -6550,9 +6551,10 @@ public class AppOpsManager {
         * @param op The op code.
         * @param uid The UID performing the operation.
         * @param packageName The package performing the operation.
         * @param flags The flags of this op
         * @param result The result of the start.
         */
        void onOpStarted(int op, int uid, String packageName, int result);
        void onOpStarted(int op, int uid, String packageName, @OpFlags int flags, @Mode int result);
    }

    AppOpsManager(Context context, IAppOpsService service) {
@@ -7135,8 +7137,8 @@ public class AppOpsManager {
             }
             cb = new IAppOpsStartedCallback.Stub() {
                 @Override
                 public void opStarted(int op, int uid, String packageName, int mode) {
                     callback.onOpStarted(op, uid, packageName, mode);
                 public void opStarted(int op, int uid, String packageName, int flags, int mode) {
                     callback.onOpStarted(op, uid, packageName, flags, mode);
                 }
             };
             mStartedWatchers.put(callback, cb);
@@ -7202,8 +7204,8 @@ public class AppOpsManager {
            }
            cb = new IAppOpsNotedCallback.Stub() {
                @Override
                public void opNoted(int op, int uid, String packageName, int mode) {
                    callback.onOpNoted(op, uid, packageName, mode);
                public void opNoted(int op, int uid, String packageName, int flags, int mode) {
                    callback.onOpNoted(op, uid, packageName, flags, mode);
                }
            };
            mNotedWatchers.put(callback, cb);
+1 −1
Original line number Diff line number Diff line
@@ -18,5 +18,5 @@ package com.android.internal.app;

// Iterface to observe op note/checks of ops
oneway interface IAppOpsNotedCallback {
    void opNoted(int op, int uid, String packageName, int mode);
    void opNoted(int op, int uid, String packageName, int flags, int mode);
}
+1 −1
Original line number Diff line number Diff line
@@ -18,5 +18,5 @@ package com.android.internal.app;

// Iterface to observe op starts
oneway interface IAppOpsStartedCallback {
    void opStarted(int op, int uid, String packageName, int mode);
    void opStarted(int op, int uid, String packageName, int flags, int mode);
}
+2 −1
Original line number Diff line number Diff line
@@ -438,7 +438,8 @@ public class AppOpsControllerImpl extends BroadcastReceiver implements AppOpsCon
    }

    @Override
    public void onOpNoted(int code, int uid, String packageName, int result) {
    public void onOpNoted(int code, int uid, String packageName,
            @AppOpsManager.OpFlags int flags, @AppOpsManager.Mode int result) {
        if (DEBUG) {
            Log.w(TAG, "Noted op: " + code + " with result "
                    + AppOpsManager.MODE_NAMES[result] + " for package " + packageName);
+15 −13
Original line number Diff line number Diff line
@@ -150,7 +150,7 @@ public class AppOpsControllerTest extends SysuiTestCase {
        mController.onOpActiveChanged(
                AppOpsManager.OP_RECORD_AUDIO, TEST_UID, TEST_PACKAGE_NAME, true);
        mController.onOpNoted(AppOpsManager.OP_FINE_LOCATION, TEST_UID, TEST_PACKAGE_NAME,
                AppOpsManager.MODE_ALLOWED);
                AppOpsManager.OP_FLAG_SELF, AppOpsManager.MODE_ALLOWED);
        mTestableLooper.processAllMessages();
        verify(mCallback).onActiveStateChanged(AppOpsManager.OP_RECORD_AUDIO,
                TEST_UID, TEST_PACKAGE_NAME, true);
@@ -204,7 +204,8 @@ public class AppOpsControllerTest extends SysuiTestCase {
        mController.onOpActiveChanged(AppOpsManager.OP_CAMERA,
                TEST_UID, TEST_PACKAGE_NAME, true);
        mController.onOpNoted(AppOpsManager.OP_FINE_LOCATION,
                TEST_UID, TEST_PACKAGE_NAME, AppOpsManager.MODE_ALLOWED);
                TEST_UID, TEST_PACKAGE_NAME, AppOpsManager.OP_FLAG_SELF,
                AppOpsManager.MODE_ALLOWED);
        assertEquals(3, mController.getActiveAppOps().size());
    }

@@ -215,7 +216,8 @@ public class AppOpsControllerTest extends SysuiTestCase {
        mController.onOpActiveChanged(AppOpsManager.OP_CAMERA,
                TEST_UID_OTHER, TEST_PACKAGE_NAME, true);
        mController.onOpNoted(AppOpsManager.OP_FINE_LOCATION,
                TEST_UID, TEST_PACKAGE_NAME, AppOpsManager.MODE_ALLOWED);
                TEST_UID, TEST_PACKAGE_NAME, AppOpsManager.OP_FLAG_SELF,
                AppOpsManager.MODE_ALLOWED);
        assertEquals(2,
                mController.getActiveAppOpsForUser(UserHandle.getUserId(TEST_UID)).size());
        assertEquals(1,
@@ -246,7 +248,7 @@ public class AppOpsControllerTest extends SysuiTestCase {
    public void opNotedScheduledForRemoval() {
        mController.setBGHandler(mMockHandler);
        mController.onOpNoted(AppOpsManager.OP_FINE_LOCATION, TEST_UID, TEST_PACKAGE_NAME,
                AppOpsManager.MODE_ALLOWED);
                AppOpsManager.OP_FLAG_SELF, AppOpsManager.MODE_ALLOWED);
        verify(mMockHandler).scheduleRemoval(any(AppOpItem.class), anyLong());
    }

@@ -258,7 +260,7 @@ public class AppOpsControllerTest extends SysuiTestCase {
        mController.onOpActiveChanged(AppOpsManager.OP_FINE_LOCATION, TEST_UID, TEST_PACKAGE_NAME,
                true);
        mController.onOpNoted(AppOpsManager.OP_FINE_LOCATION, TEST_UID, TEST_PACKAGE_NAME,
                AppOpsManager.MODE_ALLOWED);
                AppOpsManager.OP_FLAG_SELF, AppOpsManager.MODE_ALLOWED);
        assertFalse(mController.getActiveAppOps().isEmpty());

        mController.setListening(false);
@@ -272,9 +274,9 @@ public class AppOpsControllerTest extends SysuiTestCase {
        mController.setBGHandler(mMockHandler);

        mController.onOpNoted(AppOpsManager.OP_FINE_LOCATION, TEST_UID, TEST_PACKAGE_NAME,
                AppOpsManager.MODE_ALLOWED);
                AppOpsManager.OP_FLAG_SELF, AppOpsManager.MODE_ALLOWED);
        mController.onOpNoted(AppOpsManager.OP_FINE_LOCATION, TEST_UID, TEST_PACKAGE_NAME,
                AppOpsManager.MODE_ALLOWED);
                AppOpsManager.OP_FLAG_SELF, AppOpsManager.MODE_ALLOWED);

        // Only one post to notify subscribers
        verify(mMockHandler, times(1)).post(any());
@@ -288,9 +290,9 @@ public class AppOpsControllerTest extends SysuiTestCase {
        mController.setBGHandler(mMockHandler);

        mController.onOpNoted(AppOpsManager.OP_FINE_LOCATION, TEST_UID, TEST_PACKAGE_NAME,
                AppOpsManager.MODE_ALLOWED);
                AppOpsManager.OP_FLAG_SELF, AppOpsManager.MODE_ALLOWED);
        mController.onOpNoted(AppOpsManager.OP_FINE_LOCATION, TEST_UID, TEST_PACKAGE_NAME,
                AppOpsManager.MODE_ALLOWED);
                AppOpsManager.OP_FLAG_SELF, AppOpsManager.MODE_ALLOWED);

        // Only one post to notify subscribers
        verify(mMockHandler, times(2)).scheduleRemoval(any(), anyLong());
@@ -308,7 +310,7 @@ public class AppOpsControllerTest extends SysuiTestCase {
                AppOpsManager.OP_FINE_LOCATION, TEST_UID, TEST_PACKAGE_NAME, true);

        mController.onOpNoted(AppOpsManager.OP_FINE_LOCATION, TEST_UID, TEST_PACKAGE_NAME,
                AppOpsManager.MODE_ALLOWED);
                AppOpsManager.OP_FLAG_SELF, AppOpsManager.MODE_ALLOWED);

        // Check that we "scheduled" the removal. Don't actually schedule until we are ready to
        // process messages at a later time.
@@ -337,7 +339,7 @@ public class AppOpsControllerTest extends SysuiTestCase {
        mController.addCallback(new int[]{AppOpsManager.OP_FINE_LOCATION}, mCallback);

        mController.onOpNoted(AppOpsManager.OP_FINE_LOCATION, TEST_UID, TEST_PACKAGE_NAME,
                AppOpsManager.MODE_ALLOWED);
                AppOpsManager.OP_FLAG_SELF, AppOpsManager.MODE_ALLOWED);

        mController.onOpActiveChanged(
                AppOpsManager.OP_FINE_LOCATION, TEST_UID, TEST_PACKAGE_NAME, true);
@@ -366,7 +368,7 @@ public class AppOpsControllerTest extends SysuiTestCase {
        mController.addCallback(new int[]{AppOpsManager.OP_FINE_LOCATION}, mCallback);

        mController.onOpNoted(AppOpsManager.OP_FINE_LOCATION, TEST_UID, TEST_PACKAGE_NAME,
                AppOpsManager.MODE_ALLOWED);
                AppOpsManager.OP_FLAG_SELF, AppOpsManager.MODE_ALLOWED);

        mController.onOpActiveChanged(
                AppOpsManager.OP_FINE_LOCATION, TEST_UID, TEST_PACKAGE_NAME, true);
@@ -384,7 +386,7 @@ public class AppOpsControllerTest extends SysuiTestCase {
                AppOpsManager.OP_FINE_LOCATION, TEST_UID, TEST_PACKAGE_NAME, true);

        mController.onOpNoted(AppOpsManager.OP_FINE_LOCATION, TEST_UID, TEST_PACKAGE_NAME,
                AppOpsManager.MODE_ALLOWED);
                AppOpsManager.OP_FLAG_SELF, AppOpsManager.MODE_ALLOWED);

        mTestableLooper.processAllMessages();
        verify(mCallback).onActiveStateChanged(
Loading