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

Commit 303b139c authored by minch's avatar minch
Browse files

Introduce base components for the new screen sharing flow

Flag: EXEMPT unused code
Test: passes presubmits
Bug: 435177297
Change-Id: I6bdf8b31ce1219162be13023e55edac89053dc81
parent e16764d9
Loading
Loading
Loading
Loading
+0 −3
Original line number Diff line number Diff line
@@ -64,7 +64,6 @@ import com.android.systemui.qs.pipeline.domain.interactor.PanelInteractor;
import com.android.systemui.qs.tileimpl.QSTileImpl;
import com.android.systemui.res.R;
import com.android.systemui.screencapture.domain.interactor.ScreenCaptureUiInteractorKosmosKt;
import com.android.systemui.screencapture.record.domain.interactor.ScreenCaptureRecordFeaturesInteractorKosmosKt;
import com.android.systemui.screenrecord.ScreenRecordUxController;
import com.android.systemui.settings.UserContextProvider;
import com.android.systemui.statusbar.phone.KeyguardDismissUtil;
@@ -160,8 +159,6 @@ public class ScreenRecordTileTest extends SysuiTestCase {
                mDialogTransitionAnimator,
                mPanelInteractor,
                mMediaProjectionMetricsLogger,
                ScreenCaptureRecordFeaturesInteractorKosmosKt
                        .getScreenCaptureRecordFeaturesInteractor(mKosmos),
                ScreenCaptureUiInteractorKosmosKt.getScreenCaptureUiInteractor(mKosmos),
                mUserContextProvider
        );
+3 −3
Original line number Diff line number Diff line
@@ -14,7 +14,7 @@
 * limitations under the License.
 */

package com.android.systemui.screencapture.record.domain.interactor
package com.android.systemui.screencapture.domain.interactor

import android.content.testableContext
import android.platform.test.flag.junit.SetFlagsRule
@@ -33,13 +33,13 @@ import org.junit.runner.RunWith

@SmallTest
@RunWith(AndroidJUnit4::class)
class ScreenCaptureRecordFeaturesInteractorTest : SysuiTestCase() {
class ScreenCaptureUiInteractorTest : SysuiTestCase() {

    @get:Rule val setFlagsRule = SetFlagsRule()

    private val kosmos = testKosmos()

    private val underTest by lazy { kosmos.screenCaptureRecordFeaturesInteractor }
    private val underTest by lazy { kosmos.screenCaptureUiInteractor }

    @Test
    fun isLargeScreenReturnsConfigValue() =
+1 −4
Original line number Diff line number Diff line
@@ -83,7 +83,6 @@ public class ScreenRecordTile extends QSTileImpl<QSTile.BooleanState>
    private final MediaProjectionMetricsLogger mMediaProjectionMetricsLogger;
    private final UserContextProvider mUserContextProvider;
    private final ScreenCaptureUiInteractor mScreenCaptureUiInteractor;
    private final ScreenCaptureRecordFeaturesInteractor mScreenCaptureRecordFeaturesInteractor;

    private long mMillisUntilFinished = 0;

@@ -105,7 +104,6 @@ public class ScreenRecordTile extends QSTileImpl<QSTile.BooleanState>
            DialogTransitionAnimator dialogTransitionAnimator,
            PanelInteractor panelInteractor,
            MediaProjectionMetricsLogger mediaProjectionMetricsLogger,
            ScreenCaptureRecordFeaturesInteractor screenCaptureRecordFeaturesInteractor,
            ScreenCaptureUiInteractor screenCaptureUiInteractor,
            UserContextProvider userContextProvider
    ) {
@@ -119,7 +117,6 @@ public class ScreenRecordTile extends QSTileImpl<QSTile.BooleanState>
        mDialogTransitionAnimator = dialogTransitionAnimator;
        mPanelInteractor = panelInteractor;
        mMediaProjectionMetricsLogger = mediaProjectionMetricsLogger;
        mScreenCaptureRecordFeaturesInteractor = screenCaptureRecordFeaturesInteractor;
        mScreenCaptureUiInteractor = screenCaptureUiInteractor;
        mUserContextProvider = userContextProvider;
    }
@@ -134,7 +131,7 @@ public class ScreenRecordTile extends QSTileImpl<QSTile.BooleanState>

