diff options
| -rw-r--r-- | packages/SystemUI/src/com/android/systemui/privacy/PrivacyItemController.kt | 10 | ||||
| -rw-r--r-- | packages/SystemUI/tests/src/com/android/systemui/privacy/PrivacyItemControllerTest.kt | 5 |
2 files changed, 10 insertions, 5 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/privacy/PrivacyItemController.kt b/packages/SystemUI/src/com/android/systemui/privacy/PrivacyItemController.kt index 625eacd7e2a7..1c0974a0c987 100644 --- a/packages/SystemUI/src/com/android/systemui/privacy/PrivacyItemController.kt +++ b/packages/SystemUI/src/com/android/systemui/privacy/PrivacyItemController.kt @@ -61,7 +61,8 @@ class PrivacyItemController @Inject constructor( @VisibleForTesting internal var privacyList = emptyList<PrivacyItem>() - get() = field.toList() // Provides a shallow copy of the list + @Synchronized get() = field.toList() // Returns a shallow copy of the list + @Synchronized set private val userManager = context.getSystemService(UserManager::class.java) private var currentUserIds = emptyList<Int>() @@ -71,7 +72,8 @@ class PrivacyItemController @Inject constructor( private val callbacks = mutableListOf<WeakReference<Callback>>() private val notifyChanges = Runnable { - callbacks.forEach { it.get()?.privacyChanged(privacyList) } + val list = privacyList + callbacks.forEach { it.get()?.privacyChanged(list) } } private val updateListAndNotifyChanges = Runnable { @@ -157,8 +159,10 @@ class PrivacyItemController @Inject constructor( } private fun updatePrivacyList() { - privacyList = currentUserIds.flatMap { appOpsController.getActiveAppOpsForUser(it) } + + val list = currentUserIds.flatMap { appOpsController.getActiveAppOpsForUser(it) } .mapNotNull { toPrivacyItem(it) }.distinct() + privacyList = list } private fun toPrivacyItem(appOpItem: AppOpItem): PrivacyItem? { diff --git a/packages/SystemUI/tests/src/com/android/systemui/privacy/PrivacyItemControllerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/privacy/PrivacyItemControllerTest.kt index 1783d9dacd3b..6033ed26579c 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/privacy/PrivacyItemControllerTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/privacy/PrivacyItemControllerTest.kt @@ -264,7 +264,8 @@ class PrivacyItemControllerTest : SysuiTestCase() { val list = listOf(PrivacyItem(PrivacyType.TYPE_CAMERA, PrivacyApplication("", TEST_UID, mContext))) privacyItemController.privacyList = list - assertEquals(list, privacyItemController.privacyList) - assertTrue(list !== privacyItemController.privacyList) + val privacyList = privacyItemController.privacyList + assertEquals(list, privacyList) + assertTrue(list !== privacyList) } }
\ No newline at end of file |