Merge "Make ListingController always listening" into rvc-dev am: 8cbfa875ef

Change-Id: Ic67d3056d21676f8a3a22a8f6ffdca01b0f00b35
This commit is contained in:
Automerger Merge Worker
2020-03-10 21:14:49 +00:00
2 changed files with 18 additions and 73 deletions

View File

@@ -88,6 +88,8 @@ class ControlsListingControllerImpl @VisibleForTesting constructor(
init {
serviceListing.addCallback(serviceListingCallback)
serviceListing.setListening(true)
serviceListing.reload()
}
override fun changeUser(newUser: UserHandle) {
@@ -95,11 +97,12 @@ class ControlsListingControllerImpl @VisibleForTesting constructor(
callbacks.clear()
availableServices = emptyList()
serviceListing.setListening(false)
serviceListing.removeCallback(serviceListingCallback)
currentUserId = newUser.identifier
val contextForUser = context.createContextAsUser(newUser, 0)
serviceListing = serviceListingBuilder(contextForUser)
serviceListing.addCallback(serviceListingCallback)
serviceListing.setListening(true)
serviceListing.reload()
}
}
@@ -118,12 +121,7 @@ class ControlsListingControllerImpl @VisibleForTesting constructor(
backgroundExecutor.execute {
Log.d(TAG, "Subscribing callback")
callbacks.add(listener)
if (callbacks.size == 1) {
serviceListing.setListening(true)
serviceListing.reload()
} else {
listener.onServicesUpdated(getCurrentServices())
}
listener.onServicesUpdated(getCurrentServices())
}
}
@@ -136,9 +134,6 @@ class ControlsListingControllerImpl @VisibleForTesting constructor(
backgroundExecutor.execute {
Log.d(TAG, "Unsubscribing callback")
callbacks.remove(listener)
if (callbacks.size == 0) {
serviceListing.setListening(false)
}
}
}

View File

@@ -30,7 +30,6 @@ import com.android.systemui.util.concurrency.FakeExecutor
import com.android.systemui.util.time.FakeSystemClock
import org.junit.After
import org.junit.Assert.assertEquals
import org.junit.Assert.assertTrue
import org.junit.Before
import org.junit.Test
import org.junit.runner.RunWith
@@ -38,6 +37,7 @@ import org.mockito.ArgumentCaptor
import org.mockito.Mock
import org.mockito.Mockito
import org.mockito.Mockito.`when`
import org.mockito.Mockito.inOrder
import org.mockito.Mockito.never
import org.mockito.Mockito.reset
import org.mockito.Mockito.verify
@@ -97,75 +97,19 @@ class ControlsListingControllerImplTest : SysuiTestCase() {
executor.runAllReady()
}
@Test
fun testInitialStateListening() {
verify(mockSL).setListening(true)
verify(mockSL).reload()
}
@Test
fun testStartsOnUser() {
assertEquals(user, controller.currentUserId)
}
@Test
fun testNoServices_notListening() {
assertTrue(controller.getCurrentServices().isEmpty())
}
@Test
fun testStartListening_onFirstCallback() {
controller.addCallback(mockCallback)
executor.runAllReady()
verify(mockSL).setListening(true)
}
@Test
fun testStartListening_onlyOnce() {
controller.addCallback(mockCallback)
controller.addCallback(mockCallbackOther)
executor.runAllReady()
verify(mockSL).setListening(true)
}
@Test
fun testStopListening_callbackRemoved() {
controller.addCallback(mockCallback)
executor.runAllReady()
controller.removeCallback(mockCallback)
executor.runAllReady()
verify(mockSL).setListening(false)
}
@Test
fun testStopListening_notWhileRemainingCallbacks() {
controller.addCallback(mockCallback)
controller.addCallback(mockCallbackOther)
executor.runAllReady()
controller.removeCallback(mockCallback)
executor.runAllReady()
verify(mockSL, never()).setListening(false)
}
@Test
fun testReloadOnFirstCallbackAdded() {
controller.addCallback(mockCallback)
executor.runAllReady()
verify(mockSL).reload()
}
@Test
fun testCallbackCalledWhenAdded() {
`when`(mockSL.reload()).then {
serviceListingCallbackCaptor.value.onServicesReloaded(emptyList())
}
controller.addCallback(mockCallback)
executor.runAllReady()
verify(mockCallback).onServicesUpdated(any())
@@ -209,5 +153,11 @@ class ControlsListingControllerImplTest : SysuiTestCase() {
controller.changeUser(UserHandle.of(otherUser))
executor.runAllReady()
assertEquals(otherUser, controller.currentUserId)
val inOrder = inOrder(mockSL)
inOrder.verify(mockSL).setListening(false)
inOrder.verify(mockSL).addCallback(any()) // We add a callback because we replaced the SL
inOrder.verify(mockSL).setListening(true)
inOrder.verify(mockSL).reload()
}
}