Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 94417e0f authored by Automerger Merge Worker's avatar Automerger Merge Worker
Browse files

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

Change-Id: Ic67d3056d21676f8a3a22a8f6ffdca01b0f00b35
parents 43f41fe0 8cbfa875
Loading
Loading
Loading
Loading
+5 −10
Original line number Diff line number Diff line
@@ -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,14 +121,9 @@ 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())
        }
    }
    }

    /**
     * Removes a callback from this controller.
@@ -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)
            }
        }
    }

+11 −61
Original line number Diff line number Diff line
@@ -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
@@ -98,74 +98,18 @@ class ControlsListingControllerImplTest : SysuiTestCase() {
    }

    @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()

    fun testInitialStateListening() {
        verify(mockSL).setListening(true)
        verify(mockSL).reload()
    }

    @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()
    fun testStartsOnUser() {
        assertEquals(user, controller.currentUserId)
    }

    @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()
    }
}
 No newline at end of file