summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/SystemUI/src/com/android/systemui/appops/AppOpsControllerImpl.java7
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/appops/AppOpsControllerTest.java20
2 files changed, 27 insertions, 0 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/appops/AppOpsControllerImpl.java b/packages/SystemUI/src/com/android/systemui/appops/AppOpsControllerImpl.java
index 3fc6689b2f19..49bd5bd09220 100644
--- a/packages/SystemUI/src/com/android/systemui/appops/AppOpsControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/appops/AppOpsControllerImpl.java
@@ -100,6 +100,13 @@ public class AppOpsControllerImpl implements AppOpsController,
} else {
mAppOps.stopWatchingActive(this);
mAppOps.stopWatchingNoted(this);
+ mBGHandler.removeCallbacksAndMessages(null); // null removes all
+ synchronized (mActiveItems) {
+ mActiveItems.clear();
+ }
+ synchronized (mNotedItems) {
+ mNotedItems.clear();
+ }
}
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/appops/AppOpsControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/appops/AppOpsControllerTest.java
index b9afea155ccf..cc31531c90a7 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/appops/AppOpsControllerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/appops/AppOpsControllerTest.java
@@ -16,7 +16,10 @@
package com.android.systemui.appops;
+import static junit.framework.TestCase.assertFalse;
+
import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyBoolean;
import static org.mockito.ArgumentMatchers.anyInt;
@@ -189,4 +192,21 @@ public class AppOpsControllerTest extends SysuiTestCase {
AppOpsManager.MODE_ALLOWED);
verify(mMockHandler).scheduleRemoval(any(AppOpItem.class), anyLong());
}
+
+ @Test
+ public void noItemsAfterStopListening() {
+ mController.setBGHandler(mMockHandler);
+
+ mController.setListening(true);
+ 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);
+ assertFalse(mController.getActiveAppOps().isEmpty());
+
+ mController.setListening(false);
+
+ verify(mMockHandler).removeCallbacksAndMessages(null);
+ assertTrue(mController.getActiveAppOps().isEmpty());
+ }
}