From 3a66fbc60d58ac6c2c11d7a9d58f85161dd949a9 Mon Sep 17 00:00:00 2001 From: Beverly Date: Wed, 16 Mar 2022 14:38:03 +0000 Subject: [PATCH] Add KeyguardLiftController as a CoreStartable It wasn't being used anywhere, so lift to face-auth was no longer enabled. Fixes: 220805249 Test: manual Change-Id: I3457845c7c6679da4c8369afb0349913f485c325 --- .../dagger/SystemUICoreStartableModule.kt | 7 +++ .../keyguard/dagger/KeyguardModule.java | 22 -------- .../statusbar/phone/KeyguardLiftController.kt | 52 +++++++++++++------ 3 files changed, 44 insertions(+), 37 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/dagger/SystemUICoreStartableModule.kt b/packages/SystemUI/src/com/android/systemui/dagger/SystemUICoreStartableModule.kt index f78929f75b04e..a9f3408546890 100644 --- a/packages/SystemUI/src/com/android/systemui/dagger/SystemUICoreStartableModule.kt +++ b/packages/SystemUI/src/com/android/systemui/dagger/SystemUICoreStartableModule.kt @@ -35,6 +35,7 @@ import com.android.systemui.power.PowerUI import com.android.systemui.recents.Recents import com.android.systemui.shortcut.ShortcutKeyDispatcher import com.android.systemui.statusbar.notification.InstantAppNotifier +import com.android.systemui.statusbar.phone.KeyguardLiftController import com.android.systemui.theme.ThemeOverlayController import com.android.systemui.toast.ToastUI import com.android.systemui.usb.StorageNotification @@ -198,4 +199,10 @@ abstract class SystemUICoreStartableModule { @IntoMap @ClassKey(WMShell::class) abstract fun bindWMShell(sysui: WMShell): CoreStartable + + /** Inject into KeyguardLiftController. */ + @Binds + @IntoMap + @ClassKey(KeyguardLiftController::class) + abstract fun bindKeyguardLiftController(sysui: KeyguardLiftController): CoreStartable } \ No newline at end of file diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/dagger/KeyguardModule.java b/packages/SystemUI/src/com/android/systemui/keyguard/dagger/KeyguardModule.java index c69f947f5f3f9..71dfa7433c327 100644 --- a/packages/SystemUI/src/com/android/systemui/keyguard/dagger/KeyguardModule.java +++ b/packages/SystemUI/src/com/android/systemui/keyguard/dagger/KeyguardModule.java @@ -16,10 +16,8 @@ package com.android.systemui.keyguard.dagger; -import android.annotation.Nullable; import android.app.trust.TrustManager; import android.content.Context; -import android.content.pm.PackageManager; import android.os.PowerManager; import com.android.internal.jank.InteractionJankMonitor; @@ -44,18 +42,14 @@ import com.android.systemui.keyguard.DismissCallbackRegistry; import com.android.systemui.keyguard.KeyguardUnlockAnimationController; import com.android.systemui.keyguard.KeyguardViewMediator; import com.android.systemui.navigationbar.NavigationModeController; -import com.android.systemui.plugins.statusbar.StatusBarStateController; import com.android.systemui.statusbar.NotificationShadeDepthController; import com.android.systemui.statusbar.NotificationShadeWindowController; import com.android.systemui.statusbar.SysuiStatusBarStateController; -import com.android.systemui.statusbar.phone.CentralSurfaces; import com.android.systemui.statusbar.phone.DozeParameters; -import com.android.systemui.statusbar.phone.KeyguardLiftController; import com.android.systemui.statusbar.phone.ScreenOffAnimationController; import com.android.systemui.statusbar.policy.KeyguardStateController; import com.android.systemui.statusbar.policy.UserSwitcherController; import com.android.systemui.util.DeviceConfigProxy; -import com.android.systemui.util.sensors.AsyncSensorManager; import java.util.concurrent.Executor; @@ -133,20 +127,4 @@ public class KeyguardModule { notificationShadeWindowController, activityLaunchAnimator); } - - @SysUISingleton - @Provides - @Nullable - static KeyguardLiftController provideKeyguardLiftController( - Context context, - StatusBarStateController statusBarStateController, - AsyncSensorManager asyncSensorManager, - KeyguardUpdateMonitor keyguardUpdateMonitor, - DumpManager dumpManager) { - if (!context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_FACE)) { - return null; - } - return new KeyguardLiftController(statusBarStateController, asyncSensorManager, - keyguardUpdateMonitor, dumpManager); - } } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardLiftController.kt b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardLiftController.kt index 571c10b3800f2..64b0b4e2909fa 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardLiftController.kt +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardLiftController.kt @@ -16,34 +16,52 @@ package com.android.systemui.statusbar.phone +import android.content.Context +import android.content.pm.PackageManager import android.hardware.Sensor import android.hardware.TriggerEvent import android.hardware.TriggerEventListener import com.android.keyguard.KeyguardUpdateMonitor import com.android.keyguard.KeyguardUpdateMonitorCallback +import com.android.systemui.CoreStartable import com.android.systemui.Dumpable +import com.android.systemui.dagger.SysUISingleton import com.android.systemui.dump.DumpManager import com.android.systemui.plugins.statusbar.StatusBarStateController import com.android.systemui.util.Assert import com.android.systemui.util.sensors.AsyncSensorManager import java.io.FileDescriptor import java.io.PrintWriter +import javax.inject.Inject -class KeyguardLiftController constructor( +/** + * Triggers face auth on lift when the device is showing the lock screen. Only initialized + * if face auth is supported on the device. Not to be confused with the lift to wake gesture + * which is handled by {@link com.android.server.policy.PhoneWindowManager}. + */ +@SysUISingleton +class KeyguardLiftController @Inject constructor( + private val context: Context, private val statusBarStateController: StatusBarStateController, private val asyncSensorManager: AsyncSensorManager, private val keyguardUpdateMonitor: KeyguardUpdateMonitor, - dumpManager: DumpManager -) : StatusBarStateController.StateListener, Dumpable, KeyguardUpdateMonitorCallback() { + private val dumpManager: DumpManager +) : Dumpable, CoreStartable(context) { private val pickupSensor = asyncSensorManager.getDefaultSensor(Sensor.TYPE_PICK_UP_GESTURE) private var isListening = false private var bouncerVisible = false - init { + override fun start() { + if (context.packageManager.hasSystemFeature(PackageManager.FEATURE_FACE)) { + init() + } + } + + private fun init() { dumpManager.registerDumpable(javaClass.name, this) - statusBarStateController.addCallback(this) - keyguardUpdateMonitor.registerCallback(this) + statusBarStateController.addCallback(statusBarStateListener) + keyguardUpdateMonitor.registerCallback(keyguardUpdateMonitorCallback) updateListeningState() } @@ -58,17 +76,21 @@ class KeyguardLiftController constructor( } } - override fun onDozingChanged(isDozing: Boolean) { - updateListeningState() + private val keyguardUpdateMonitorCallback = object : KeyguardUpdateMonitorCallback() { + override fun onKeyguardBouncerChanged(bouncer: Boolean) { + bouncerVisible = bouncer + updateListeningState() + } + + override fun onKeyguardVisibilityChanged(showing: Boolean) { + updateListeningState() + } } - override fun onKeyguardBouncerChanged(bouncer: Boolean) { - bouncerVisible = bouncer - updateListeningState() - } - - override fun onKeyguardVisibilityChanged(showing: Boolean) { - updateListeningState() + private val statusBarStateListener = object : StatusBarStateController.StateListener { + override fun onDozingChanged(isDozing: Boolean) { + updateListeningState() + } } override fun dump(fd: FileDescriptor, pw: PrintWriter, args: Array) {