Loading packages/SystemUI/src/com/android/systemui/screencapture/record/largescreen/ui/compose/PreCaptureUI.kt +1 −3 Original line number Diff line number Diff line Loading @@ -47,9 +47,7 @@ fun PreCaptureUI(viewModel: PreCaptureViewModel) { PreCaptureToolbar( viewModel = viewModel, expanded = true, onCloseClick = { // TODO(b/424792547) Close the activity. }, onCloseClick = { viewModel.closeUI() }, ) } Loading packages/SystemUI/src/com/android/systemui/screencapture/record/largescreen/ui/viewmodel/PreCaptureViewModel.kt +7 −0 Original line number Diff line number Diff line Loading @@ -23,10 +23,12 @@ import com.android.systemui.dagger.qualifiers.Application import com.android.systemui.dagger.qualifiers.Background import com.android.systemui.lifecycle.HydratedActivatable import com.android.systemui.res.R import com.android.systemui.screencapture.common.ScreenCapture import com.android.systemui.screencapture.common.ui.viewmodel.DrawableLoaderViewModel import com.android.systemui.screencapture.common.ui.viewmodel.DrawableLoaderViewModelImpl import com.android.systemui.screencapture.record.largescreen.domain.interactor.ScreenCaptureRecordLargeScreenFeaturesInteractor import com.android.systemui.screencapture.record.largescreen.domain.interactor.ScreenshotInteractor import com.android.systemui.screencapture.ui.ScreenCaptureActivity import dagger.assisted.AssistedFactory import dagger.assisted.AssistedInject import kotlinx.coroutines.CoroutineScope Loading @@ -50,6 +52,7 @@ enum class ScreenCaptureRegion { class PreCaptureViewModel @AssistedInject constructor( @ScreenCapture private val activity: ScreenCaptureActivity, @Application private val applicationContext: Context, @Background private val backgroundScope: CoroutineScope, private val iconProvider: ScreenCaptureIconProvider, Loading Loading @@ -111,6 +114,10 @@ constructor( // TODO(b/427541309) Update region box position and size. } fun closeUI() { activity.finish() } override suspend fun onActivated() { coroutineScope { launch { iconProvider.collectIcons() } } } Loading packages/SystemUI/tests/src/com/android/systemui/screencapture/record/largescreen/ui/viewmodel/PreCaptureViewModelTest.kt +9 −0 Original line number Diff line number Diff line Loading @@ -28,6 +28,7 @@ import com.android.systemui.SysuiTestCase import com.android.systemui.kosmos.testScope import com.android.systemui.kosmos.useUnconfinedTestDispatcher import com.android.systemui.lifecycle.activateIn import com.android.systemui.screencapture.ui.mockScreenCaptureActivity import com.android.systemui.testKosmos import com.google.common.truth.Truth.assertThat import kotlin.test.assertFailsWith Loading Loading @@ -192,4 +193,12 @@ class PreCaptureViewModelTest : SysuiTestCase() { viewModel.updateCaptureRegion(ScreenCaptureRegion.APP_WINDOW) assertThat(viewModel.captureRegionButtonViewModels.count { it.isSelected }).isEqualTo(1) } @Test fun closeUI_finishesActivity() = testScope.runTest { viewModel.closeUI() verify(kosmos.mockScreenCaptureActivity, times(1)).finish() } } packages/SystemUI/tests/utils/src/com/android/systemui/screencapture/record/largescreen/ui/viewmodel/PreCaptureViewModelKosmos.kt +2 −0 Original line number Diff line number Diff line Loading @@ -23,9 +23,11 @@ import com.android.systemui.kosmos.backgroundScope import com.android.systemui.screencapture.common.ui.viewmodel.drawableLoaderViewModelImpl import com.android.systemui.screencapture.record.largescreen.domain.interactor.screenCaptureRecordLargeScreenFeaturesInteractor import com.android.systemui.screencapture.record.largescreen.domain.interactor.screenshotInteractor import com.android.systemui.screencapture.ui.mockScreenCaptureActivity val Kosmos.preCaptureViewModel by Fixture { PreCaptureViewModel( activity = mockScreenCaptureActivity, applicationContext = applicationContext, backgroundScope = backgroundScope, iconProvider = screenCaptureIconProviderKosmos, Loading packages/SystemUI/tests/utils/src/com/android/systemui/screencapture/ui/ScreenCaptureActivityKosmos.kt 0 → 100644 +26 −0 Original line number Diff line number Diff line /* * Copyright (C) 2025 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.systemui.screencapture.ui import com.android.systemui.kosmos.Kosmos import org.mockito.kotlin.mock /** * Provides a mock instance of [ScreenCaptureActivity] for use in tests. The activity is mocked to * isolate any usage from the complexities of a real Activity. */ val Kosmos.mockScreenCaptureActivity by Kosmos.Fixture { mock<ScreenCaptureActivity>() } Loading
packages/SystemUI/src/com/android/systemui/screencapture/record/largescreen/ui/compose/PreCaptureUI.kt +1 −3 Original line number Diff line number Diff line Loading @@ -47,9 +47,7 @@ fun PreCaptureUI(viewModel: PreCaptureViewModel) { PreCaptureToolbar( viewModel = viewModel, expanded = true, onCloseClick = { // TODO(b/424792547) Close the activity. }, onCloseClick = { viewModel.closeUI() }, ) } Loading
packages/SystemUI/src/com/android/systemui/screencapture/record/largescreen/ui/viewmodel/PreCaptureViewModel.kt +7 −0 Original line number Diff line number Diff line Loading @@ -23,10 +23,12 @@ import com.android.systemui.dagger.qualifiers.Application import com.android.systemui.dagger.qualifiers.Background import com.android.systemui.lifecycle.HydratedActivatable import com.android.systemui.res.R import com.android.systemui.screencapture.common.ScreenCapture import com.android.systemui.screencapture.common.ui.viewmodel.DrawableLoaderViewModel import com.android.systemui.screencapture.common.ui.viewmodel.DrawableLoaderViewModelImpl import com.android.systemui.screencapture.record.largescreen.domain.interactor.ScreenCaptureRecordLargeScreenFeaturesInteractor import com.android.systemui.screencapture.record.largescreen.domain.interactor.ScreenshotInteractor import com.android.systemui.screencapture.ui.ScreenCaptureActivity import dagger.assisted.AssistedFactory import dagger.assisted.AssistedInject import kotlinx.coroutines.CoroutineScope Loading @@ -50,6 +52,7 @@ enum class ScreenCaptureRegion { class PreCaptureViewModel @AssistedInject constructor( @ScreenCapture private val activity: ScreenCaptureActivity, @Application private val applicationContext: Context, @Background private val backgroundScope: CoroutineScope, private val iconProvider: ScreenCaptureIconProvider, Loading Loading @@ -111,6 +114,10 @@ constructor( // TODO(b/427541309) Update region box position and size. } fun closeUI() { activity.finish() } override suspend fun onActivated() { coroutineScope { launch { iconProvider.collectIcons() } } } Loading
packages/SystemUI/tests/src/com/android/systemui/screencapture/record/largescreen/ui/viewmodel/PreCaptureViewModelTest.kt +9 −0 Original line number Diff line number Diff line Loading @@ -28,6 +28,7 @@ import com.android.systemui.SysuiTestCase import com.android.systemui.kosmos.testScope import com.android.systemui.kosmos.useUnconfinedTestDispatcher import com.android.systemui.lifecycle.activateIn import com.android.systemui.screencapture.ui.mockScreenCaptureActivity import com.android.systemui.testKosmos import com.google.common.truth.Truth.assertThat import kotlin.test.assertFailsWith Loading Loading @@ -192,4 +193,12 @@ class PreCaptureViewModelTest : SysuiTestCase() { viewModel.updateCaptureRegion(ScreenCaptureRegion.APP_WINDOW) assertThat(viewModel.captureRegionButtonViewModels.count { it.isSelected }).isEqualTo(1) } @Test fun closeUI_finishesActivity() = testScope.runTest { viewModel.closeUI() verify(kosmos.mockScreenCaptureActivity, times(1)).finish() } }
packages/SystemUI/tests/utils/src/com/android/systemui/screencapture/record/largescreen/ui/viewmodel/PreCaptureViewModelKosmos.kt +2 −0 Original line number Diff line number Diff line Loading @@ -23,9 +23,11 @@ import com.android.systemui.kosmos.backgroundScope import com.android.systemui.screencapture.common.ui.viewmodel.drawableLoaderViewModelImpl import com.android.systemui.screencapture.record.largescreen.domain.interactor.screenCaptureRecordLargeScreenFeaturesInteractor import com.android.systemui.screencapture.record.largescreen.domain.interactor.screenshotInteractor import com.android.systemui.screencapture.ui.mockScreenCaptureActivity val Kosmos.preCaptureViewModel by Fixture { PreCaptureViewModel( activity = mockScreenCaptureActivity, applicationContext = applicationContext, backgroundScope = backgroundScope, iconProvider = screenCaptureIconProviderKosmos, Loading
packages/SystemUI/tests/utils/src/com/android/systemui/screencapture/ui/ScreenCaptureActivityKosmos.kt 0 → 100644 +26 −0 Original line number Diff line number Diff line /* * Copyright (C) 2025 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.systemui.screencapture.ui import com.android.systemui.kosmos.Kosmos import org.mockito.kotlin.mock /** * Provides a mock instance of [ScreenCaptureActivity] for use in tests. The activity is mocked to * isolate any usage from the complexities of a real Activity. */ val Kosmos.mockScreenCaptureActivity by Kosmos.Fixture { mock<ScreenCaptureActivity>() }