diff --git a/packages/SystemUI/src/com/android/systemui/privacy/PrivacyItemController.kt b/packages/SystemUI/src/com/android/systemui/privacy/PrivacyItemController.kt index 625eacd7e2a76..1c0974a0c9879 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() - 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() @@ -71,7 +72,8 @@ class PrivacyItemController @Inject constructor( private val callbacks = mutableListOf>() 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 1783d9dacd3b7..6033ed26579c2 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