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

Commit 5584b2b2 authored by Lingyu Feng's avatar Lingyu Feng
Browse files

Split DisplayTopologyCoordinatorTest#addAndRemoveNonDefaultDisplay_

This CL is a followup CL of ag/33101767
This CLs splits addAndRemoveNonDefaultDisplay_ tests into
addNonDefaultDisplay_ and removeNonDefaultDisplay_ test cases
separately.

Bug: 407512389
Test: DisplayTopologyCoordinatorTest
Flag: com.android.server.display.feature.flags.enable_default_display_in_topology_switch
Change-Id: I0e046b3693a49c904407cec38c80e61f47960175
parent d42d9769
Loading
Loading
Loading
Loading
+93 −60
Original line number Diff line number Diff line
@@ -205,6 +205,57 @@ class DisplayTopologyCoordinatorTest {
        verify(mockTopologyStore, never()).restoreTopology(any())
    }

    @Test
    fun addNonDefaultDisplay_defaultDisplayInTopologySwitchDisabled() {
        whenever(mockFlags.isDefaultDisplayInTopologySwitchEnabled()).thenReturn(true)
        whenever(mockShouldIncludeDefaultDisplayInTopology()).thenReturn(false)

        // Add default display and a non-default display into the topology
        whenever(mockTopology.hasMultipleDisplays()).thenReturn(true)
        displayInfos[0].displayId = Display.DEFAULT_DISPLAY
        displayInfos[0].type = Display.TYPE_INTERNAL
        coordinator.onDisplayAdded(displayInfos[0])
        displayInfos[1].displayId = Display.DEFAULT_DISPLAY + 1
        displayInfos[1].type = Display.TYPE_EXTERNAL
        coordinator.onDisplayAdded(displayInfos[1])

        verify(mockTopology).removeDisplay(displayInfos[0].displayId)
    }

    @Test
    fun addNonDefaultDisplay_defaultDisplayInTopologySwitchEnabled() {
        whenever(mockFlags.isDefaultDisplayInTopologySwitchEnabled()).thenReturn(true)
        whenever(mockShouldIncludeDefaultDisplayInTopology()).thenReturn(true)

        // Add default display and a non-default display into the topology
        whenever(mockTopology.hasMultipleDisplays()).thenReturn(true)
        displayInfos[0].displayId = Display.DEFAULT_DISPLAY
        displayInfos[0].type = Display.TYPE_INTERNAL
        coordinator.onDisplayAdded(displayInfos[0])
        displayInfos[1].displayId = Display.DEFAULT_DISPLAY + 1
        displayInfos[1].type = Display.TYPE_EXTERNAL
        coordinator.onDisplayAdded(displayInfos[1])

        verify(mockTopology, never()).removeDisplay(anyInt())
    }

    @Test
    fun addNonDefaultDisplay_flagDisabled() {
        whenever(mockFlags.isDefaultDisplayInTopologySwitchEnabled()).thenReturn(false)
        whenever(mockShouldIncludeDefaultDisplayInTopology()).thenReturn(false)

        // Add default display and a non-default display into the topology
        whenever(mockTopology.hasMultipleDisplays()).thenReturn(true)
        displayInfos[0].displayId = Display.DEFAULT_DISPLAY
        displayInfos[0].type = Display.TYPE_INTERNAL
        coordinator.onDisplayAdded(displayInfos[0])
        displayInfos[1].displayId = Display.DEFAULT_DISPLAY + 1
        displayInfos[1].type = Display.TYPE_EXTERNAL
        coordinator.onDisplayAdded(displayInfos[1])

        verify(mockTopology, never()).removeDisplay(anyInt())
    }

    @Test
    fun updateDisplay() {
        whenever(mockTopology.updateDisplay(eq(displayInfos[0].displayId),
@@ -347,50 +398,17 @@ class DisplayTopologyCoordinatorTest {
    }

    @Test
    fun getTopology_copy() {
        assertThat(coordinator.topology).isEqualTo(mockTopologyCopy)
    }

    @Test
    fun setTopology_normalize() {
        val topology = mock<DisplayTopology>()
        val topologyCopy = mock<DisplayTopology>()
        val topologyGraph = mock<DisplayTopologyGraph>()
        whenever(topology.copy()).thenReturn(topologyCopy)
        whenever(topologyCopy.getGraph()).thenReturn(topologyGraph)
        whenever(mockTopologyStore.saveTopology(topology)).thenReturn(true)

        coordinator.topology = topology

        verify(topology).normalize()
        verify(mockTopologyChangedCallback).invoke(
            android.util.Pair(
                topologyCopy,
                topologyGraph
            )
        )
        verify(mockTopologyStore).saveTopology(topology)
        verify(mockTopologySavedCallback).invoke()
    }

    @Test
    fun addAndRemoveNonDefaultDisplay_defaultDisplayInTopologySwitchDisabled() {
    fun removeNonDefaultDisplay_defaultDisplayInTopologySwitchDisabled() {
        whenever(mockFlags.isDefaultDisplayInTopologySwitchEnabled()).thenReturn(true)
        whenever(mockShouldIncludeDefaultDisplayInTopology()).thenReturn(false)

        // Add default display and a non-default display into the topology
        whenever(mockTopology.hasMultipleDisplays()).thenReturn(true)
        // Set up the default display
        displayInfos[0].displayId = Display.DEFAULT_DISPLAY
        displayInfos[0].type = Display.TYPE_INTERNAL
        coordinator.onDisplayAdded(displayInfos[0])
        displayInfos[1].displayId = Display.DEFAULT_DISPLAY + 1
        displayInfos[0].type = Display.TYPE_EXTERNAL
        coordinator.onDisplayAdded(displayInfos[1])

        verify(mockTopology).removeDisplay(displayInfos[0].displayId)

        // Remove the non-default display from the topology
        clearInvocations(mockTopology)
        // Remove a non-default display from the topology
        displayInfos[1].displayId = Display.DEFAULT_DISPLAY + 1
        displayInfos[1].type = Display.TYPE_EXTERNAL
        whenever(mockTopology.removeDisplay(displayInfos[1].displayId)).thenReturn(true)
        whenever(mockTopology.isEmpty()).thenReturn(true)
        coordinator.onDisplayRemoved(displayInfos[1].displayId)
@@ -400,23 +418,17 @@ class DisplayTopologyCoordinatorTest {
    }

    @Test
    fun addAndRemoveNonDefaultDisplay_defaultDisplayInTopologySwitchEnabled() {
    fun removeNonDefaultDisplay_defaultDisplayInTopologySwitchEnabled() {
        whenever(mockFlags.isDefaultDisplayInTopologySwitchEnabled()).thenReturn(true)
        whenever(mockShouldIncludeDefaultDisplayInTopology()).thenReturn(true)

        // Add default display and a non-default display into the topology
        whenever(mockTopology.hasMultipleDisplays()).thenReturn(true)
        // Set up the default display
        displayInfos[0].displayId = Display.DEFAULT_DISPLAY
        displayInfos[0].type = Display.TYPE_INTERNAL
        coordinator.onDisplayAdded(displayInfos[0])
        displayInfos[1].displayId = Display.DEFAULT_DISPLAY + 1
        displayInfos[0].type = Display.TYPE_EXTERNAL
        coordinator.onDisplayAdded(displayInfos[1])

        verify(mockTopology, never()).removeDisplay(anyInt())

        // Remove the non-default display from the topology
        clearInvocations(mockTopology)
        // Remove a non-default display from the topology
        displayInfos[1].displayId = Display.DEFAULT_DISPLAY + 1
        displayInfos[1].type = Display.TYPE_EXTERNAL
        whenever(mockTopology.removeDisplay(displayInfos[1].displayId)).thenReturn(true)
        coordinator.onDisplayRemoved(displayInfos[1].displayId)

@@ -424,26 +436,47 @@ class DisplayTopologyCoordinatorTest {
    }

    @Test
    fun addAndRemoveNonDefaultDisplay_flagDisabled() {
    fun removeNonDefaultDisplay_flagDisabled() {
        whenever(mockFlags.isDefaultDisplayInTopologySwitchEnabled()).thenReturn(false)
        whenever(mockShouldIncludeDefaultDisplayInTopology()).thenReturn(false)

        // Add default display and a non-default display into the topology
        whenever(mockTopology.hasMultipleDisplays()).thenReturn(true)
        // Set up the default display
        displayInfos[0].displayId = Display.DEFAULT_DISPLAY
        displayInfos[0].type = Display.TYPE_INTERNAL
        coordinator.onDisplayAdded(displayInfos[0])
        displayInfos[1].displayId = Display.DEFAULT_DISPLAY + 1
        displayInfos[0].type = Display.TYPE_EXTERNAL
        coordinator.onDisplayAdded(displayInfos[1])

        verify(mockTopology, never()).removeDisplay(anyInt())

        // Remove the non-default display from the topology
        clearInvocations(mockTopology)
        // Remove a non-default display from the topology
        displayInfos[1].displayId = Display.DEFAULT_DISPLAY + 1
        displayInfos[1].type = Display.TYPE_EXTERNAL
        whenever(mockTopology.removeDisplay(displayInfos[1].displayId)).thenReturn(true)
        coordinator.onDisplayRemoved(displayInfos[1].displayId)

        verify(mockTopology, never()).addDisplay(anyInt(), anyInt(), anyInt(), anyInt())
    }

    @Test
    fun getTopology_copy() {
        assertThat(coordinator.topology).isEqualTo(mockTopologyCopy)
    }

    @Test
    fun setTopology_normalize() {
        val topology = mock<DisplayTopology>()
        val topologyCopy = mock<DisplayTopology>()
        val topologyGraph = mock<DisplayTopologyGraph>()
        whenever(topology.copy()).thenReturn(topologyCopy)
        whenever(topologyCopy.getGraph()).thenReturn(topologyGraph)
        whenever(mockTopologyStore.saveTopology(topology)).thenReturn(true)

        coordinator.topology = topology

        verify(topology).normalize()
        verify(mockTopologyChangedCallback).invoke(
            android.util.Pair(
                topologyCopy,
                topologyGraph
            )
        )
        verify(mockTopologyStore).saveTopology(topology)
        verify(mockTopologySavedCallback).invoke()
    }
}