Loading packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/ScreenRecordTileTest.java +83 −1 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ import static org.junit.Assert.assertFalse; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyBoolean; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.never; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; Loading @@ -33,6 +34,7 @@ import static org.mockito.Mockito.when; import android.app.Dialog; import android.media.projection.StopReason; import android.os.Handler; import android.platform.test.annotations.DisableFlags; import android.platform.test.annotations.EnableFlags; import android.platform.test.flag.junit.FlagsParameterization; import android.service.quicksettings.Tile; Loading @@ -44,6 +46,7 @@ import com.android.internal.logging.MetricsLogger; import com.android.systemui.SysuiTestCase; import com.android.systemui.animation.DialogTransitionAnimator; import com.android.systemui.classifier.FalsingManagerFake; import com.android.systemui.Flags; import com.android.systemui.flags.FeatureFlags; import com.android.systemui.mediaprojection.MediaProjectionMetricsLogger; import com.android.systemui.plugins.ActivityStarter; Loading Loading @@ -216,6 +219,86 @@ public class ScreenRecordTileTest extends SysuiTestCase { verify(mController, times(1)).cancelCountdown(); } // Test that clicking the tile is NOP if opened from desktop. @Test @EnableFlags(Flags.FLAG_DESKTOP_SCREEN_CAPTURE) public void testClickFromDesktop() { when(mController.isStarting()).thenReturn(false); when(mController.isRecording()).thenReturn(false); mTile.refreshState(); mTestableLooper.processAllMessages(); // Override the resource to enable desktop features. overrideResource(R.bool.config_enableDesktopScreenCapture, true); mTile.handleClick(null /* view */); mTestableLooper.processAllMessages(); verify(mController, never()).createScreenRecordDialog(null); } // Test that clicking the tile in desktop opens the recording dialog if flag is disabled. @Test @DisableFlags(Flags.FLAG_DESKTOP_SCREEN_CAPTURE) public void testClickFromDesktopFlagDisabled() { when(mController.isStarting()).thenReturn(false); when(mController.isRecording()).thenReturn(false); mTile.refreshState(); mTestableLooper.processAllMessages(); // Override the resource to enable desktop features. overrideResource(R.bool.config_enableDesktopScreenCapture, true); mTile.handleClick(null /* view */); mTestableLooper.processAllMessages(); ArgumentCaptor<Runnable> onStartRecordingClicked = ArgumentCaptor.forClass(Runnable.class); verify(mController).createScreenRecordDialog(onStartRecordingClicked.capture()); } // Test that clicking the tile not in desktop opens the recording dialog even if flag is // enabled. @Test @EnableFlags(Flags.FLAG_DESKTOP_SCREEN_CAPTURE) public void testClickNotFromDesktopFlagEnabled() { when(mController.isStarting()).thenReturn(false); when(mController.isRecording()).thenReturn(false); mTile.refreshState(); mTestableLooper.processAllMessages(); // Override the resource to disable desktop features. overrideResource(R.bool.config_enableDesktopScreenCapture, false); mTile.handleClick(null /* view */); mTestableLooper.processAllMessages(); ArgumentCaptor<Runnable> onStartRecordingClicked = ArgumentCaptor.forClass(Runnable.class); verify(mController).createScreenRecordDialog(onStartRecordingClicked.capture()); } // Test that clicking the tile not in desktop opens the recording dialog when the flag is // disabled. @Test @DisableFlags(Flags.FLAG_DESKTOP_SCREEN_CAPTURE) public void testClickNotFromDesktopFlagDisabled() { when(mController.isStarting()).thenReturn(false); when(mController.isRecording()).thenReturn(false); mTile.refreshState(); mTestableLooper.processAllMessages(); // Override the resource to disable desktop features. overrideResource(R.bool.config_enableDesktopScreenCapture, false); mTile.handleClick(null /* view */); mTestableLooper.processAllMessages(); ArgumentCaptor<Runnable> onStartRecordingClicked = ArgumentCaptor.forClass(Runnable.class); verify(mController).createScreenRecordDialog(onStartRecordingClicked.capture()); } // Test that the tile is active and labeled correctly when the controller is recording @Test public void testIsRecording() { Loading Loading @@ -379,5 +462,4 @@ public class ScreenRecordTileTest extends SysuiTestCase { return QSTileImpl.ResourceIcon.get(resId); } } } packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/screenrecord/domain/interactor/ScreenRecordTileUserActionInteractorTest.kt +68 −0 Original line number Diff line number Diff line Loading @@ -19,8 +19,11 @@ package com.android.systemui.qs.tiles.impl.screenrecord.domain.interactor import android.app.Dialog import android.media.projection.StopReason import android.os.UserHandle import android.platform.test.annotations.DisableFlags import android.platform.test.annotations.EnableFlags import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.SmallTest import com.android.systemui.Flags import com.android.systemui.SysuiTestCase import com.android.systemui.animation.DialogTransitionAnimator import com.android.systemui.animation.Expandable Loading @@ -31,6 +34,7 @@ import com.android.systemui.mediaprojection.MediaProjectionMetricsLogger import com.android.systemui.plugins.ActivityStarter.OnDismissAction import com.android.systemui.qs.pipeline.domain.interactor.PanelInteractor import com.android.systemui.qs.tiles.base.domain.model.QSTileInputTestKtx import com.android.systemui.res.R import com.android.systemui.screenrecord.ScreenRecordUxController import com.android.systemui.screenrecord.data.model.ScreenRecordModel import com.android.systemui.screenrecord.data.repository.ScreenRecordRepositoryImpl Loading @@ -39,6 +43,7 @@ import com.android.systemui.testKosmos import kotlinx.coroutines.test.runTest import org.junit.Test import org.junit.runner.RunWith import org.mockito.Mockito.never import org.mockito.Mockito.verify import org.mockito.kotlin.any import org.mockito.kotlin.argumentCaptor Loading Loading @@ -67,6 +72,7 @@ class ScreenRecordTileUserActionInteractorTest : SysuiTestCase() { private val underTest = ScreenRecordTileUserActionInteractor( context, testScope.testScheduler, testScope.testScheduler, screenRecordRepository, Loading @@ -87,6 +93,68 @@ class ScreenRecordTileUserActionInteractorTest : SysuiTestCase() { verify(screenRecordUxController).cancelCountdown() } // Test that clicking the tile is NOP if opened from desktop. @Test @EnableFlags(Flags.FLAG_DESKTOP_SCREEN_CAPTURE) fun handleClick_fromDesktop_flagEnabled_isNOP() = runTest { val recordingModel = ScreenRecordModel.DoingNothing // Override the resource to enable desktop features. underTest.apply { overrideResource(R.bool.config_enableDesktopScreenCapture, true) } underTest.handleInput(QSTileInputTestKtx.click(recordingModel)) val onStartRecordingClickedCaptor = argumentCaptor<Runnable>() verify(screenRecordUxController, never()) .createScreenRecordDialog(onStartRecordingClickedCaptor.capture()) } // Test that clicking the tile in desktop opens the recording dialog if flag is disabled. @Test @DisableFlags(Flags.FLAG_DESKTOP_SCREEN_CAPTURE) fun handleClick_fromDesktop_flagDisabled_opensRecordingDialog() = runTest { val recordingModel = ScreenRecordModel.DoingNothing // Override the resource to enable desktop features. underTest.apply { overrideResource(R.bool.config_enableDesktopScreenCapture, true) } underTest.handleInput(QSTileInputTestKtx.click(recordingModel)) val onStartRecordingClickedCaptor = argumentCaptor<Runnable>() verify(screenRecordUxController) .createScreenRecordDialog(onStartRecordingClickedCaptor.capture()) } // Test that clicking the tile not in desktop opens the recording dialog even if flag is // enabled. @Test @EnableFlags(Flags.FLAG_DESKTOP_SCREEN_CAPTURE) fun handleClick_notFromDesktop_flagEnabled_opensRecordingDialog() = runTest { val recordingModel = ScreenRecordModel.DoingNothing // Override the resource to disable desktop features. underTest.apply { overrideResource(R.bool.config_enableDesktopScreenCapture, false) } underTest.handleInput(QSTileInputTestKtx.click(recordingModel)) val onStartRecordingClickedCaptor = argumentCaptor<Runnable>() verify(screenRecordUxController) .createScreenRecordDialog(onStartRecordingClickedCaptor.capture()) } // Test that clicking the tile not in desktop opens the recording dialog when the flag is // disabled. @Test @DisableFlags(Flags.FLAG_DESKTOP_SCREEN_CAPTURE) fun handleClick_notFromDesktop_flagDisabled_opensRecordingDialog() = runTest { val recordingModel = ScreenRecordModel.DoingNothing // Override the resource to disable desktop features. underTest.apply { overrideResource(R.bool.config_enableDesktopScreenCapture, false) } underTest.handleInput(QSTileInputTestKtx.click(recordingModel)) val onStartRecordingClickedCaptor = argumentCaptor<Runnable>() verify(screenRecordUxController) .createScreenRecordDialog(onStartRecordingClickedCaptor.capture()) } @Test fun handleClick_whenRecording_stopRecording() = runTest { val recordingModel = ScreenRecordModel.Recording Loading packages/SystemUI/res/values/config.xml +3 −0 Original line number Diff line number Diff line Loading @@ -1135,6 +1135,9 @@ <!-- If AOD can show an ambient version of the wallpaper (-1 means ignore) --> <integer name="config_dozeSupportsAodWallpaperOverride">-1</integer> <!-- Whether to enable the desktop screen capture. --> <bool name="config_enableDesktopScreenCapture">false</bool> <!-- Whether to enable features improving large screen interaction --> <bool name="config_improveLargeScreenInteractionOnLockscreen">false</bool> </resources> packages/SystemUI/src/com/android/systemui/qs/tiles/ScreenRecordTile.java +7 −2 Original line number Diff line number Diff line Loading @@ -56,6 +56,7 @@ import com.android.systemui.screenrecord.data.model.ScreenRecordModel; import com.android.systemui.settings.UserContextProvider; import com.android.systemui.statusbar.phone.KeyguardDismissUtil; import com.android.systemui.statusbar.policy.KeyguardStateController; import com.android.systemui.util.Utils; import java.util.function.Consumer; Loading Loading @@ -127,9 +128,13 @@ public class ScreenRecordTile extends QSTileImpl<QSTile.BooleanState> @Override protected void handleClick(@Nullable Expandable expandable) { if (Utils.isDesktopScreenCaptureEnabled(mContext)) { // TODO(b/412723197): open screen capture toolbar when it becomes available. } else { // TODO(b/409330121): call mController.onScreenRecordQsTileClick() instead. handleClick(() -> showDialog(expandable)); } } private void showDialog(@Nullable Expandable expandable) { final Dialog dialog = mController.createScreenRecordDialog( Loading packages/SystemUI/src/com/android/systemui/qs/tiles/impl/screenrecord/domain/interactor/ScreenRecordTileUserActionInteractor.kt +21 −14 Original line number Diff line number Diff line Loading @@ -16,12 +16,14 @@ package com.android.systemui.qs.tiles.impl.screenrecord.domain.interactor import android.content.Context import android.media.projection.StopReason import android.util.Log import com.android.internal.jank.InteractionJankMonitor import com.android.systemui.animation.DialogCuj import com.android.systemui.animation.DialogTransitionAnimator import com.android.systemui.animation.Expandable import com.android.systemui.dagger.qualifiers.Application import com.android.systemui.dagger.qualifiers.Background import com.android.systemui.dagger.qualifiers.Main import com.android.systemui.keyguard.domain.interactor.KeyguardInteractor Loading @@ -35,6 +37,7 @@ import com.android.systemui.screenrecord.ScreenRecordUxController import com.android.systemui.screenrecord.data.model.ScreenRecordModel import com.android.systemui.screenrecord.data.repository.ScreenRecordRepository import com.android.systemui.statusbar.phone.KeyguardDismissUtil import com.android.systemui.util.Utils import javax.inject.Inject import kotlin.coroutines.CoroutineContext import kotlinx.coroutines.withContext Loading @@ -43,6 +46,7 @@ import kotlinx.coroutines.withContext class ScreenRecordTileUserActionInteractor @Inject constructor( @Application private val context: Context, @Main private val mainContext: CoroutineContext, @Background private val backgroundContext: CoroutineContext, private val screenRecordRepository: ScreenRecordRepository, Loading @@ -57,6 +61,9 @@ constructor( with(input) { when (action) { is QSTileUserAction.Click -> { if (Utils.isDesktopScreenCaptureEnabled(context)) { // TODO(b/412723197): open screen capture toolbar when it becomes available. } else { when (data) { is ScreenRecordModel.Starting -> { Log.d(TAG, "Cancelling countdown") Loading @@ -73,6 +80,7 @@ constructor( } } } } is QSTileUserAction.LongClick -> {} // no-op is QSTileUserAction.ToggleClick -> {} } Loading @@ -96,8 +104,7 @@ constructor( } // We animate from the touched expandable only if we are not on the keyguard, given that if // we // are we will dismiss it which will also collapse the shade. // we are we will dismiss it which will also collapse the shade. val shouldAnimateFromExpandable = expandable != null && !keyguardInteractor.isKeyguardCurrentlyShowing() val dismissAction = Loading Loading
packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/ScreenRecordTileTest.java +83 −1 Original line number Diff line number Diff line Loading @@ -26,6 +26,7 @@ import static org.junit.Assert.assertFalse; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.anyBoolean; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.never; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; Loading @@ -33,6 +34,7 @@ import static org.mockito.Mockito.when; import android.app.Dialog; import android.media.projection.StopReason; import android.os.Handler; import android.platform.test.annotations.DisableFlags; import android.platform.test.annotations.EnableFlags; import android.platform.test.flag.junit.FlagsParameterization; import android.service.quicksettings.Tile; Loading @@ -44,6 +46,7 @@ import com.android.internal.logging.MetricsLogger; import com.android.systemui.SysuiTestCase; import com.android.systemui.animation.DialogTransitionAnimator; import com.android.systemui.classifier.FalsingManagerFake; import com.android.systemui.Flags; import com.android.systemui.flags.FeatureFlags; import com.android.systemui.mediaprojection.MediaProjectionMetricsLogger; import com.android.systemui.plugins.ActivityStarter; Loading Loading @@ -216,6 +219,86 @@ public class ScreenRecordTileTest extends SysuiTestCase { verify(mController, times(1)).cancelCountdown(); } // Test that clicking the tile is NOP if opened from desktop. @Test @EnableFlags(Flags.FLAG_DESKTOP_SCREEN_CAPTURE) public void testClickFromDesktop() { when(mController.isStarting()).thenReturn(false); when(mController.isRecording()).thenReturn(false); mTile.refreshState(); mTestableLooper.processAllMessages(); // Override the resource to enable desktop features. overrideResource(R.bool.config_enableDesktopScreenCapture, true); mTile.handleClick(null /* view */); mTestableLooper.processAllMessages(); verify(mController, never()).createScreenRecordDialog(null); } // Test that clicking the tile in desktop opens the recording dialog if flag is disabled. @Test @DisableFlags(Flags.FLAG_DESKTOP_SCREEN_CAPTURE) public void testClickFromDesktopFlagDisabled() { when(mController.isStarting()).thenReturn(false); when(mController.isRecording()).thenReturn(false); mTile.refreshState(); mTestableLooper.processAllMessages(); // Override the resource to enable desktop features. overrideResource(R.bool.config_enableDesktopScreenCapture, true); mTile.handleClick(null /* view */); mTestableLooper.processAllMessages(); ArgumentCaptor<Runnable> onStartRecordingClicked = ArgumentCaptor.forClass(Runnable.class); verify(mController).createScreenRecordDialog(onStartRecordingClicked.capture()); } // Test that clicking the tile not in desktop opens the recording dialog even if flag is // enabled. @Test @EnableFlags(Flags.FLAG_DESKTOP_SCREEN_CAPTURE) public void testClickNotFromDesktopFlagEnabled() { when(mController.isStarting()).thenReturn(false); when(mController.isRecording()).thenReturn(false); mTile.refreshState(); mTestableLooper.processAllMessages(); // Override the resource to disable desktop features. overrideResource(R.bool.config_enableDesktopScreenCapture, false); mTile.handleClick(null /* view */); mTestableLooper.processAllMessages(); ArgumentCaptor<Runnable> onStartRecordingClicked = ArgumentCaptor.forClass(Runnable.class); verify(mController).createScreenRecordDialog(onStartRecordingClicked.capture()); } // Test that clicking the tile not in desktop opens the recording dialog when the flag is // disabled. @Test @DisableFlags(Flags.FLAG_DESKTOP_SCREEN_CAPTURE) public void testClickNotFromDesktopFlagDisabled() { when(mController.isStarting()).thenReturn(false); when(mController.isRecording()).thenReturn(false); mTile.refreshState(); mTestableLooper.processAllMessages(); // Override the resource to disable desktop features. overrideResource(R.bool.config_enableDesktopScreenCapture, false); mTile.handleClick(null /* view */); mTestableLooper.processAllMessages(); ArgumentCaptor<Runnable> onStartRecordingClicked = ArgumentCaptor.forClass(Runnable.class); verify(mController).createScreenRecordDialog(onStartRecordingClicked.capture()); } // Test that the tile is active and labeled correctly when the controller is recording @Test public void testIsRecording() { Loading Loading @@ -379,5 +462,4 @@ public class ScreenRecordTileTest extends SysuiTestCase { return QSTileImpl.ResourceIcon.get(resId); } } }
packages/SystemUI/multivalentTests/src/com/android/systemui/qs/tiles/impl/screenrecord/domain/interactor/ScreenRecordTileUserActionInteractorTest.kt +68 −0 Original line number Diff line number Diff line Loading @@ -19,8 +19,11 @@ package com.android.systemui.qs.tiles.impl.screenrecord.domain.interactor import android.app.Dialog import android.media.projection.StopReason import android.os.UserHandle import android.platform.test.annotations.DisableFlags import android.platform.test.annotations.EnableFlags import androidx.test.ext.junit.runners.AndroidJUnit4 import androidx.test.filters.SmallTest import com.android.systemui.Flags import com.android.systemui.SysuiTestCase import com.android.systemui.animation.DialogTransitionAnimator import com.android.systemui.animation.Expandable Loading @@ -31,6 +34,7 @@ import com.android.systemui.mediaprojection.MediaProjectionMetricsLogger import com.android.systemui.plugins.ActivityStarter.OnDismissAction import com.android.systemui.qs.pipeline.domain.interactor.PanelInteractor import com.android.systemui.qs.tiles.base.domain.model.QSTileInputTestKtx import com.android.systemui.res.R import com.android.systemui.screenrecord.ScreenRecordUxController import com.android.systemui.screenrecord.data.model.ScreenRecordModel import com.android.systemui.screenrecord.data.repository.ScreenRecordRepositoryImpl Loading @@ -39,6 +43,7 @@ import com.android.systemui.testKosmos import kotlinx.coroutines.test.runTest import org.junit.Test import org.junit.runner.RunWith import org.mockito.Mockito.never import org.mockito.Mockito.verify import org.mockito.kotlin.any import org.mockito.kotlin.argumentCaptor Loading Loading @@ -67,6 +72,7 @@ class ScreenRecordTileUserActionInteractorTest : SysuiTestCase() { private val underTest = ScreenRecordTileUserActionInteractor( context, testScope.testScheduler, testScope.testScheduler, screenRecordRepository, Loading @@ -87,6 +93,68 @@ class ScreenRecordTileUserActionInteractorTest : SysuiTestCase() { verify(screenRecordUxController).cancelCountdown() } // Test that clicking the tile is NOP if opened from desktop. @Test @EnableFlags(Flags.FLAG_DESKTOP_SCREEN_CAPTURE) fun handleClick_fromDesktop_flagEnabled_isNOP() = runTest { val recordingModel = ScreenRecordModel.DoingNothing // Override the resource to enable desktop features. underTest.apply { overrideResource(R.bool.config_enableDesktopScreenCapture, true) } underTest.handleInput(QSTileInputTestKtx.click(recordingModel)) val onStartRecordingClickedCaptor = argumentCaptor<Runnable>() verify(screenRecordUxController, never()) .createScreenRecordDialog(onStartRecordingClickedCaptor.capture()) } // Test that clicking the tile in desktop opens the recording dialog if flag is disabled. @Test @DisableFlags(Flags.FLAG_DESKTOP_SCREEN_CAPTURE) fun handleClick_fromDesktop_flagDisabled_opensRecordingDialog() = runTest { val recordingModel = ScreenRecordModel.DoingNothing // Override the resource to enable desktop features. underTest.apply { overrideResource(R.bool.config_enableDesktopScreenCapture, true) } underTest.handleInput(QSTileInputTestKtx.click(recordingModel)) val onStartRecordingClickedCaptor = argumentCaptor<Runnable>() verify(screenRecordUxController) .createScreenRecordDialog(onStartRecordingClickedCaptor.capture()) } // Test that clicking the tile not in desktop opens the recording dialog even if flag is // enabled. @Test @EnableFlags(Flags.FLAG_DESKTOP_SCREEN_CAPTURE) fun handleClick_notFromDesktop_flagEnabled_opensRecordingDialog() = runTest { val recordingModel = ScreenRecordModel.DoingNothing // Override the resource to disable desktop features. underTest.apply { overrideResource(R.bool.config_enableDesktopScreenCapture, false) } underTest.handleInput(QSTileInputTestKtx.click(recordingModel)) val onStartRecordingClickedCaptor = argumentCaptor<Runnable>() verify(screenRecordUxController) .createScreenRecordDialog(onStartRecordingClickedCaptor.capture()) } // Test that clicking the tile not in desktop opens the recording dialog when the flag is // disabled. @Test @DisableFlags(Flags.FLAG_DESKTOP_SCREEN_CAPTURE) fun handleClick_notFromDesktop_flagDisabled_opensRecordingDialog() = runTest { val recordingModel = ScreenRecordModel.DoingNothing // Override the resource to disable desktop features. underTest.apply { overrideResource(R.bool.config_enableDesktopScreenCapture, false) } underTest.handleInput(QSTileInputTestKtx.click(recordingModel)) val onStartRecordingClickedCaptor = argumentCaptor<Runnable>() verify(screenRecordUxController) .createScreenRecordDialog(onStartRecordingClickedCaptor.capture()) } @Test fun handleClick_whenRecording_stopRecording() = runTest { val recordingModel = ScreenRecordModel.Recording Loading
packages/SystemUI/res/values/config.xml +3 −0 Original line number Diff line number Diff line Loading @@ -1135,6 +1135,9 @@ <!-- If AOD can show an ambient version of the wallpaper (-1 means ignore) --> <integer name="config_dozeSupportsAodWallpaperOverride">-1</integer> <!-- Whether to enable the desktop screen capture. --> <bool name="config_enableDesktopScreenCapture">false</bool> <!-- Whether to enable features improving large screen interaction --> <bool name="config_improveLargeScreenInteractionOnLockscreen">false</bool> </resources>
packages/SystemUI/src/com/android/systemui/qs/tiles/ScreenRecordTile.java +7 −2 Original line number Diff line number Diff line Loading @@ -56,6 +56,7 @@ import com.android.systemui.screenrecord.data.model.ScreenRecordModel; import com.android.systemui.settings.UserContextProvider; import com.android.systemui.statusbar.phone.KeyguardDismissUtil; import com.android.systemui.statusbar.policy.KeyguardStateController; import com.android.systemui.util.Utils; import java.util.function.Consumer; Loading Loading @@ -127,9 +128,13 @@ public class ScreenRecordTile extends QSTileImpl<QSTile.BooleanState> @Override protected void handleClick(@Nullable Expandable expandable) { if (Utils.isDesktopScreenCaptureEnabled(mContext)) { // TODO(b/412723197): open screen capture toolbar when it becomes available. } else { // TODO(b/409330121): call mController.onScreenRecordQsTileClick() instead. handleClick(() -> showDialog(expandable)); } } private void showDialog(@Nullable Expandable expandable) { final Dialog dialog = mController.createScreenRecordDialog( Loading
packages/SystemUI/src/com/android/systemui/qs/tiles/impl/screenrecord/domain/interactor/ScreenRecordTileUserActionInteractor.kt +21 −14 Original line number Diff line number Diff line Loading @@ -16,12 +16,14 @@ package com.android.systemui.qs.tiles.impl.screenrecord.domain.interactor import android.content.Context import android.media.projection.StopReason import android.util.Log import com.android.internal.jank.InteractionJankMonitor import com.android.systemui.animation.DialogCuj import com.android.systemui.animation.DialogTransitionAnimator import com.android.systemui.animation.Expandable import com.android.systemui.dagger.qualifiers.Application import com.android.systemui.dagger.qualifiers.Background import com.android.systemui.dagger.qualifiers.Main import com.android.systemui.keyguard.domain.interactor.KeyguardInteractor Loading @@ -35,6 +37,7 @@ import com.android.systemui.screenrecord.ScreenRecordUxController import com.android.systemui.screenrecord.data.model.ScreenRecordModel import com.android.systemui.screenrecord.data.repository.ScreenRecordRepository import com.android.systemui.statusbar.phone.KeyguardDismissUtil import com.android.systemui.util.Utils import javax.inject.Inject import kotlin.coroutines.CoroutineContext import kotlinx.coroutines.withContext Loading @@ -43,6 +46,7 @@ import kotlinx.coroutines.withContext class ScreenRecordTileUserActionInteractor @Inject constructor( @Application private val context: Context, @Main private val mainContext: CoroutineContext, @Background private val backgroundContext: CoroutineContext, private val screenRecordRepository: ScreenRecordRepository, Loading @@ -57,6 +61,9 @@ constructor( with(input) { when (action) { is QSTileUserAction.Click -> { if (Utils.isDesktopScreenCaptureEnabled(context)) { // TODO(b/412723197): open screen capture toolbar when it becomes available. } else { when (data) { is ScreenRecordModel.Starting -> { Log.d(TAG, "Cancelling countdown") Loading @@ -73,6 +80,7 @@ constructor( } } } } is QSTileUserAction.LongClick -> {} // no-op is QSTileUserAction.ToggleClick -> {} } Loading @@ -96,8 +104,7 @@ constructor( } // We animate from the touched expandable only if we are not on the keyguard, given that if // we // are we will dismiss it which will also collapse the shade. // we are we will dismiss it which will also collapse the shade. val shouldAnimateFromExpandable = expandable != null && !keyguardInteractor.isKeyguardCurrentlyShowing() val dismissAction = Loading