Loading packages/SystemUI/multivalentTests/src/com/android/systemui/ambientcue/data/repository/AmbientCueRepositoryTest.kt +3 −0 Original line number Diff line number Diff line Loading @@ -43,6 +43,7 @@ import com.android.systemui.ambientcue.data.repository.AmbientCueRepositoryImpl. import com.android.systemui.ambientcue.data.repository.AmbientCueRepositoryImpl.Companion.EXTRA_AUTOFILL_ID import com.android.systemui.ambientcue.shared.model.ActionModel import com.android.systemui.concurrency.fakeExecutor import com.android.systemui.dump.DumpManager import com.android.systemui.kosmos.advanceTimeBy import com.android.systemui.kosmos.advanceUntilIdle import com.android.systemui.kosmos.backgroundScope Loading Loading @@ -72,6 +73,7 @@ class AmbientCueRepositoryTest : SysuiTestCase() { private val autofillManager = mock<AutofillManager>() private val activityStarter = mock<ActivityStarter>() private val launcherProxyService = mock<LauncherProxyService>() private val dumpManager = mock<DumpManager>() private val navigationModeController = mock<NavigationModeController>() private val smartSpaceManager = mock<SmartspaceManager>() { Loading @@ -88,6 +90,7 @@ class AmbientCueRepositoryTest : SysuiTestCase() { activityStarter = activityStarter, launcherProxyService = launcherProxyService, navigationModeController = navigationModeController, dumpManager = dumpManager, executor = kosmos.fakeExecutor, applicationContext = kosmos.testableContext, focusdDisplayRepository = kosmos.fakeFocusedDisplayRepository, Loading packages/SystemUI/src/com/android/systemui/ambientcue/data/repository/AmbientCueRepository.kt +18 −1 Original line number Diff line number Diff line Loading @@ -31,6 +31,7 @@ import android.view.autofill.AutofillId import android.view.autofill.AutofillManager import androidx.annotation.VisibleForTesting import androidx.tracing.trace import com.android.systemui.Dumpable import com.android.systemui.LauncherProxyService import com.android.systemui.LauncherProxyService.LauncherProxyListener import com.android.systemui.ambientcue.shared.model.ActionModel Loading @@ -38,11 +39,13 @@ 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.utils.coroutines.flow.conflatedCallbackFlow import java.io.PrintWriter import java.util.concurrent.Executor import javax.inject.Inject import kotlinx.coroutines.CoroutineScope Loading Loading @@ -95,11 +98,12 @@ constructor( private val autofillManager: AutofillManager?, private val activityStarter: ActivityStarter, private val navigationModeController: NavigationModeController, dumpManager: DumpManager, @Background executor: Executor, @Application applicationContext: Context, focusdDisplayRepository: FocusedDisplayRepository, launcherProxyService: LauncherProxyService, ) : AmbientCueRepository { ) : AmbientCueRepository, Dumpable { init { val callback = Loading @@ -113,6 +117,7 @@ constructor( } } launcherProxyService.addCallback(callback) dumpManager.registerNormalDumpable(this) } override val actions: StateFlow<List<ActionModel>> = Loading Loading @@ -288,6 +293,18 @@ constructor( initialValue = false, ) override fun dump(pw: PrintWriter, args: Array<out String>) { pw.println("isRootViewAttached: ${isRootViewAttached.value}") pw.println("targetTaskId: ${targetTaskId.value}") pw.println("globallyFocusedTaskId: ${globallyFocusedTaskId.value}") pw.println("isDeactivated: ${isDeactivated.value}") pw.println("isImeVisible: ${isImeVisible.value}") pw.println("recentsButtonPosition: ${recentsButtonPosition.value}") pw.println("isTaskBarVisible: ${isTaskBarVisible.value}") pw.println("isGestureNav: ${isGestureNav.value}") pw.println("actions: ${actions.value}") } companion object { // Surface that PCC wants to push cards into @VisibleForTesting const val AMBIENT_CUE_SURFACE = "ambientcue" Loading packages/SystemUI/src/com/android/systemui/ambientcue/ui/viewmodel/AmbientCueViewModel.kt +24 −1 Original line number Diff line number Diff line Loading @@ -22,12 +22,17 @@ import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.setValue import androidx.compose.ui.graphics.toComposeRect import com.android.app.tracing.coroutines.coroutineScopeTraced import com.android.systemui.Dumpable import com.android.systemui.ambientcue.domain.interactor.AmbientCueInteractor import com.android.systemui.dump.DumpManager import com.android.systemui.lifecycle.ExclusiveActivatable import com.android.systemui.lifecycle.Hydrator import com.android.systemui.util.kotlin.launchAndDispose import dagger.assisted.AssistedFactory import dagger.assisted.AssistedInject import java.io.PrintWriter import kotlin.time.Duration.Companion.seconds import kotlinx.coroutines.DisposableHandle import kotlinx.coroutines.Job import kotlinx.coroutines.awaitCancellation import kotlinx.coroutines.delay Loading @@ -38,7 +43,11 @@ import kotlinx.coroutines.launch class AmbientCueViewModel @AssistedInject constructor(private val ambientCueInteractor: AmbientCueInteractor) : ExclusiveActivatable() { constructor( private val ambientCueInteractor: AmbientCueInteractor, private val dumpManager: DumpManager, ) : ExclusiveActivatable(), Dumpable { private val hydrator = Hydrator("AmbientCueViewModel.hydrator") private val isRootViewAttached: Boolean by Loading Loading @@ -159,10 +168,24 @@ constructor(private val ambientCueInteractor: AmbientCueInteractor) : ExclusiveA delayAndDeactivateCueBar() } } launchAndDispose { dumpManager.registerNormalDumpable(TAG, this@AmbientCueViewModel) DisposableHandle { dumpManager.unregisterDumpable(TAG) } } awaitCancellation() } } override fun dump(pw: PrintWriter, args: Array<out String>) { pw.println("isRootViewAttached: $isRootViewAttached") pw.println("isImeVisible: $isImeVisible") pw.println("isVisible: $isVisible") pw.println("isExpanded: $isExpanded") pw.println("pillStyle: $pillStyle") pw.println("deactivateCueBarJob: $deactivateCueBarJob") pw.println("actions: $actions") } @AssistedFactory interface Factory { fun create(): AmbientCueViewModel Loading packages/SystemUI/tests/utils/src/com/android/systemui/ambientcue/ui/viewmodel/AmbientCueViewModelKosmos.kt +4 −1 Original line number Diff line number Diff line Loading @@ -17,10 +17,13 @@ package com.android.systemui.ambientcue.ui.viewmodel import com.android.systemui.ambientcue.domain.interactor.ambientCueInteractor import com.android.systemui.dump.dumpManager import com.android.systemui.kosmos.Kosmos import com.android.systemui.kosmos.Kosmos.Fixture private val Kosmos.ambientCueViewModel by Fixture { AmbientCueViewModel(ambientCueInteractor) } private val Kosmos.ambientCueViewModel by Fixture { AmbientCueViewModel(ambientCueInteractor, dumpManager) } val Kosmos.ambientCueViewModelFactory by Fixture { object : AmbientCueViewModel.Factory { Loading Loading
packages/SystemUI/multivalentTests/src/com/android/systemui/ambientcue/data/repository/AmbientCueRepositoryTest.kt +3 −0 Original line number Diff line number Diff line Loading @@ -43,6 +43,7 @@ import com.android.systemui.ambientcue.data.repository.AmbientCueRepositoryImpl. import com.android.systemui.ambientcue.data.repository.AmbientCueRepositoryImpl.Companion.EXTRA_AUTOFILL_ID import com.android.systemui.ambientcue.shared.model.ActionModel import com.android.systemui.concurrency.fakeExecutor import com.android.systemui.dump.DumpManager import com.android.systemui.kosmos.advanceTimeBy import com.android.systemui.kosmos.advanceUntilIdle import com.android.systemui.kosmos.backgroundScope Loading Loading @@ -72,6 +73,7 @@ class AmbientCueRepositoryTest : SysuiTestCase() { private val autofillManager = mock<AutofillManager>() private val activityStarter = mock<ActivityStarter>() private val launcherProxyService = mock<LauncherProxyService>() private val dumpManager = mock<DumpManager>() private val navigationModeController = mock<NavigationModeController>() private val smartSpaceManager = mock<SmartspaceManager>() { Loading @@ -88,6 +90,7 @@ class AmbientCueRepositoryTest : SysuiTestCase() { activityStarter = activityStarter, launcherProxyService = launcherProxyService, navigationModeController = navigationModeController, dumpManager = dumpManager, executor = kosmos.fakeExecutor, applicationContext = kosmos.testableContext, focusdDisplayRepository = kosmos.fakeFocusedDisplayRepository, Loading
packages/SystemUI/src/com/android/systemui/ambientcue/data/repository/AmbientCueRepository.kt +18 −1 Original line number Diff line number Diff line Loading @@ -31,6 +31,7 @@ import android.view.autofill.AutofillId import android.view.autofill.AutofillManager import androidx.annotation.VisibleForTesting import androidx.tracing.trace import com.android.systemui.Dumpable import com.android.systemui.LauncherProxyService import com.android.systemui.LauncherProxyService.LauncherProxyListener import com.android.systemui.ambientcue.shared.model.ActionModel Loading @@ -38,11 +39,13 @@ 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.utils.coroutines.flow.conflatedCallbackFlow import java.io.PrintWriter import java.util.concurrent.Executor import javax.inject.Inject import kotlinx.coroutines.CoroutineScope Loading Loading @@ -95,11 +98,12 @@ constructor( private val autofillManager: AutofillManager?, private val activityStarter: ActivityStarter, private val navigationModeController: NavigationModeController, dumpManager: DumpManager, @Background executor: Executor, @Application applicationContext: Context, focusdDisplayRepository: FocusedDisplayRepository, launcherProxyService: LauncherProxyService, ) : AmbientCueRepository { ) : AmbientCueRepository, Dumpable { init { val callback = Loading @@ -113,6 +117,7 @@ constructor( } } launcherProxyService.addCallback(callback) dumpManager.registerNormalDumpable(this) } override val actions: StateFlow<List<ActionModel>> = Loading Loading @@ -288,6 +293,18 @@ constructor( initialValue = false, ) override fun dump(pw: PrintWriter, args: Array<out String>) { pw.println("isRootViewAttached: ${isRootViewAttached.value}") pw.println("targetTaskId: ${targetTaskId.value}") pw.println("globallyFocusedTaskId: ${globallyFocusedTaskId.value}") pw.println("isDeactivated: ${isDeactivated.value}") pw.println("isImeVisible: ${isImeVisible.value}") pw.println("recentsButtonPosition: ${recentsButtonPosition.value}") pw.println("isTaskBarVisible: ${isTaskBarVisible.value}") pw.println("isGestureNav: ${isGestureNav.value}") pw.println("actions: ${actions.value}") } companion object { // Surface that PCC wants to push cards into @VisibleForTesting const val AMBIENT_CUE_SURFACE = "ambientcue" Loading
packages/SystemUI/src/com/android/systemui/ambientcue/ui/viewmodel/AmbientCueViewModel.kt +24 −1 Original line number Diff line number Diff line Loading @@ -22,12 +22,17 @@ import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.setValue import androidx.compose.ui.graphics.toComposeRect import com.android.app.tracing.coroutines.coroutineScopeTraced import com.android.systemui.Dumpable import com.android.systemui.ambientcue.domain.interactor.AmbientCueInteractor import com.android.systemui.dump.DumpManager import com.android.systemui.lifecycle.ExclusiveActivatable import com.android.systemui.lifecycle.Hydrator import com.android.systemui.util.kotlin.launchAndDispose import dagger.assisted.AssistedFactory import dagger.assisted.AssistedInject import java.io.PrintWriter import kotlin.time.Duration.Companion.seconds import kotlinx.coroutines.DisposableHandle import kotlinx.coroutines.Job import kotlinx.coroutines.awaitCancellation import kotlinx.coroutines.delay Loading @@ -38,7 +43,11 @@ import kotlinx.coroutines.launch class AmbientCueViewModel @AssistedInject constructor(private val ambientCueInteractor: AmbientCueInteractor) : ExclusiveActivatable() { constructor( private val ambientCueInteractor: AmbientCueInteractor, private val dumpManager: DumpManager, ) : ExclusiveActivatable(), Dumpable { private val hydrator = Hydrator("AmbientCueViewModel.hydrator") private val isRootViewAttached: Boolean by Loading Loading @@ -159,10 +168,24 @@ constructor(private val ambientCueInteractor: AmbientCueInteractor) : ExclusiveA delayAndDeactivateCueBar() } } launchAndDispose { dumpManager.registerNormalDumpable(TAG, this@AmbientCueViewModel) DisposableHandle { dumpManager.unregisterDumpable(TAG) } } awaitCancellation() } } override fun dump(pw: PrintWriter, args: Array<out String>) { pw.println("isRootViewAttached: $isRootViewAttached") pw.println("isImeVisible: $isImeVisible") pw.println("isVisible: $isVisible") pw.println("isExpanded: $isExpanded") pw.println("pillStyle: $pillStyle") pw.println("deactivateCueBarJob: $deactivateCueBarJob") pw.println("actions: $actions") } @AssistedFactory interface Factory { fun create(): AmbientCueViewModel Loading
packages/SystemUI/tests/utils/src/com/android/systemui/ambientcue/ui/viewmodel/AmbientCueViewModelKosmos.kt +4 −1 Original line number Diff line number Diff line Loading @@ -17,10 +17,13 @@ package com.android.systemui.ambientcue.ui.viewmodel import com.android.systemui.ambientcue.domain.interactor.ambientCueInteractor import com.android.systemui.dump.dumpManager import com.android.systemui.kosmos.Kosmos import com.android.systemui.kosmos.Kosmos.Fixture private val Kosmos.ambientCueViewModel by Fixture { AmbientCueViewModel(ambientCueInteractor) } private val Kosmos.ambientCueViewModel by Fixture { AmbientCueViewModel(ambientCueInteractor, dumpManager) } val Kosmos.ambientCueViewModelFactory by Fixture { object : AmbientCueViewModel.Factory { Loading