Loading packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/UdfpsControllerTest.java +7 −1 Original line number Diff line number Diff line Loading @@ -87,6 +87,7 @@ import com.android.systemui.biometrics.ui.viewmodel.DefaultUdfpsTouchOverlayView import com.android.systemui.biometrics.ui.viewmodel.DeviceEntryUdfpsTouchOverlayViewModel; import com.android.systemui.bouncer.domain.interactor.AlternateBouncerInteractor; import com.android.systemui.bouncer.domain.interactor.PrimaryBouncerInteractor; import com.android.systemui.camera.CameraGestureHelper; import com.android.systemui.classifier.FalsingCollector; import com.android.systemui.deviceentry.domain.interactor.DeviceEntryFaceAuthInteractor; import com.android.systemui.dump.DumpManager; Loading Loading @@ -118,6 +119,8 @@ import com.android.systemui.util.time.SystemClock; import dagger.Lazy; import javax.inject.Provider; import kotlinx.coroutines.CoroutineScope; import org.junit.Before; Loading Loading @@ -261,6 +264,8 @@ public class UdfpsControllerTest extends SysuiTestCase { private Lazy<DeviceEntryUdfpsTouchOverlayViewModel> mDeviceEntryUdfpsTouchOverlayViewModel; @Mock private Lazy<DefaultUdfpsTouchOverlayViewModel> mDefaultUdfpsTouchOverlayViewModel; @Mock private Provider<CameraGestureHelper> mCameraGestureHelper; @Before public void setUp() { Loading @@ -269,7 +274,8 @@ public class UdfpsControllerTest extends SysuiTestCase { mPowerRepository, mock(FalsingCollector.class), mock(ScreenOffAnimationController.class), mStatusBarStateController mStatusBarStateController, mCameraGestureHelper ); mPowerRepository.updateWakefulness( WakefulnessState.AWAKE, Loading packages/SystemUI/tests/src/com/android/systemui/camera/CameraGestureHelperTest.kt→packages/SystemUI/multivalentTests/src/com/android/systemui/camera/CameraGestureHelperTest.kt +80 −86 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package com.android.systemui.camera import android.app.ActivityManager import android.app.IActivityTaskManager import android.app.admin.DevicePolicyManager import android.content.ComponentName import android.content.ContentResolver import android.content.Intent Loading @@ -29,70 +30,59 @@ import androidx.test.filters.SmallTest import com.android.systemui.ActivityIntentHelper import com.android.systemui.SysuiTestCase import com.android.systemui.plugins.ActivityStarter import com.android.systemui.statusbar.NotificationLockscreenUserManager import com.android.systemui.statusbar.StatusBarState import com.android.systemui.statusbar.phone.CentralSurfaces import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager import com.android.systemui.statusbar.policy.KeyguardStateController import com.android.systemui.user.domain.interactor.SelectedUserInteractor import com.android.systemui.util.mockito.KotlinArgumentCaptor import com.android.systemui.util.mockito.any import com.android.systemui.util.mockito.eq import com.android.systemui.util.mockito.mock import com.android.systemui.util.mockito.whenever import com.google.common.truth.Truth.assertThat import com.google.common.util.concurrent.MoreExecutors import org.junit.Before import org.junit.Test import org.junit.runner.RunWith import org.mockito.ArgumentMatchers.isNull import org.mockito.Mock import org.mockito.Mockito.any import org.mockito.Mockito.anyInt import org.mockito.Mockito.verify import org.mockito.MockitoAnnotations import org.mockito.Mockito.`when` as whenever @SmallTest @RunWith(AndroidJUnit4::class) class CameraGestureHelperTest : SysuiTestCase() { @Mock lateinit var centralSurfaces: CentralSurfaces @Mock lateinit var statusBarKeyguardViewManager: StatusBarKeyguardViewManager @Mock lateinit var keyguardStateController: KeyguardStateController @Mock lateinit var packageManager: PackageManager @Mock lateinit var activityManager: ActivityManager @Mock lateinit var activityStarter: ActivityStarter @Mock lateinit var activityIntentHelper: ActivityIntentHelper @Mock lateinit var activityTaskManager: IActivityTaskManager @Mock lateinit var cameraIntents: CameraIntentsWrapper @Mock lateinit var contentResolver: ContentResolver @Mock lateinit var mSelectedUserInteractor: SelectedUserInteractor @Mock lateinit var statusBarKeyguardViewManager: StatusBarKeyguardViewManager @Mock lateinit var keyguardStateController: KeyguardStateController @Mock lateinit var packageManager: PackageManager @Mock lateinit var activityManager: ActivityManager @Mock lateinit var activityStarter: ActivityStarter @Mock lateinit var activityIntentHelper: ActivityIntentHelper @Mock lateinit var activityTaskManager: IActivityTaskManager @Mock lateinit var cameraIntents: CameraIntentsWrapper @Mock lateinit var contentResolver: ContentResolver @Mock lateinit var mSelectedUserInteractor: SelectedUserInteractor @Mock lateinit var devicePolicyManager: DevicePolicyManager @Mock lateinit var lockscreenUserManager: NotificationLockscreenUserManager private lateinit var underTest: CameraGestureHelper @Before fun setUp() { MockitoAnnotations.initMocks(this) whenever(cameraIntents.getSecureCameraIntent(anyInt())).thenReturn( Intent(CameraIntents.DEFAULT_SECURE_CAMERA_INTENT_ACTION) ) whenever(cameraIntents.getInsecureCameraIntent(anyInt())).thenReturn( Intent(CameraIntents.DEFAULT_INSECURE_CAMERA_INTENT_ACTION) ) whenever(cameraIntents.getSecureCameraIntent(any())) .thenReturn(Intent(CameraIntents.DEFAULT_SECURE_CAMERA_INTENT_ACTION)) whenever(cameraIntents.getInsecureCameraIntent(any())) .thenReturn(Intent(CameraIntents.DEFAULT_INSECURE_CAMERA_INTENT_ACTION)) prepare() underTest = CameraGestureHelper( underTest = CameraGestureHelper( context = mock(), centralSurfaces = centralSurfaces, keyguardStateController = keyguardStateController, statusBarKeyguardViewManager = statusBarKeyguardViewManager, packageManager = packageManager, Loading @@ -104,6 +94,8 @@ class CameraGestureHelperTest : SysuiTestCase() { contentResolver = contentResolver, uiExecutor = MoreExecutors.directExecutor(), selectedUserInteractor = mSelectedUserInteractor, devicePolicyManager = devicePolicyManager, lockscreenUserManager = lockscreenUserManager, ) } Loading Loading @@ -131,7 +123,13 @@ class CameraGestureHelperTest : SysuiTestCase() { isCameraActivityRunningOnTop: Boolean = false, isTaskListEmpty: Boolean = false, ) { whenever(centralSurfaces.isCameraAllowedByAdmin).thenReturn(isCameraAllowedByAdmin) whenever(lockscreenUserManager.getCurrentUserId()).thenReturn(1) if (isCameraAllowedByAdmin) { whenever(devicePolicyManager.getCameraDisabled(isNull(), any())).thenReturn(false) whenever(keyguardStateController.isMethodSecure).thenReturn(false) } else { whenever(devicePolicyManager.getCameraDisabled(isNull(), any())).thenReturn(true) } whenever(activityIntentHelper.wouldLaunchResolverActivity(any(), anyInt())) .thenReturn(installedCameraAppCount > 1) Loading @@ -141,30 +139,26 @@ class CameraGestureHelperTest : SysuiTestCase() { .thenReturn(!isUsingSecureScreenLockOption) if (installedCameraAppCount >= 1) { val resolveInfo = ResolveInfo().apply { this.activityInfo = ActivityInfo().apply { packageName = CAMERA_APP_PACKAGE_NAME val resolveInfo = ResolveInfo().apply { this.activityInfo = ActivityInfo().apply { packageName = CAMERA_APP_PACKAGE_NAME } } } whenever(packageManager.resolveActivityAsUser(any(), anyInt(), anyInt())).thenReturn( resolveInfo ) whenever(packageManager.resolveActivityAsUser(any(), anyInt(), anyInt())) .thenReturn(resolveInfo) } else { whenever(packageManager.resolveActivityAsUser(any(), anyInt(), anyInt())).thenReturn( null ) whenever(packageManager.resolveActivityAsUser(any(), anyInt(), anyInt())) .thenReturn(null) } when { isCameraActivityRunningOnTop -> { val runningTaskInfo = ActivityManager.RunningTaskInfo().apply { val runningTaskInfo = ActivityManager.RunningTaskInfo().apply { topActivity = ComponentName(CAMERA_APP_PACKAGE_NAME, "cameraActivity") } whenever(activityManager.getRunningTasks(anyInt())).thenReturn( listOf( runningTaskInfo ) ) whenever(activityManager.getRunningTasks(anyInt())) .thenReturn(listOf(runningTaskInfo)) } isTaskListEmpty -> { whenever(activityManager.getRunningTasks(anyInt())).thenReturn(emptyList()) Loading Loading @@ -289,17 +283,18 @@ class CameraGestureHelperTest : SysuiTestCase() { ) { val intentCaptor = KotlinArgumentCaptor(Intent::class.java) if (isSecure && !moreThanOneCameraAppInstalled) { verify(activityTaskManager).startActivityAsUser( any(), any(), any(), verify(activityTaskManager) .startActivityAsUser( isNull(), isNull(), isNull(), intentCaptor.capture(), any(), any(), any(), isNull(), isNull(), isNull(), anyInt(), anyInt(), any(), isNull(), any(), anyInt() ) Loading @@ -309,8 +304,7 @@ class CameraGestureHelperTest : SysuiTestCase() { val intent = intentCaptor.value assertThat(CameraIntents.isSecureCameraIntent(intent)).isEqualTo(isSecure) assertThat(intent.getIntExtra(CameraIntents.EXTRA_LAUNCH_SOURCE, -1)) .isEqualTo(source) assertThat(intent.getIntExtra(CameraIntents.EXTRA_LAUNCH_SOURCE, -1)).isEqualTo(source) } companion object { Loading packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/data/repository/DeviceEntryFaceAuthRepositoryTest.kt +4 −13 Original line number Diff line number Diff line Loading @@ -58,7 +58,6 @@ import com.android.systemui.dump.DumpManager import com.android.systemui.flags.FakeFeatureFlags import com.android.systemui.keyguard.data.repository.BiometricType import com.android.systemui.keyguard.data.repository.fakeBiometricSettingsRepository import com.android.systemui.keyguard.data.repository.fakeCommandQueue import com.android.systemui.keyguard.data.repository.fakeDeviceEntryFingerprintAuthRepository import com.android.systemui.keyguard.data.repository.fakeKeyguardRepository import com.android.systemui.keyguard.data.repository.fakeKeyguardTransitionRepository Loading @@ -78,7 +77,6 @@ import com.android.systemui.log.table.TableLogBuffer import com.android.systemui.power.domain.interactor.PowerInteractor.Companion.setAsleepForTest import com.android.systemui.power.domain.interactor.PowerInteractor.Companion.setAwakeForTest import com.android.systemui.power.domain.interactor.powerInteractor import com.android.systemui.statusbar.commandQueue import com.android.systemui.statusbar.phone.KeyguardBypassController import com.android.systemui.testKosmos import com.android.systemui.user.data.model.SelectionStatus Loading Loading @@ -116,7 +114,7 @@ import org.mockito.MockitoAnnotations @SmallTest @RunWith(AndroidJUnit4::class) class DeviceEntryFaceAuthRepositoryTest : SysuiTestCase() { private val kosmos = testKosmos().apply { this.commandQueue = this.fakeCommandQueue } private val kosmos = testKosmos() private lateinit var underTest: DeviceEntryFaceAuthRepositoryImpl @Mock private lateinit var faceManager: FaceManager Loading Loading @@ -162,7 +160,6 @@ class DeviceEntryFaceAuthRepositoryTest : SysuiTestCase() { private val displayStateInteractor = kosmos.displayStateInteractor private val bouncerRepository = kosmos.fakeKeyguardBouncerRepository private val displayRepository = kosmos.displayRepository private val fakeCommandQueue = kosmos.fakeCommandQueue private val keyguardTransitionInteractor = kosmos.keyguardTransitionInteractor private lateinit var featureFlags: FakeFeatureFlags Loading Loading @@ -572,9 +569,7 @@ class DeviceEntryFaceAuthRepositoryTest : SysuiTestCase() { bouncerRepository.setAlternateVisible(false) // Keyguard is occluded when secure camera is active. keyguardRepository.setKeyguardOccluded(true) fakeCommandQueue.doForEachCallback { it.onCameraLaunchGestureDetected(CAMERA_LAUNCH_SOURCE_POWER_DOUBLE_TAP) } keyguardInteractor.onCameraLaunchDetected(CAMERA_LAUNCH_SOURCE_POWER_DOUBLE_TAP) } } Loading @@ -589,9 +584,7 @@ class DeviceEntryFaceAuthRepositoryTest : SysuiTestCase() { assertThat(canFaceAuthRun()).isTrue() // launch secure camera fakeCommandQueue.doForEachCallback { it.onCameraLaunchGestureDetected(CAMERA_LAUNCH_SOURCE_POWER_DOUBLE_TAP) } keyguardInteractor.onCameraLaunchDetected(CAMERA_LAUNCH_SOURCE_POWER_DOUBLE_TAP) keyguardRepository.setKeyguardOccluded(true) runCurrent() assertThat(canFaceAuthRun()).isFalse() Loading Loading @@ -870,9 +863,7 @@ class DeviceEntryFaceAuthRepositoryTest : SysuiTestCase() { bouncerRepository.setAlternateVisible(false) // Keyguard is occluded when secure camera is active. keyguardRepository.setKeyguardOccluded(true) fakeCommandQueue.doForEachCallback { it.onCameraLaunchGestureDetected(CAMERA_LAUNCH_SOURCE_POWER_DOUBLE_TAP) } keyguardInteractor.onCameraLaunchDetected(CAMERA_LAUNCH_SOURCE_POWER_DOUBLE_TAP) } } Loading packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/KeyguardInteractorTest.kt +11 −34 Original line number Diff line number Diff line Loading @@ -32,7 +32,7 @@ import com.android.systemui.flags.EnableSceneContainer import com.android.systemui.keyguard.data.repository.fakeCommandQueue import com.android.systemui.keyguard.data.repository.fakeKeyguardRepository import com.android.systemui.keyguard.data.repository.fakeKeyguardTransitionRepository import com.android.systemui.keyguard.shared.model.CameraLaunchSourceModel import com.android.systemui.keyguard.shared.model.CameraLaunchType import com.android.systemui.keyguard.shared.model.KeyguardState import com.android.systemui.keyguard.shared.model.StatusBarState import com.android.systemui.keyguard.shared.model.TransitionState Loading @@ -47,7 +47,6 @@ import com.google.common.truth.Truth.assertThat import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.flowOf import kotlinx.coroutines.flow.onCompletion import kotlinx.coroutines.test.runCurrent import kotlinx.coroutines.test.runTest import org.junit.Before Loading Loading @@ -87,31 +86,17 @@ class KeyguardInteractorTest : SysuiTestCase() { val cameraLaunchSource = collectLastValue(flow) runCurrent() commandQueue.doForEachCallback { it.onCameraLaunchGestureDetected(StatusBarManager.CAMERA_LAUNCH_SOURCE_WIGGLE) } assertThat(cameraLaunchSource()).isEqualTo(CameraLaunchSourceModel.WIGGLE) underTest.onCameraLaunchDetected(StatusBarManager.CAMERA_LAUNCH_SOURCE_POWER_DOUBLE_TAP) assertThat(cameraLaunchSource()!!.type).isEqualTo(CameraLaunchType.POWER_DOUBLE_TAP) commandQueue.doForEachCallback { it.onCameraLaunchGestureDetected( StatusBarManager.CAMERA_LAUNCH_SOURCE_POWER_DOUBLE_TAP ) } assertThat(cameraLaunchSource()).isEqualTo(CameraLaunchSourceModel.POWER_DOUBLE_TAP) underTest.onCameraLaunchDetected(StatusBarManager.CAMERA_LAUNCH_SOURCE_WIGGLE) assertThat(cameraLaunchSource()!!.type).isEqualTo(CameraLaunchType.WIGGLE) commandQueue.doForEachCallback { it.onCameraLaunchGestureDetected(StatusBarManager.CAMERA_LAUNCH_SOURCE_LIFT_TRIGGER) } assertThat(cameraLaunchSource()).isEqualTo(CameraLaunchSourceModel.LIFT_TRIGGER) underTest.onCameraLaunchDetected(StatusBarManager.CAMERA_LAUNCH_SOURCE_LIFT_TRIGGER) assertThat(cameraLaunchSource()!!.type).isEqualTo(CameraLaunchType.LIFT_TRIGGER) commandQueue.doForEachCallback { it.onCameraLaunchGestureDetected( StatusBarManager.CAMERA_LAUNCH_SOURCE_QUICK_AFFORDANCE ) } assertThat(cameraLaunchSource()).isEqualTo(CameraLaunchSourceModel.QUICK_AFFORDANCE) flow.onCompletion { assertThat(commandQueue.callbackCount()).isEqualTo(0) } underTest.onCameraLaunchDetected(StatusBarManager.CAMERA_LAUNCH_SOURCE_QUICK_AFFORDANCE) assertThat(cameraLaunchSource()!!.type).isEqualTo(CameraLaunchType.QUICK_AFFORDANCE) } @Test Loading @@ -121,11 +106,7 @@ class KeyguardInteractorTest : SysuiTestCase() { val secureCameraActive = collectLastValue(underTest.isSecureCameraActive) runCurrent() commandQueue.doForEachCallback { it.onCameraLaunchGestureDetected( StatusBarManager.CAMERA_LAUNCH_SOURCE_POWER_DOUBLE_TAP ) } underTest.onCameraLaunchDetected(StatusBarManager.CAMERA_LAUNCH_SOURCE_POWER_DOUBLE_TAP) assertThat(secureCameraActive()).isTrue() Loading @@ -146,11 +127,7 @@ class KeyguardInteractorTest : SysuiTestCase() { val secureCameraActive = collectLastValue(underTest.isSecureCameraActive) runCurrent() commandQueue.doForEachCallback { it.onCameraLaunchGestureDetected( StatusBarManager.CAMERA_LAUNCH_SOURCE_POWER_DOUBLE_TAP ) } underTest.onCameraLaunchDetected(StatusBarManager.CAMERA_LAUNCH_SOURCE_POWER_DOUBLE_TAP) assertThat(secureCameraActive()).isTrue() // Keyguard is showing and not occluded Loading packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/KeyguardTransitionScenariosTest.kt +3 −10 Original line number Diff line number Diff line Loading @@ -16,7 +16,7 @@ package com.android.systemui.keyguard.domain.interactor import android.app.StatusBarManager import android.app.StatusBarManager.CAMERA_LAUNCH_SOURCE_POWER_DOUBLE_TAP import android.platform.test.annotations.DisableFlags import android.platform.test.annotations.EnableFlags import android.platform.test.flag.junit.FlagsParameterization Loading @@ -42,7 +42,6 @@ import com.android.systemui.flags.Flags.COMMUNAL_SERVICE_ENABLED import com.android.systemui.flags.andSceneContainer import com.android.systemui.flags.fakeFeatureFlagsClassic import com.android.systemui.keyguard.data.repository.FakeKeyguardTransitionRepository import com.android.systemui.keyguard.data.repository.fakeCommandQueue import com.android.systemui.keyguard.data.repository.fakeKeyguardRepository import com.android.systemui.keyguard.data.repository.fakeKeyguardTransitionRepository import com.android.systemui.keyguard.shared.model.BiometricUnlockMode Loading @@ -59,7 +58,6 @@ import com.android.systemui.power.domain.interactor.PowerInteractor.Companion.se import com.android.systemui.power.domain.interactor.powerInteractor import com.android.systemui.scene.shared.flag.SceneContainerFlag import com.android.systemui.shade.shadeTestUtil import com.android.systemui.statusbar.commandQueue import com.android.systemui.testKosmos import com.android.systemui.util.mockito.whenever import kotlinx.coroutines.ExperimentalCoroutinesApi Loading Loading @@ -93,13 +91,12 @@ class KeyguardTransitionScenariosTest(flags: FlagsParameterization?) : SysuiTest private val kosmos = testKosmos().apply { fakeKeyguardTransitionRepository = spy(FakeKeyguardTransitionRepository()) this.commandQueue = fakeCommandQueue } private val testScope = kosmos.testScope private val keyguardRepository by lazy { kosmos.fakeKeyguardRepository } private val keyguardInteractor by lazy { kosmos.keyguardInteractor } private val bouncerRepository by lazy { kosmos.fakeKeyguardBouncerRepository } private var commandQueue = kosmos.fakeCommandQueue private val shadeTestUtil by lazy { kosmos.shadeTestUtil } private val transitionRepository by lazy { kosmos.fakeKeyguardTransitionRepository } private lateinit var featureFlags: FakeFeatureFlags Loading Loading @@ -1724,11 +1721,7 @@ class KeyguardTransitionScenariosTest(flags: FlagsParameterization?) : SysuiTest reset(transitionRepository) // ...AND WHEN the camera gesture is detected quickly afterwards commandQueue.doForEachCallback { it.onCameraLaunchGestureDetected( StatusBarManager.CAMERA_LAUNCH_SOURCE_POWER_DOUBLE_TAP ) } keyguardInteractor.onCameraLaunchDetected(CAMERA_LAUNCH_SOURCE_POWER_DOUBLE_TAP) runCurrent() // THEN a transition from DOZING => OCCLUDED should occur Loading Loading
packages/SystemUI/multivalentTests/src/com/android/systemui/biometrics/UdfpsControllerTest.java +7 −1 Original line number Diff line number Diff line Loading @@ -87,6 +87,7 @@ import com.android.systemui.biometrics.ui.viewmodel.DefaultUdfpsTouchOverlayView import com.android.systemui.biometrics.ui.viewmodel.DeviceEntryUdfpsTouchOverlayViewModel; import com.android.systemui.bouncer.domain.interactor.AlternateBouncerInteractor; import com.android.systemui.bouncer.domain.interactor.PrimaryBouncerInteractor; import com.android.systemui.camera.CameraGestureHelper; import com.android.systemui.classifier.FalsingCollector; import com.android.systemui.deviceentry.domain.interactor.DeviceEntryFaceAuthInteractor; import com.android.systemui.dump.DumpManager; Loading Loading @@ -118,6 +119,8 @@ import com.android.systemui.util.time.SystemClock; import dagger.Lazy; import javax.inject.Provider; import kotlinx.coroutines.CoroutineScope; import org.junit.Before; Loading Loading @@ -261,6 +264,8 @@ public class UdfpsControllerTest extends SysuiTestCase { private Lazy<DeviceEntryUdfpsTouchOverlayViewModel> mDeviceEntryUdfpsTouchOverlayViewModel; @Mock private Lazy<DefaultUdfpsTouchOverlayViewModel> mDefaultUdfpsTouchOverlayViewModel; @Mock private Provider<CameraGestureHelper> mCameraGestureHelper; @Before public void setUp() { Loading @@ -269,7 +274,8 @@ public class UdfpsControllerTest extends SysuiTestCase { mPowerRepository, mock(FalsingCollector.class), mock(ScreenOffAnimationController.class), mStatusBarStateController mStatusBarStateController, mCameraGestureHelper ); mPowerRepository.updateWakefulness( WakefulnessState.AWAKE, Loading
packages/SystemUI/tests/src/com/android/systemui/camera/CameraGestureHelperTest.kt→packages/SystemUI/multivalentTests/src/com/android/systemui/camera/CameraGestureHelperTest.kt +80 −86 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package com.android.systemui.camera import android.app.ActivityManager import android.app.IActivityTaskManager import android.app.admin.DevicePolicyManager import android.content.ComponentName import android.content.ContentResolver import android.content.Intent Loading @@ -29,70 +30,59 @@ import androidx.test.filters.SmallTest import com.android.systemui.ActivityIntentHelper import com.android.systemui.SysuiTestCase import com.android.systemui.plugins.ActivityStarter import com.android.systemui.statusbar.NotificationLockscreenUserManager import com.android.systemui.statusbar.StatusBarState import com.android.systemui.statusbar.phone.CentralSurfaces import com.android.systemui.statusbar.phone.StatusBarKeyguardViewManager import com.android.systemui.statusbar.policy.KeyguardStateController import com.android.systemui.user.domain.interactor.SelectedUserInteractor import com.android.systemui.util.mockito.KotlinArgumentCaptor import com.android.systemui.util.mockito.any import com.android.systemui.util.mockito.eq import com.android.systemui.util.mockito.mock import com.android.systemui.util.mockito.whenever import com.google.common.truth.Truth.assertThat import com.google.common.util.concurrent.MoreExecutors import org.junit.Before import org.junit.Test import org.junit.runner.RunWith import org.mockito.ArgumentMatchers.isNull import org.mockito.Mock import org.mockito.Mockito.any import org.mockito.Mockito.anyInt import org.mockito.Mockito.verify import org.mockito.MockitoAnnotations import org.mockito.Mockito.`when` as whenever @SmallTest @RunWith(AndroidJUnit4::class) class CameraGestureHelperTest : SysuiTestCase() { @Mock lateinit var centralSurfaces: CentralSurfaces @Mock lateinit var statusBarKeyguardViewManager: StatusBarKeyguardViewManager @Mock lateinit var keyguardStateController: KeyguardStateController @Mock lateinit var packageManager: PackageManager @Mock lateinit var activityManager: ActivityManager @Mock lateinit var activityStarter: ActivityStarter @Mock lateinit var activityIntentHelper: ActivityIntentHelper @Mock lateinit var activityTaskManager: IActivityTaskManager @Mock lateinit var cameraIntents: CameraIntentsWrapper @Mock lateinit var contentResolver: ContentResolver @Mock lateinit var mSelectedUserInteractor: SelectedUserInteractor @Mock lateinit var statusBarKeyguardViewManager: StatusBarKeyguardViewManager @Mock lateinit var keyguardStateController: KeyguardStateController @Mock lateinit var packageManager: PackageManager @Mock lateinit var activityManager: ActivityManager @Mock lateinit var activityStarter: ActivityStarter @Mock lateinit var activityIntentHelper: ActivityIntentHelper @Mock lateinit var activityTaskManager: IActivityTaskManager @Mock lateinit var cameraIntents: CameraIntentsWrapper @Mock lateinit var contentResolver: ContentResolver @Mock lateinit var mSelectedUserInteractor: SelectedUserInteractor @Mock lateinit var devicePolicyManager: DevicePolicyManager @Mock lateinit var lockscreenUserManager: NotificationLockscreenUserManager private lateinit var underTest: CameraGestureHelper @Before fun setUp() { MockitoAnnotations.initMocks(this) whenever(cameraIntents.getSecureCameraIntent(anyInt())).thenReturn( Intent(CameraIntents.DEFAULT_SECURE_CAMERA_INTENT_ACTION) ) whenever(cameraIntents.getInsecureCameraIntent(anyInt())).thenReturn( Intent(CameraIntents.DEFAULT_INSECURE_CAMERA_INTENT_ACTION) ) whenever(cameraIntents.getSecureCameraIntent(any())) .thenReturn(Intent(CameraIntents.DEFAULT_SECURE_CAMERA_INTENT_ACTION)) whenever(cameraIntents.getInsecureCameraIntent(any())) .thenReturn(Intent(CameraIntents.DEFAULT_INSECURE_CAMERA_INTENT_ACTION)) prepare() underTest = CameraGestureHelper( underTest = CameraGestureHelper( context = mock(), centralSurfaces = centralSurfaces, keyguardStateController = keyguardStateController, statusBarKeyguardViewManager = statusBarKeyguardViewManager, packageManager = packageManager, Loading @@ -104,6 +94,8 @@ class CameraGestureHelperTest : SysuiTestCase() { contentResolver = contentResolver, uiExecutor = MoreExecutors.directExecutor(), selectedUserInteractor = mSelectedUserInteractor, devicePolicyManager = devicePolicyManager, lockscreenUserManager = lockscreenUserManager, ) } Loading Loading @@ -131,7 +123,13 @@ class CameraGestureHelperTest : SysuiTestCase() { isCameraActivityRunningOnTop: Boolean = false, isTaskListEmpty: Boolean = false, ) { whenever(centralSurfaces.isCameraAllowedByAdmin).thenReturn(isCameraAllowedByAdmin) whenever(lockscreenUserManager.getCurrentUserId()).thenReturn(1) if (isCameraAllowedByAdmin) { whenever(devicePolicyManager.getCameraDisabled(isNull(), any())).thenReturn(false) whenever(keyguardStateController.isMethodSecure).thenReturn(false) } else { whenever(devicePolicyManager.getCameraDisabled(isNull(), any())).thenReturn(true) } whenever(activityIntentHelper.wouldLaunchResolverActivity(any(), anyInt())) .thenReturn(installedCameraAppCount > 1) Loading @@ -141,30 +139,26 @@ class CameraGestureHelperTest : SysuiTestCase() { .thenReturn(!isUsingSecureScreenLockOption) if (installedCameraAppCount >= 1) { val resolveInfo = ResolveInfo().apply { this.activityInfo = ActivityInfo().apply { packageName = CAMERA_APP_PACKAGE_NAME val resolveInfo = ResolveInfo().apply { this.activityInfo = ActivityInfo().apply { packageName = CAMERA_APP_PACKAGE_NAME } } } whenever(packageManager.resolveActivityAsUser(any(), anyInt(), anyInt())).thenReturn( resolveInfo ) whenever(packageManager.resolveActivityAsUser(any(), anyInt(), anyInt())) .thenReturn(resolveInfo) } else { whenever(packageManager.resolveActivityAsUser(any(), anyInt(), anyInt())).thenReturn( null ) whenever(packageManager.resolveActivityAsUser(any(), anyInt(), anyInt())) .thenReturn(null) } when { isCameraActivityRunningOnTop -> { val runningTaskInfo = ActivityManager.RunningTaskInfo().apply { val runningTaskInfo = ActivityManager.RunningTaskInfo().apply { topActivity = ComponentName(CAMERA_APP_PACKAGE_NAME, "cameraActivity") } whenever(activityManager.getRunningTasks(anyInt())).thenReturn( listOf( runningTaskInfo ) ) whenever(activityManager.getRunningTasks(anyInt())) .thenReturn(listOf(runningTaskInfo)) } isTaskListEmpty -> { whenever(activityManager.getRunningTasks(anyInt())).thenReturn(emptyList()) Loading Loading @@ -289,17 +283,18 @@ class CameraGestureHelperTest : SysuiTestCase() { ) { val intentCaptor = KotlinArgumentCaptor(Intent::class.java) if (isSecure && !moreThanOneCameraAppInstalled) { verify(activityTaskManager).startActivityAsUser( any(), any(), any(), verify(activityTaskManager) .startActivityAsUser( isNull(), isNull(), isNull(), intentCaptor.capture(), any(), any(), any(), isNull(), isNull(), isNull(), anyInt(), anyInt(), any(), isNull(), any(), anyInt() ) Loading @@ -309,8 +304,7 @@ class CameraGestureHelperTest : SysuiTestCase() { val intent = intentCaptor.value assertThat(CameraIntents.isSecureCameraIntent(intent)).isEqualTo(isSecure) assertThat(intent.getIntExtra(CameraIntents.EXTRA_LAUNCH_SOURCE, -1)) .isEqualTo(source) assertThat(intent.getIntExtra(CameraIntents.EXTRA_LAUNCH_SOURCE, -1)).isEqualTo(source) } companion object { Loading
packages/SystemUI/multivalentTests/src/com/android/systemui/deviceentry/data/repository/DeviceEntryFaceAuthRepositoryTest.kt +4 −13 Original line number Diff line number Diff line Loading @@ -58,7 +58,6 @@ import com.android.systemui.dump.DumpManager import com.android.systemui.flags.FakeFeatureFlags import com.android.systemui.keyguard.data.repository.BiometricType import com.android.systemui.keyguard.data.repository.fakeBiometricSettingsRepository import com.android.systemui.keyguard.data.repository.fakeCommandQueue import com.android.systemui.keyguard.data.repository.fakeDeviceEntryFingerprintAuthRepository import com.android.systemui.keyguard.data.repository.fakeKeyguardRepository import com.android.systemui.keyguard.data.repository.fakeKeyguardTransitionRepository Loading @@ -78,7 +77,6 @@ import com.android.systemui.log.table.TableLogBuffer import com.android.systemui.power.domain.interactor.PowerInteractor.Companion.setAsleepForTest import com.android.systemui.power.domain.interactor.PowerInteractor.Companion.setAwakeForTest import com.android.systemui.power.domain.interactor.powerInteractor import com.android.systemui.statusbar.commandQueue import com.android.systemui.statusbar.phone.KeyguardBypassController import com.android.systemui.testKosmos import com.android.systemui.user.data.model.SelectionStatus Loading Loading @@ -116,7 +114,7 @@ import org.mockito.MockitoAnnotations @SmallTest @RunWith(AndroidJUnit4::class) class DeviceEntryFaceAuthRepositoryTest : SysuiTestCase() { private val kosmos = testKosmos().apply { this.commandQueue = this.fakeCommandQueue } private val kosmos = testKosmos() private lateinit var underTest: DeviceEntryFaceAuthRepositoryImpl @Mock private lateinit var faceManager: FaceManager Loading Loading @@ -162,7 +160,6 @@ class DeviceEntryFaceAuthRepositoryTest : SysuiTestCase() { private val displayStateInteractor = kosmos.displayStateInteractor private val bouncerRepository = kosmos.fakeKeyguardBouncerRepository private val displayRepository = kosmos.displayRepository private val fakeCommandQueue = kosmos.fakeCommandQueue private val keyguardTransitionInteractor = kosmos.keyguardTransitionInteractor private lateinit var featureFlags: FakeFeatureFlags Loading Loading @@ -572,9 +569,7 @@ class DeviceEntryFaceAuthRepositoryTest : SysuiTestCase() { bouncerRepository.setAlternateVisible(false) // Keyguard is occluded when secure camera is active. keyguardRepository.setKeyguardOccluded(true) fakeCommandQueue.doForEachCallback { it.onCameraLaunchGestureDetected(CAMERA_LAUNCH_SOURCE_POWER_DOUBLE_TAP) } keyguardInteractor.onCameraLaunchDetected(CAMERA_LAUNCH_SOURCE_POWER_DOUBLE_TAP) } } Loading @@ -589,9 +584,7 @@ class DeviceEntryFaceAuthRepositoryTest : SysuiTestCase() { assertThat(canFaceAuthRun()).isTrue() // launch secure camera fakeCommandQueue.doForEachCallback { it.onCameraLaunchGestureDetected(CAMERA_LAUNCH_SOURCE_POWER_DOUBLE_TAP) } keyguardInteractor.onCameraLaunchDetected(CAMERA_LAUNCH_SOURCE_POWER_DOUBLE_TAP) keyguardRepository.setKeyguardOccluded(true) runCurrent() assertThat(canFaceAuthRun()).isFalse() Loading Loading @@ -870,9 +863,7 @@ class DeviceEntryFaceAuthRepositoryTest : SysuiTestCase() { bouncerRepository.setAlternateVisible(false) // Keyguard is occluded when secure camera is active. keyguardRepository.setKeyguardOccluded(true) fakeCommandQueue.doForEachCallback { it.onCameraLaunchGestureDetected(CAMERA_LAUNCH_SOURCE_POWER_DOUBLE_TAP) } keyguardInteractor.onCameraLaunchDetected(CAMERA_LAUNCH_SOURCE_POWER_DOUBLE_TAP) } } Loading
packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/KeyguardInteractorTest.kt +11 −34 Original line number Diff line number Diff line Loading @@ -32,7 +32,7 @@ import com.android.systemui.flags.EnableSceneContainer import com.android.systemui.keyguard.data.repository.fakeCommandQueue import com.android.systemui.keyguard.data.repository.fakeKeyguardRepository import com.android.systemui.keyguard.data.repository.fakeKeyguardTransitionRepository import com.android.systemui.keyguard.shared.model.CameraLaunchSourceModel import com.android.systemui.keyguard.shared.model.CameraLaunchType import com.android.systemui.keyguard.shared.model.KeyguardState import com.android.systemui.keyguard.shared.model.StatusBarState import com.android.systemui.keyguard.shared.model.TransitionState Loading @@ -47,7 +47,6 @@ import com.google.common.truth.Truth.assertThat import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.flowOf import kotlinx.coroutines.flow.onCompletion import kotlinx.coroutines.test.runCurrent import kotlinx.coroutines.test.runTest import org.junit.Before Loading Loading @@ -87,31 +86,17 @@ class KeyguardInteractorTest : SysuiTestCase() { val cameraLaunchSource = collectLastValue(flow) runCurrent() commandQueue.doForEachCallback { it.onCameraLaunchGestureDetected(StatusBarManager.CAMERA_LAUNCH_SOURCE_WIGGLE) } assertThat(cameraLaunchSource()).isEqualTo(CameraLaunchSourceModel.WIGGLE) underTest.onCameraLaunchDetected(StatusBarManager.CAMERA_LAUNCH_SOURCE_POWER_DOUBLE_TAP) assertThat(cameraLaunchSource()!!.type).isEqualTo(CameraLaunchType.POWER_DOUBLE_TAP) commandQueue.doForEachCallback { it.onCameraLaunchGestureDetected( StatusBarManager.CAMERA_LAUNCH_SOURCE_POWER_DOUBLE_TAP ) } assertThat(cameraLaunchSource()).isEqualTo(CameraLaunchSourceModel.POWER_DOUBLE_TAP) underTest.onCameraLaunchDetected(StatusBarManager.CAMERA_LAUNCH_SOURCE_WIGGLE) assertThat(cameraLaunchSource()!!.type).isEqualTo(CameraLaunchType.WIGGLE) commandQueue.doForEachCallback { it.onCameraLaunchGestureDetected(StatusBarManager.CAMERA_LAUNCH_SOURCE_LIFT_TRIGGER) } assertThat(cameraLaunchSource()).isEqualTo(CameraLaunchSourceModel.LIFT_TRIGGER) underTest.onCameraLaunchDetected(StatusBarManager.CAMERA_LAUNCH_SOURCE_LIFT_TRIGGER) assertThat(cameraLaunchSource()!!.type).isEqualTo(CameraLaunchType.LIFT_TRIGGER) commandQueue.doForEachCallback { it.onCameraLaunchGestureDetected( StatusBarManager.CAMERA_LAUNCH_SOURCE_QUICK_AFFORDANCE ) } assertThat(cameraLaunchSource()).isEqualTo(CameraLaunchSourceModel.QUICK_AFFORDANCE) flow.onCompletion { assertThat(commandQueue.callbackCount()).isEqualTo(0) } underTest.onCameraLaunchDetected(StatusBarManager.CAMERA_LAUNCH_SOURCE_QUICK_AFFORDANCE) assertThat(cameraLaunchSource()!!.type).isEqualTo(CameraLaunchType.QUICK_AFFORDANCE) } @Test Loading @@ -121,11 +106,7 @@ class KeyguardInteractorTest : SysuiTestCase() { val secureCameraActive = collectLastValue(underTest.isSecureCameraActive) runCurrent() commandQueue.doForEachCallback { it.onCameraLaunchGestureDetected( StatusBarManager.CAMERA_LAUNCH_SOURCE_POWER_DOUBLE_TAP ) } underTest.onCameraLaunchDetected(StatusBarManager.CAMERA_LAUNCH_SOURCE_POWER_DOUBLE_TAP) assertThat(secureCameraActive()).isTrue() Loading @@ -146,11 +127,7 @@ class KeyguardInteractorTest : SysuiTestCase() { val secureCameraActive = collectLastValue(underTest.isSecureCameraActive) runCurrent() commandQueue.doForEachCallback { it.onCameraLaunchGestureDetected( StatusBarManager.CAMERA_LAUNCH_SOURCE_POWER_DOUBLE_TAP ) } underTest.onCameraLaunchDetected(StatusBarManager.CAMERA_LAUNCH_SOURCE_POWER_DOUBLE_TAP) assertThat(secureCameraActive()).isTrue() // Keyguard is showing and not occluded Loading
packages/SystemUI/multivalentTests/src/com/android/systemui/keyguard/domain/interactor/KeyguardTransitionScenariosTest.kt +3 −10 Original line number Diff line number Diff line Loading @@ -16,7 +16,7 @@ package com.android.systemui.keyguard.domain.interactor import android.app.StatusBarManager import android.app.StatusBarManager.CAMERA_LAUNCH_SOURCE_POWER_DOUBLE_TAP import android.platform.test.annotations.DisableFlags import android.platform.test.annotations.EnableFlags import android.platform.test.flag.junit.FlagsParameterization Loading @@ -42,7 +42,6 @@ import com.android.systemui.flags.Flags.COMMUNAL_SERVICE_ENABLED import com.android.systemui.flags.andSceneContainer import com.android.systemui.flags.fakeFeatureFlagsClassic import com.android.systemui.keyguard.data.repository.FakeKeyguardTransitionRepository import com.android.systemui.keyguard.data.repository.fakeCommandQueue import com.android.systemui.keyguard.data.repository.fakeKeyguardRepository import com.android.systemui.keyguard.data.repository.fakeKeyguardTransitionRepository import com.android.systemui.keyguard.shared.model.BiometricUnlockMode Loading @@ -59,7 +58,6 @@ import com.android.systemui.power.domain.interactor.PowerInteractor.Companion.se import com.android.systemui.power.domain.interactor.powerInteractor import com.android.systemui.scene.shared.flag.SceneContainerFlag import com.android.systemui.shade.shadeTestUtil import com.android.systemui.statusbar.commandQueue import com.android.systemui.testKosmos import com.android.systemui.util.mockito.whenever import kotlinx.coroutines.ExperimentalCoroutinesApi Loading Loading @@ -93,13 +91,12 @@ class KeyguardTransitionScenariosTest(flags: FlagsParameterization?) : SysuiTest private val kosmos = testKosmos().apply { fakeKeyguardTransitionRepository = spy(FakeKeyguardTransitionRepository()) this.commandQueue = fakeCommandQueue } private val testScope = kosmos.testScope private val keyguardRepository by lazy { kosmos.fakeKeyguardRepository } private val keyguardInteractor by lazy { kosmos.keyguardInteractor } private val bouncerRepository by lazy { kosmos.fakeKeyguardBouncerRepository } private var commandQueue = kosmos.fakeCommandQueue private val shadeTestUtil by lazy { kosmos.shadeTestUtil } private val transitionRepository by lazy { kosmos.fakeKeyguardTransitionRepository } private lateinit var featureFlags: FakeFeatureFlags Loading Loading @@ -1724,11 +1721,7 @@ class KeyguardTransitionScenariosTest(flags: FlagsParameterization?) : SysuiTest reset(transitionRepository) // ...AND WHEN the camera gesture is detected quickly afterwards commandQueue.doForEachCallback { it.onCameraLaunchGestureDetected( StatusBarManager.CAMERA_LAUNCH_SOURCE_POWER_DOUBLE_TAP ) } keyguardInteractor.onCameraLaunchDetected(CAMERA_LAUNCH_SOURCE_POWER_DOUBLE_TAP) runCurrent() // THEN a transition from DOZING => OCCLUDED should occur Loading