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

Commit 365014e4 authored by Min Chen's avatar Min Chen Committed by Android (Google) Code Review
Browse files

Merge changes Ic3383ac2,Ie4b09106 into main

* changes:
  Hide the pre-share UI on clicking the share button
  Hide the pre-share UI on clicking close button
parents 5e366fac 5b38a144
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -90,7 +90,7 @@ fun PreShareToolbar(
            PrimaryButton(
                icon = shareIcon,
                text = stringResource(R.string.screen_share_toolbar_share_button),
                onClick = {},
                onClick = { preShareToolbarViewModel.onShareClicked() },
                enabled = shareButtonEnabled,
            )
        }
+1 −1
Original line number Diff line number Diff line
@@ -44,7 +44,7 @@ fun PreShareUI(
        PreShareToolbar(
            preShareToolbarViewModel = preShareToolbarViewModel,
            expanded = true,
            onCloseClick = {},
            onCloseClick = { preShareToolbarViewModel.onCloseClicked() },
            shareButtonEnabled = shareContentListViewModel.selectedRecentTaskViewModel != null,
        )
        ShareContentSelector(
+14 −2
Original line number Diff line number Diff line
@@ -18,8 +18,10 @@ package com.android.systemui.screencapture.sharescreen.largescreen.ui.viewmodel

import androidx.compose.runtime.getValue
import com.android.systemui.lifecycle.HydratedActivatable
import com.android.systemui.screencapture.common.shared.model.ScreenCaptureType
import com.android.systemui.screencapture.common.ui.viewmodel.DrawableLoaderViewModel
import com.android.systemui.screencapture.common.ui.viewmodel.DrawableLoaderViewModelImpl
import com.android.systemui.screencapture.domain.interactor.ScreenCaptureUiInteractor
import dagger.assisted.AssistedFactory
import dagger.assisted.AssistedInject
import kotlinx.coroutines.flow.MutableStateFlow
@@ -33,8 +35,10 @@ enum class ScreenShareTarget {
/** Models UI state for the Screen Share feature. */
class PreShareToolbarViewModel
@AssistedInject
constructor(private val drawableLoaderViewModelImpl: DrawableLoaderViewModelImpl) :
    HydratedActivatable(), DrawableLoaderViewModel by drawableLoaderViewModelImpl {
constructor(
    private val drawableLoaderViewModelImpl: DrawableLoaderViewModelImpl,
    private val screenCaptureUiInteractor: ScreenCaptureUiInteractor,
) : HydratedActivatable(), DrawableLoaderViewModel by drawableLoaderViewModelImpl {
    // The private, mutable source of truth for the selected target.
    private val selectedScreenShareTargetSource = MutableStateFlow(ScreenShareTarget.APP_WINDOW)

@@ -46,6 +50,14 @@ constructor(private val drawableLoaderViewModelImpl: DrawableLoaderViewModelImpl
        selectedScreenShareTargetSource.value = target
    }

    fun onCloseClicked() {
        screenCaptureUiInteractor.hide(ScreenCaptureType.SHARE_SCREEN)
    }

    fun onShareClicked() {
        screenCaptureUiInteractor.hide(ScreenCaptureType.SHARE_SCREEN)
    }

    @AssistedFactory
    interface Factory {
        fun create(): PreShareToolbarViewModel
+31 −2
Original line number Diff line number Diff line
@@ -19,10 +19,14 @@ package com.android.systemui.screencapture.sharescreen.largescreen.ui.viewmodel
import androidx.test.ext.junit.runners.AndroidJUnit4
import androidx.test.filters.SmallTest
import com.android.systemui.SysuiTestCase
import com.android.systemui.kosmos.collectLastValue
import com.android.systemui.kosmos.runTest
import com.android.systemui.kosmos.testScope
import com.android.systemui.kosmos.useUnconfinedTestDispatcher
import com.android.systemui.lifecycle.activateIn
import com.android.systemui.screencapture.common.shared.model.ScreenCaptureType
import com.android.systemui.screencapture.common.shared.model.ScreenCaptureUiState
import com.android.systemui.screencapture.data.repository.screenCaptureUiRepository
import com.android.systemui.testKosmos
import com.google.common.truth.Truth.assertThat
import org.junit.Before
@@ -33,13 +37,12 @@ import org.junit.runner.RunWith
@RunWith(AndroidJUnit4::class)
class PreShareToolbarViewModelTest : SysuiTestCase() {
    private val kosmos = testKosmos().useUnconfinedTestDispatcher()
    private val testScope = kosmos.testScope

    private val viewModel: PreShareToolbarViewModel by lazy { kosmos.preShareToolbarViewModel }

    @Before
    fun setUp() {
        viewModel.activateIn(testScope)
        viewModel.activateIn(kosmos.testScope)
    }

    @Test
@@ -55,4 +58,30 @@ class PreShareToolbarViewModelTest : SysuiTestCase() {
            viewModel.onTargetSelected(ScreenShareTarget.TAB)
            assertThat(viewModel.selectedScreenShareTarget).isEqualTo(ScreenShareTarget.TAB)
        }

    @Test
    fun onCloseClicked_hidesUi() =
        kosmos.runTest {
            val uiState by
                collectLastValue(
                    kosmos.screenCaptureUiRepository.uiState(ScreenCaptureType.SHARE_SCREEN)
                )

            viewModel.onCloseClicked()

            assertThat(uiState).isEqualTo(ScreenCaptureUiState.Invisible)
        }

    @Test
    fun onShareClicked_hidesUi() =
        kosmos.runTest {
            val uiState by
                collectLastValue(
                    kosmos.screenCaptureUiRepository.uiState(ScreenCaptureType.SHARE_SCREEN)
                )

            viewModel.onShareClicked()

            assertThat(uiState).isEqualTo(ScreenCaptureUiState.Invisible)
        }
}
+2 −3
Original line number Diff line number Diff line
@@ -19,13 +19,12 @@ package com.android.systemui.screencapture.sharescreen.largescreen.ui.viewmodel
import com.android.systemui.kosmos.Kosmos
import com.android.systemui.kosmos.Kosmos.Fixture
import com.android.systemui.screencapture.common.ui.viewmodel.drawableLoaderViewModelImpl
import com.android.systemui.screencapture.domain.interactor.screenCaptureUiInteractor

val Kosmos.preShareToolbarViewModelFactory by Fixture {
    object : PreShareToolbarViewModel.Factory {
        override fun create(): PreShareToolbarViewModel {
            return PreShareToolbarViewModel(
                drawableLoaderViewModelImpl = drawableLoaderViewModelImpl
            )
            return PreShareToolbarViewModel(drawableLoaderViewModelImpl, screenCaptureUiInteractor)
        }
    }
}