Loading packages/SystemUI/src/com/android/systemui/broadcast/BroadcastDispatcher.kt +8 −2 Original line number Diff line number Diff line Loading @@ -46,7 +46,7 @@ private const val MSG_ADD_RECEIVER = 0 private const val MSG_REMOVE_RECEIVER = 1 private const val MSG_REMOVE_RECEIVER_FOR_USER = 2 private const val TAG = "BroadcastDispatcher" private const val DEBUG = false private const val DEBUG = true /** * SystemUI master Broadcast Dispatcher. Loading Loading @@ -147,7 +147,13 @@ open class BroadcastDispatcher @Inject constructor ( when (msg.what) { MSG_ADD_RECEIVER -> { val data = msg.obj as ReceiverData val userId = data.user.identifier // If the receiver asked to be registered under the current user, we register // under the actual current user. val userId = if (data.user.identifier == UserHandle.USER_CURRENT) { context.userId } else { data.user.identifier } if (userId < UserHandle.USER_ALL) { if (DEBUG) Log.w(TAG, "Register receiver for invalid user: $userId") return Loading packages/SystemUI/tests/src/com/android/systemui/broadcast/BroadcastDispatcherTest.kt +18 −1 Original line number Diff line number Diff line Loading @@ -93,7 +93,7 @@ class BroadcastDispatcherTest : SysuiTestCase() { // These should be valid filters `when`(intentFilter.countActions()).thenReturn(1) `when`(intentFilterOther.countActions()).thenReturn(1) `when`(mockContext.user).thenReturn(user0) setUserMock(mockContext, user0) } @Test Loading Loading @@ -140,6 +140,18 @@ class BroadcastDispatcherTest : SysuiTestCase() { verify(mockUBRUser1, never()).unregisterReceiver(broadcastReceiver) } @Test fun testRegisterCurrentAsActualUser() { setUserMock(mockContext, user1) broadcastDispatcher.registerReceiver(broadcastReceiver, intentFilter, mockHandler, UserHandle.CURRENT) testableLooper.processAllMessages() verify(mockUBRUser1).registerReceiver(capture(argumentCaptor)) assertSame(broadcastReceiver, argumentCaptor.value.receiver) } @Test(expected = IllegalArgumentException::class) fun testFilterMustContainActions() { val testFilter = IntentFilter() Loading Loading @@ -186,6 +198,11 @@ class BroadcastDispatcherTest : SysuiTestCase() { broadcastDispatcher.registerReceiver(broadcastReceiver, testFilter) } private fun setUserMock(mockContext: Context, user: UserHandle) { `when`(mockContext.user).thenReturn(user) `when`(mockContext.userId).thenReturn(user.identifier) } private class TestBroadcastDispatcher( context: Context, mainHandler: Handler, Loading Loading
packages/SystemUI/src/com/android/systemui/broadcast/BroadcastDispatcher.kt +8 −2 Original line number Diff line number Diff line Loading @@ -46,7 +46,7 @@ private const val MSG_ADD_RECEIVER = 0 private const val MSG_REMOVE_RECEIVER = 1 private const val MSG_REMOVE_RECEIVER_FOR_USER = 2 private const val TAG = "BroadcastDispatcher" private const val DEBUG = false private const val DEBUG = true /** * SystemUI master Broadcast Dispatcher. Loading Loading @@ -147,7 +147,13 @@ open class BroadcastDispatcher @Inject constructor ( when (msg.what) { MSG_ADD_RECEIVER -> { val data = msg.obj as ReceiverData val userId = data.user.identifier // If the receiver asked to be registered under the current user, we register // under the actual current user. val userId = if (data.user.identifier == UserHandle.USER_CURRENT) { context.userId } else { data.user.identifier } if (userId < UserHandle.USER_ALL) { if (DEBUG) Log.w(TAG, "Register receiver for invalid user: $userId") return Loading
packages/SystemUI/tests/src/com/android/systemui/broadcast/BroadcastDispatcherTest.kt +18 −1 Original line number Diff line number Diff line Loading @@ -93,7 +93,7 @@ class BroadcastDispatcherTest : SysuiTestCase() { // These should be valid filters `when`(intentFilter.countActions()).thenReturn(1) `when`(intentFilterOther.countActions()).thenReturn(1) `when`(mockContext.user).thenReturn(user0) setUserMock(mockContext, user0) } @Test Loading Loading @@ -140,6 +140,18 @@ class BroadcastDispatcherTest : SysuiTestCase() { verify(mockUBRUser1, never()).unregisterReceiver(broadcastReceiver) } @Test fun testRegisterCurrentAsActualUser() { setUserMock(mockContext, user1) broadcastDispatcher.registerReceiver(broadcastReceiver, intentFilter, mockHandler, UserHandle.CURRENT) testableLooper.processAllMessages() verify(mockUBRUser1).registerReceiver(capture(argumentCaptor)) assertSame(broadcastReceiver, argumentCaptor.value.receiver) } @Test(expected = IllegalArgumentException::class) fun testFilterMustContainActions() { val testFilter = IntentFilter() Loading Loading @@ -186,6 +198,11 @@ class BroadcastDispatcherTest : SysuiTestCase() { broadcastDispatcher.registerReceiver(broadcastReceiver, testFilter) } private fun setUserMock(mockContext: Context, user: UserHandle) { `when`(mockContext.user).thenReturn(user) `when`(mockContext.userId).thenReturn(user.identifier) } private class TestBroadcastDispatcher( context: Context, mainHandler: Handler, Loading