    @Override
    protected void handleClick(@Nullable Expandable expandable) {
        if (ScreenCaptureRecordFeaturesInteractor.Companion.getShouldShowNewToolbar()) {
        if (ScreenCaptureRecordFeaturesInteractor.INSTANCE.getShouldShowNewToolbar()) {
            UserHandle userHandle = UserHandle.of(getCurrentTileUser());
            mActivityStarter.postQSRunnableDismissingKeyguard(
                    () -> mScreenCaptureUiInteractor.show(
+23 −1
Original line number Diff line number Diff line
@@ -16,18 +16,40 @@

package com.android.systemui.screencapture.domain.interactor

import android.content.res.Resources
import com.android.dream.lowlight.dagger.qualifiers.Application
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Main
import com.android.systemui.res.R
import com.android.systemui.screencapture.common.shared.model.ScreenCaptureActivityIntentParameters
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.statusbar.policy.ConfigurationController
import com.android.systemui.statusbar.policy.onConfigChanged
import javax.inject.Inject
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.SharingStarted
import kotlinx.coroutines.flow.map
import kotlinx.coroutines.flow.onStart
import kotlinx.coroutines.flow.stateIn

@SysUISingleton
class ScreenCaptureUiInteractor
@Inject
constructor(private val repository: ScreenCaptureUiRepository) {
constructor(
    @Main private val resources: Resources,
    @Application private val scope: CoroutineScope,
    configurationController: ConfigurationController,
    private val repository: ScreenCaptureUiRepository,
) {

    val isLargeScreen: Flow<Boolean?> =
        configurationController.onConfigChanged
            .onStart { emit(resources.configuration) }
            .map { resources.getBoolean(R.bool.config_enableLargeScreenScreencapture) }
            .stateIn(scope, SharingStarted.WhileSubscribed(), null)

    fun uiState(type: ScreenCaptureType): Flow<ScreenCaptureUiState> = repository.uiState(type)

+7 −33
Original line number Diff line number Diff line
@@ -16,37 +16,12 @@

package com.android.systemui.screencapture.record.domain.interactor

import android.content.res.Resources
import com.android.dream.lowlight.dagger.qualifiers.Application
import com.android.systemui.Flags
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dagger.qualifiers.Main
import com.android.systemui.res.R
import com.android.systemui.statusbar.policy.ConfigurationController
import com.android.systemui.statusbar.policy.onConfigChanged
import javax.inject.Inject
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.SharingStarted
import kotlinx.coroutines.flow.map
import kotlinx.coroutines.flow.onStart
import kotlinx.coroutines.flow.stateIn

@SysUISingleton
class ScreenCaptureRecordFeaturesInteractor
@Inject
constructor(
    @Main private val resources: Resources,
    @Application private val scope: CoroutineScope,
    configurationController: ConfigurationController,
) {
    val isLargeScreen: Flow<Boolean?> =
        configurationController.onConfigChanged
            .onStart { emit(resources.configuration) }
            .map { resources.getBoolean(R.bool.config_enableLargeScreenScreencapture) }
            .stateIn(scope, SharingStarted.WhileSubscribed(), null)
object ScreenCaptureRecordFeaturesInteractor {

    companion object {
    val isNewScreenRecordToolbarEnabled: Boolean
        get() = Flags.newScreenRecordToolbar()

@@ -56,4 +31,3 @@ constructor(
    val shouldShowNewToolbar: Boolean
        get() = isNewScreenRecordToolbarEnabled || isLargeScreenScreencaptureEnabled
}
}
Loading