Merge "Clear AppOpsController when it stops listening" into qt-dev

This commit is contained in:
TreeHugger Robot
2019-05-31 14:44:10 +00:00
committed by Android (Google) Code Review
2 changed files with 27 additions and 0 deletions

View File

@@ -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();
}
}
}

View File

@@ -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());
}
}