[Central Surfaces] Remove AuthRippleController's dependency on CS.
Bug: 277762009 Test: compiles Test: auth ripple still works on various devices Test: atest AuthRippleControllerTest Change-Id: I7de4f4840d09a294ae367063b1f3d1fb50973d98
This commit is contained in:
@@ -23,6 +23,7 @@ import android.content.Context
|
||||
import android.graphics.Point
|
||||
import android.hardware.biometrics.BiometricFingerprintConstants
|
||||
import android.hardware.biometrics.BiometricSourceType
|
||||
import android.util.DisplayMetrics
|
||||
import androidx.annotation.VisibleForTesting
|
||||
import com.android.keyguard.KeyguardUpdateMonitor
|
||||
import com.android.keyguard.KeyguardUpdateMonitorCallback
|
||||
@@ -39,11 +40,11 @@ import com.android.systemui.plugins.statusbar.StatusBarStateController
|
||||
import com.android.systemui.statusbar.CircleReveal
|
||||
import com.android.systemui.statusbar.LiftReveal
|
||||
import com.android.systemui.statusbar.LightRevealEffect
|
||||
import com.android.systemui.statusbar.LightRevealScrim
|
||||
import com.android.systemui.statusbar.NotificationShadeWindowController
|
||||
import com.android.systemui.statusbar.commandline.Command
|
||||
import com.android.systemui.statusbar.commandline.CommandRegistry
|
||||
import com.android.systemui.statusbar.phone.BiometricUnlockController
|
||||
import com.android.systemui.statusbar.phone.CentralSurfaces
|
||||
import com.android.systemui.statusbar.phone.dagger.CentralSurfacesComponent.CentralSurfacesScope
|
||||
import com.android.systemui.statusbar.policy.ConfigurationController
|
||||
import com.android.systemui.statusbar.policy.KeyguardStateController
|
||||
@@ -62,7 +63,6 @@ import javax.inject.Provider
|
||||
*/
|
||||
@CentralSurfacesScope
|
||||
class AuthRippleController @Inject constructor(
|
||||
private val centralSurfaces: CentralSurfaces,
|
||||
private val sysuiContext: Context,
|
||||
private val authController: AuthController,
|
||||
private val configurationController: ConfigurationController,
|
||||
@@ -73,9 +73,11 @@ class AuthRippleController @Inject constructor(
|
||||
private val notificationShadeWindowController: NotificationShadeWindowController,
|
||||
private val udfpsControllerProvider: Provider<UdfpsController>,
|
||||
private val statusBarStateController: StatusBarStateController,
|
||||
private val displayMetrics: DisplayMetrics,
|
||||
private val featureFlags: FeatureFlags,
|
||||
private val logger: KeyguardLogger,
|
||||
private val biometricUnlockController: BiometricUnlockController,
|
||||
private val lightRevealScrim: LightRevealScrim,
|
||||
rippleView: AuthRippleView?
|
||||
) :
|
||||
ViewController<AuthRippleView>(rippleView),
|
||||
@@ -153,8 +155,8 @@ class AuthRippleController @Inject constructor(
|
||||
it.y,
|
||||
0,
|
||||
Math.max(
|
||||
Math.max(it.x, centralSurfaces.displayWidth.toInt() - it.x),
|
||||
Math.max(it.y, centralSurfaces.displayHeight.toInt() - it.y)
|
||||
Math.max(it.x, displayMetrics.widthPixels - it.x),
|
||||
Math.max(it.y, displayMetrics.heightPixels - it.y)
|
||||
)
|
||||
)
|
||||
logger.showingUnlockRippleAt(it.x, it.y, "FP sensor radius: $udfpsRadius")
|
||||
@@ -168,8 +170,8 @@ class AuthRippleController @Inject constructor(
|
||||
it.y,
|
||||
0,
|
||||
Math.max(
|
||||
Math.max(it.x, centralSurfaces.displayWidth.toInt() - it.x),
|
||||
Math.max(it.y, centralSurfaces.displayHeight.toInt() - it.y)
|
||||
Math.max(it.x, displayMetrics.widthPixels - it.x),
|
||||
Math.max(it.y, displayMetrics.heightPixels - it.y)
|
||||
)
|
||||
)
|
||||
logger.showingUnlockRippleAt(it.x, it.y, "Face unlock ripple")
|
||||
@@ -184,11 +186,10 @@ class AuthRippleController @Inject constructor(
|
||||
// This code path is not used if the KeyguardTransitionRepository is managing the light
|
||||
// reveal scrim.
|
||||
if (!featureFlags.isEnabled(Flags.LIGHT_REVEAL_MIGRATION)) {
|
||||
val lightRevealScrim = centralSurfaces.lightRevealScrim
|
||||
if (statusBarStateController.isDozing || biometricUnlockController.isWakeAndUnlock) {
|
||||
circleReveal?.let {
|
||||
lightRevealScrim?.revealAmount = 0f
|
||||
lightRevealScrim?.revealEffect = it
|
||||
lightRevealScrim.revealAmount = 0f
|
||||
lightRevealScrim.revealEffect = it
|
||||
startLightRevealScrimOnKeyguardFadingAway = true
|
||||
}
|
||||
}
|
||||
@@ -208,8 +209,7 @@ class AuthRippleController @Inject constructor(
|
||||
}
|
||||
|
||||
if (keyguardStateController.isKeyguardFadingAway) {
|
||||
val lightRevealScrim = centralSurfaces.lightRevealScrim
|
||||
if (startLightRevealScrimOnKeyguardFadingAway && lightRevealScrim != null) {
|
||||
if (startLightRevealScrimOnKeyguardFadingAway) {
|
||||
lightRevealScrimAnimator?.cancel()
|
||||
lightRevealScrimAnimator = ValueAnimator.ofFloat(.1f, 1f).apply {
|
||||
interpolator = Interpolators.LINEAR_OUT_SLOW_IN
|
||||
|
||||
@@ -19,6 +19,7 @@ package com.android.systemui.shade
|
||||
import android.view.LayoutInflater
|
||||
import com.android.systemui.R
|
||||
import com.android.systemui.dagger.SysUISingleton
|
||||
import com.android.systemui.statusbar.LightRevealScrim
|
||||
import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayout
|
||||
import dagger.Module
|
||||
import dagger.Provides
|
||||
@@ -59,5 +60,13 @@ abstract class ShadeModule {
|
||||
): NotificationPanelView {
|
||||
return notificationShadeWindowView.findViewById(R.id.notification_panel)
|
||||
}
|
||||
|
||||
@Provides
|
||||
@SysUISingleton
|
||||
fun providesLightRevealScrim(
|
||||
notificationShadeWindowView: NotificationShadeWindowView,
|
||||
): LightRevealScrim {
|
||||
return notificationShadeWindowView.findViewById(R.id.light_reveal_scrim)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -460,7 +460,7 @@ public class CentralSurfacesImpl implements CoreStartable, CentralSurfaces {
|
||||
private final KeyguardUpdateMonitor mKeyguardUpdateMonitor;
|
||||
@VisibleForTesting
|
||||
DozeServiceHost mDozeServiceHost;
|
||||
private LightRevealScrim mLightRevealScrim;
|
||||
private final LightRevealScrim mLightRevealScrim;
|
||||
private PowerButtonReveal mPowerButtonReveal;
|
||||
|
||||
private boolean mWakeUpComingFromTouch;
|
||||
@@ -810,6 +810,7 @@ public class CentralSurfacesImpl implements CoreStartable, CentralSurfaces {
|
||||
IDreamManager dreamManager,
|
||||
Lazy<CameraLauncher> cameraLauncherLazy,
|
||||
Lazy<LightRevealScrimViewModel> lightRevealScrimViewModelLazy,
|
||||
LightRevealScrim lightRevealScrim,
|
||||
AlternateBouncerInteractor alternateBouncerInteractor,
|
||||
UserTracker userTracker,
|
||||
Provider<FingerprintManager> fingerprintManager
|
||||
@@ -932,6 +933,7 @@ public class CentralSurfacesImpl implements CoreStartable, CentralSurfaces {
|
||||
wiredChargingRippleController.registerCallbacks();
|
||||
|
||||
mLightRevealScrimViewModelLazy = lightRevealScrimViewModelLazy;
|
||||
mLightRevealScrim = lightRevealScrim;
|
||||
|
||||
// Based on teamfood flag, turn predictive back dispatch on at runtime.
|
||||
if (mFeatureFlags.isEnabled(Flags.WM_ENABLE_PREDICTIVE_BACK_SYSUI)) {
|
||||
@@ -1326,8 +1328,6 @@ public class CentralSurfacesImpl implements CoreStartable, CentralSurfaces {
|
||||
});
|
||||
mScrimController.attachViews(scrimBehind, notificationsScrim, scrimInFront);
|
||||
|
||||
mLightRevealScrim = mNotificationShadeWindowView.findViewById(R.id.light_reveal_scrim);
|
||||
|
||||
if (mFeatureFlags.isEnabled(Flags.LIGHT_REVEAL_MIGRATION)) {
|
||||
LightRevealScrimViewBinder.bind(
|
||||
mLightRevealScrim, mLightRevealScrimViewModelLazy.get());
|
||||
|
||||
@@ -21,6 +21,7 @@ import android.hardware.biometrics.BiometricSourceType
|
||||
import android.hardware.fingerprint.FingerprintSensorPropertiesInternal
|
||||
import android.testing.AndroidTestingRunner
|
||||
import android.testing.TestableLooper.RunWithLooper
|
||||
import android.util.DisplayMetrics
|
||||
import androidx.test.filters.SmallTest
|
||||
import com.android.dx.mockito.inline.extended.ExtendedMockito.mockitoSession
|
||||
import com.android.keyguard.KeyguardUpdateMonitor
|
||||
@@ -35,7 +36,6 @@ import com.android.systemui.statusbar.LightRevealScrim
|
||||
import com.android.systemui.statusbar.NotificationShadeWindowController
|
||||
import com.android.systemui.statusbar.commandline.CommandRegistry
|
||||
import com.android.systemui.statusbar.phone.BiometricUnlockController
|
||||
import com.android.systemui.statusbar.phone.CentralSurfaces
|
||||
import com.android.systemui.statusbar.policy.ConfigurationController
|
||||
import com.android.systemui.statusbar.policy.KeyguardStateController
|
||||
import com.android.systemui.util.leak.RotationUtils
|
||||
@@ -66,7 +66,6 @@ class AuthRippleControllerTest : SysuiTestCase() {
|
||||
private lateinit var staticMockSession: MockitoSession
|
||||
|
||||
private lateinit var controller: AuthRippleController
|
||||
@Mock private lateinit var mCentralSurfaces: CentralSurfaces
|
||||
@Mock private lateinit var rippleView: AuthRippleView
|
||||
@Mock private lateinit var commandRegistry: CommandRegistry
|
||||
@Mock private lateinit var configurationController: ConfigurationController
|
||||
@@ -92,6 +91,8 @@ class AuthRippleControllerTest : SysuiTestCase() {
|
||||
@Mock
|
||||
private lateinit var fpSensorProp: FingerprintSensorPropertiesInternal
|
||||
|
||||
private val displayMetrics = DisplayMetrics()
|
||||
|
||||
@Captor
|
||||
private lateinit var biometricUnlockListener:
|
||||
ArgumentCaptor<BiometricUnlockController.BiometricUnlockEventsListener>
|
||||
@@ -109,7 +110,6 @@ class AuthRippleControllerTest : SysuiTestCase() {
|
||||
`when`(udfpsControllerProvider.get()).thenReturn(udfpsController)
|
||||
|
||||
controller = AuthRippleController(
|
||||
mCentralSurfaces,
|
||||
context,
|
||||
authController,
|
||||
configurationController,
|
||||
@@ -120,13 +120,14 @@ class AuthRippleControllerTest : SysuiTestCase() {
|
||||
notificationShadeWindowController,
|
||||
udfpsControllerProvider,
|
||||
statusBarStateController,
|
||||
displayMetrics,
|
||||
featureFlags,
|
||||
KeyguardLogger(logcatLogBuffer(AuthRippleController.TAG)),
|
||||
biometricUnlockController,
|
||||
lightRevealScrim,
|
||||
rippleView,
|
||||
)
|
||||
controller.init()
|
||||
`when`(mCentralSurfaces.lightRevealScrim).thenReturn(lightRevealScrim)
|
||||
}
|
||||
|
||||
@After
|
||||
|
||||
@@ -138,6 +138,7 @@ import com.android.systemui.shade.ShadeExpansionStateManager;
|
||||
import com.android.systemui.shade.ShadeLogger;
|
||||
import com.android.systemui.statusbar.CommandQueue;
|
||||
import com.android.systemui.statusbar.KeyguardIndicationController;
|
||||
import com.android.systemui.statusbar.LightRevealScrim;
|
||||
import com.android.systemui.statusbar.LockscreenShadeTransitionController;
|
||||
import com.android.systemui.statusbar.NotificationListener;
|
||||
import com.android.systemui.statusbar.NotificationLockscreenUserManager;
|
||||
@@ -231,6 +232,7 @@ public class CentralSurfacesImplTest extends SysuiTestCase {
|
||||
@Mock private IStatusBarService mBarService;
|
||||
@Mock private IDreamManager mDreamManager;
|
||||
@Mock private LightRevealScrimViewModel mLightRevealScrimViewModel;
|
||||
@Mock private LightRevealScrim mLightRevealScrim;
|
||||
@Mock private ScrimController mScrimController;
|
||||
@Mock private DozeScrimController mDozeScrimController;
|
||||
@Mock private Lazy<BiometricUnlockController> mBiometricUnlockControllerLazy;
|
||||
@@ -345,6 +347,7 @@ public class CentralSurfacesImplTest extends SysuiTestCase {
|
||||
mFeatureFlags.set(Flags.WM_SHADE_ALLOW_BACK_GESTURE, true);
|
||||
// For the Shade to animate during the Back gesture, we must enable the animation flag.
|
||||
mFeatureFlags.set(Flags.WM_SHADE_ANIMATE_BACK_GESTURE, true);
|
||||
mFeatureFlags.set(Flags.LIGHT_REVEAL_MIGRATION, true);
|
||||
|
||||
IThermalService thermalService = mock(IThermalService.class);
|
||||
mPowerManager = new PowerManager(mContext, mPowerManagerService, thermalService,
|
||||
@@ -538,6 +541,7 @@ public class CentralSurfacesImplTest extends SysuiTestCase {
|
||||
mDreamManager,
|
||||
mCameraLauncherLazy,
|
||||
() -> mLightRevealScrimViewModel,
|
||||
mLightRevealScrim,
|
||||
mAlternateBouncerInteractor,
|
||||
mUserTracker,
|
||||
() -> mFingerprintManager
|
||||
|
||||
Reference in New Issue
Block a user