summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Fabian Kozynski <kozynski@google.com> 2019-03-06 15:20:04 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2019-03-06 15:20:04 +0000
commitb4a3fae998ece526ce40a390bde9b86514de90ee (patch)
treec3d3d87e3c95bd2b6b1b2d27810cca507b1cc58e
parent94aeae08c09ba56c0afc3b8f7770ebc85878b1ea (diff)
parent7209010cc1e93720c5f6c44ce910987a410ef196 (diff)
Merge "Fixes NPE in list from PrivacyItemController"
-rw-r--r--packages/SystemUI/src/com/android/systemui/privacy/PrivacyItemController.kt10
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/privacy/PrivacyItemControllerTest.kt5
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