Loading packages/SystemUI/multivalentTests/src/com/android/systemui/ambientcue/data/repository/AmbientCueRepositoryTest.kt +9 −3 Original line number Diff line number Diff line Loading @@ -54,6 +54,7 @@ import com.android.systemui.navigationbar.NavigationModeController import com.android.systemui.navigationbar.NavigationModeController.ModeChangedListener import com.android.systemui.plugins.ActivityStarter import com.android.systemui.shade.data.repository.fakeFocusedDisplayRepository import com.android.systemui.shared.system.taskStackChangeListeners import com.android.systemui.testKosmos import com.google.common.truth.Truth.assertThat import kotlinx.coroutines.flow.update Loading Loading @@ -93,7 +94,7 @@ class AmbientCueRepositoryTest : SysuiTestCase() { dumpManager = dumpManager, executor = kosmos.fakeExecutor, applicationContext = kosmos.testableContext, focusdDisplayRepository = kosmos.fakeFocusedDisplayRepository, taskStackChangeListeners = kosmos.taskStackChangeListeners, ) @Test Loading @@ -105,7 +106,9 @@ class AmbientCueRepositoryTest : SysuiTestCase() { verify(smartSpaceSession) .addOnTargetsAvailableListener(any(), onTargetsAvailableListenerCaptor.capture()) fakeFocusedDisplayRepository.setGlobalTask(RunningTaskInfo().apply { taskId = TASK_ID }) taskStackChangeListeners.listenerImpl.onTaskMovedToFront( RunningTaskInfo().apply { taskId = TASK_ID } ) advanceTimeBy(DEBOUNCE_DELAY_MS) onTargetsAvailableListenerCaptor.firstValue.onTargetsAvailable(listOf(autofillTarget)) advanceUntilIdle() Loading Loading @@ -197,8 +200,11 @@ class AmbientCueRepositoryTest : SysuiTestCase() { fun globallyFocusedTaskId_whenFocusedTaskChange_taskIdUpdated() = kosmos.runTest { val globallyFocusedTaskId by collectLastValue(underTest.globallyFocusedTaskId) runCurrent() fakeFocusedDisplayRepository.setGlobalTask(RunningTaskInfo().apply { taskId = TASK_ID }) taskStackChangeListeners.listenerImpl.onTaskMovedToFront( RunningTaskInfo().apply { taskId = TASK_ID } ) advanceTimeBy(DEBOUNCE_DELAY_MS) assertThat(globallyFocusedTaskId).isEqualTo(TASK_ID) Loading packages/SystemUI/src/com/android/systemui/ambientcue/data/repository/AmbientCueRepository.kt +15 −4 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package com.android.systemui.ambientcue.data.repository import android.app.ActivityManager.RunningTaskInfo import android.app.ActivityOptions import android.app.ActivityTaskManager import android.app.BroadcastOptions Loading @@ -38,12 +39,13 @@ import com.android.systemui.ambientcue.shared.model.ActionModel import com.android.systemui.dagger.SysUISingleton import com.android.systemui.dagger.qualifiers.Application import com.android.systemui.dagger.qualifiers.Background import com.android.systemui.display.data.repository.FocusedDisplayRepository import com.android.systemui.dump.DumpManager import com.android.systemui.navigationbar.NavigationModeController import com.android.systemui.plugins.ActivityStarter import com.android.systemui.res.R import com.android.systemui.shared.system.QuickStepContract import com.android.systemui.shared.system.TaskStackChangeListener import com.android.systemui.shared.system.TaskStackChangeListeners import com.android.systemui.utils.coroutines.flow.conflatedCallbackFlow import java.io.PrintWriter import java.util.concurrent.Executor Loading Loading @@ -101,8 +103,8 @@ constructor( dumpManager: DumpManager, @Background executor: Executor, @Application applicationContext: Context, focusdDisplayRepository: FocusedDisplayRepository, launcherProxyService: LauncherProxyService, private val taskStackChangeListeners: TaskStackChangeListeners, ) : AmbientCueRepository, Dumpable { init { Loading Loading @@ -263,8 +265,17 @@ constructor( @OptIn(FlowPreview::class) override val globallyFocusedTaskId: StateFlow<Int> = focusdDisplayRepository.globallyFocusedTask .map { it?.taskId ?: INVALID_TASK_ID } conflatedCallbackFlow { val taskListener = object : TaskStackChangeListener { override fun onTaskMovedToFront(runningTaskInfo: RunningTaskInfo) { trySend(runningTaskInfo.taskId) } } taskStackChangeListeners.registerTaskStackListener(taskListener) awaitClose { taskStackChangeListeners.unregisterTaskStackListener(taskListener) } } .distinctUntilChanged() // Filter out focused task quick change. For example, when user clicks ambient cue, the // click event will also be sent to NavBar, so it will cause a quick change of focused Loading Loading
packages/SystemUI/multivalentTests/src/com/android/systemui/ambientcue/data/repository/AmbientCueRepositoryTest.kt +9 −3 Original line number Diff line number Diff line Loading @@ -54,6 +54,7 @@ import com.android.systemui.navigationbar.NavigationModeController import com.android.systemui.navigationbar.NavigationModeController.ModeChangedListener import com.android.systemui.plugins.ActivityStarter import com.android.systemui.shade.data.repository.fakeFocusedDisplayRepository import com.android.systemui.shared.system.taskStackChangeListeners import com.android.systemui.testKosmos import com.google.common.truth.Truth.assertThat import kotlinx.coroutines.flow.update Loading Loading @@ -93,7 +94,7 @@ class AmbientCueRepositoryTest : SysuiTestCase() { dumpManager = dumpManager, executor = kosmos.fakeExecutor, applicationContext = kosmos.testableContext, focusdDisplayRepository = kosmos.fakeFocusedDisplayRepository, taskStackChangeListeners = kosmos.taskStackChangeListeners, ) @Test Loading @@ -105,7 +106,9 @@ class AmbientCueRepositoryTest : SysuiTestCase() { verify(smartSpaceSession) .addOnTargetsAvailableListener(any(), onTargetsAvailableListenerCaptor.capture()) fakeFocusedDisplayRepository.setGlobalTask(RunningTaskInfo().apply { taskId = TASK_ID }) taskStackChangeListeners.listenerImpl.onTaskMovedToFront( RunningTaskInfo().apply { taskId = TASK_ID } ) advanceTimeBy(DEBOUNCE_DELAY_MS) onTargetsAvailableListenerCaptor.firstValue.onTargetsAvailable(listOf(autofillTarget)) advanceUntilIdle() Loading Loading @@ -197,8 +200,11 @@ class AmbientCueRepositoryTest : SysuiTestCase() { fun globallyFocusedTaskId_whenFocusedTaskChange_taskIdUpdated() = kosmos.runTest { val globallyFocusedTaskId by collectLastValue(underTest.globallyFocusedTaskId) runCurrent() fakeFocusedDisplayRepository.setGlobalTask(RunningTaskInfo().apply { taskId = TASK_ID }) taskStackChangeListeners.listenerImpl.onTaskMovedToFront( RunningTaskInfo().apply { taskId = TASK_ID } ) advanceTimeBy(DEBOUNCE_DELAY_MS) assertThat(globallyFocusedTaskId).isEqualTo(TASK_ID) Loading
packages/SystemUI/src/com/android/systemui/ambientcue/data/repository/AmbientCueRepository.kt +15 −4 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package com.android.systemui.ambientcue.data.repository import android.app.ActivityManager.RunningTaskInfo import android.app.ActivityOptions import android.app.ActivityTaskManager import android.app.BroadcastOptions Loading @@ -38,12 +39,13 @@ import com.android.systemui.ambientcue.shared.model.ActionModel import com.android.systemui.dagger.SysUISingleton import com.android.systemui.dagger.qualifiers.Application import com.android.systemui.dagger.qualifiers.Background import com.android.systemui.display.data.repository.FocusedDisplayRepository import com.android.systemui.dump.DumpManager import com.android.systemui.navigationbar.NavigationModeController import com.android.systemui.plugins.ActivityStarter import com.android.systemui.res.R import com.android.systemui.shared.system.QuickStepContract import com.android.systemui.shared.system.TaskStackChangeListener import com.android.systemui.shared.system.TaskStackChangeListeners import com.android.systemui.utils.coroutines.flow.conflatedCallbackFlow import java.io.PrintWriter import java.util.concurrent.Executor Loading Loading @@ -101,8 +103,8 @@ constructor( dumpManager: DumpManager, @Background executor: Executor, @Application applicationContext: Context, focusdDisplayRepository: FocusedDisplayRepository, launcherProxyService: LauncherProxyService, private val taskStackChangeListeners: TaskStackChangeListeners, ) : AmbientCueRepository, Dumpable { init { Loading Loading @@ -263,8 +265,17 @@ constructor( @OptIn(FlowPreview::class) override val globallyFocusedTaskId: StateFlow<Int> = focusdDisplayRepository.globallyFocusedTask .map { it?.taskId ?: INVALID_TASK_ID } conflatedCallbackFlow { val taskListener = object : TaskStackChangeListener { override fun onTaskMovedToFront(runningTaskInfo: RunningTaskInfo) { trySend(runningTaskInfo.taskId) } } taskStackChangeListeners.registerTaskStackListener(taskListener) awaitClose { taskStackChangeListeners.unregisterTaskStackListener(taskListener) } } .distinctUntilChanged() // Filter out focused task quick change. For example, when user clicks ambient cue, the // click event will also be sent to NavBar, so it will cause a quick change of focused Loading