diff options
| -rw-r--r-- | packages/SystemUI/src/com/android/systemui/appops/AppOpsControllerImpl.java | 7 | ||||
| -rw-r--r-- | packages/SystemUI/tests/src/com/android/systemui/appops/AppOpsControllerTest.java | 20 |
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()); + } } |