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

Commit ac3abdcd authored by Kai Li's avatar Kai Li Committed by Android (Google) Code Review
Browse files

Merge "Ignore request with no valid SmartSpaceTargets." into main

parents 9a00cb4b c03cb625
Loading
Loading
Loading
Loading
+54 −0
Original line number Diff line number Diff line
@@ -151,6 +151,60 @@ class AmbientCueRepositoryTest : SysuiTestCase() {
            assertThat(isRootViewAttached).isFalse()
        }

    @Test
    fun isRootViewAttached_whenEmptySmartSpaceTargets_true() =
        kosmos.runTest {
            val actions by collectLastValue(underTest.actions)
            val isRootViewAttached by collectLastValue(underTest.isRootViewAttached)
            secureSettingsRepository.setInt(
                AmbientCueRepositoryImpl.AMBIENT_CUE_SETTING,
                AmbientCueRepositoryImpl.OPTED_IN,
            )
            runCurrent()
            verify(smartSpaceSession)
                .addOnTargetsAvailableListener(any(), onTargetsAvailableListenerCaptor.capture())

            taskStackChangeListeners.listenerImpl.onTaskMovedToFront(
                RunningTaskInfo().apply { taskId = TASK_ID }
            )
            advanceTimeBy(DEBOUNCE_DELAY_MS)
            // Attach the root view first.
            onTargetsAvailableListenerCaptor.firstValue.onTargetsAvailable(listOf(autofillTarget))
            advanceUntilIdle()
            onTargetsAvailableListenerCaptor.firstValue.onTargetsAvailable(emptyList())
            advanceUntilIdle()

            // Empty list won't cause the root view to be detached.
            assertThat(isRootViewAttached).isTrue()
        }

   @Test
    fun isRootViewAttached_whenNoValidSmartSpaceTargets_true() =
        kosmos.runTest {
            val actions by collectLastValue(underTest.actions)
            val isRootViewAttached by collectLastValue(underTest.isRootViewAttached)
            secureSettingsRepository.setInt(
                AmbientCueRepositoryImpl.AMBIENT_CUE_SETTING,
                AmbientCueRepositoryImpl.OPTED_IN,
            )
            runCurrent()
            verify(smartSpaceSession)
                .addOnTargetsAvailableListener(any(), onTargetsAvailableListenerCaptor.capture())

            taskStackChangeListeners.listenerImpl.onTaskMovedToFront(
                RunningTaskInfo().apply { taskId = TASK_ID }
            )
            advanceTimeBy(DEBOUNCE_DELAY_MS)
            // Attach the root view first.
            onTargetsAvailableListenerCaptor.firstValue.onTargetsAvailable(listOf(autofillTarget))
            advanceUntilIdle()
            onTargetsAvailableListenerCaptor.firstValue.onTargetsAvailable(listOf(invalidTarget1))
            advanceUntilIdle()

            // Invalid target won't cause the root view to be detached.
            assertThat(isRootViewAttached).isTrue()
        }

    @Test
    fun isRootViewAttached_deactivated_false() =
        kosmos.runTest {
+4 −0
Original line number Diff line number Diff line
@@ -147,6 +147,10 @@ constructor(
                Log.i(TAG, "SmartSpace session created")

                val smartSpaceListener = OnTargetsAvailableListener { targets ->
                    Log.i(TAG, "Receiving SmartSpace targets # ${targets.size}")
                    if (targets.none { it.smartspaceTargetId == AMBIENT_CUE_SURFACE }) {
                        return@OnTargetsAvailableListener
                    }
                    val actions =
                        targets
                            .filter { it.smartspaceTargetId == AMBIENT_CUE_SURFACE }