Merge "Add KeyguardLiftController as a CoreStartable" into tm-dev am: 847fe9fbd1

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/17218390

Change-Id: I28c7db96d113cc7c32ad92804fec6c5f54460651
This commit is contained in:
TreeHugger Robot
2022-03-18 20:36:12 +00:00
committed by Automerger Merge Worker
3 changed files with 44 additions and 37 deletions

View File

@@ -35,6 +35,7 @@ import com.android.systemui.power.PowerUI
import com.android.systemui.recents.Recents import com.android.systemui.recents.Recents
import com.android.systemui.shortcut.ShortcutKeyDispatcher import com.android.systemui.shortcut.ShortcutKeyDispatcher
import com.android.systemui.statusbar.notification.InstantAppNotifier import com.android.systemui.statusbar.notification.InstantAppNotifier
import com.android.systemui.statusbar.phone.KeyguardLiftController
import com.android.systemui.theme.ThemeOverlayController import com.android.systemui.theme.ThemeOverlayController
import com.android.systemui.toast.ToastUI import com.android.systemui.toast.ToastUI
import com.android.systemui.usb.StorageNotification import com.android.systemui.usb.StorageNotification
@@ -198,4 +199,10 @@ abstract class SystemUICoreStartableModule {
@IntoMap @IntoMap
@ClassKey(WMShell::class) @ClassKey(WMShell::class)
abstract fun bindWMShell(sysui: WMShell): CoreStartable abstract fun bindWMShell(sysui: WMShell): CoreStartable
/** Inject into KeyguardLiftController. */
@Binds
@IntoMap
@ClassKey(KeyguardLiftController::class)
abstract fun bindKeyguardLiftController(sysui: KeyguardLiftController): CoreStartable
} }

View File

@@ -16,10 +16,8 @@
package com.android.systemui.keyguard.dagger; package com.android.systemui.keyguard.dagger;
import android.annotation.Nullable;
import android.app.trust.TrustManager; import android.app.trust.TrustManager;
import android.content.Context; import android.content.Context;
import android.content.pm.PackageManager;
import android.os.PowerManager; import android.os.PowerManager;
import com.android.internal.jank.InteractionJankMonitor; 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.KeyguardUnlockAnimationController;
import com.android.systemui.keyguard.KeyguardViewMediator; import com.android.systemui.keyguard.KeyguardViewMediator;
import com.android.systemui.navigationbar.NavigationModeController; import com.android.systemui.navigationbar.NavigationModeController;
import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.statusbar.NotificationShadeDepthController; import com.android.systemui.statusbar.NotificationShadeDepthController;
import com.android.systemui.statusbar.NotificationShadeWindowController; import com.android.systemui.statusbar.NotificationShadeWindowController;
import com.android.systemui.statusbar.SysuiStatusBarStateController; 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.DozeParameters;
import com.android.systemui.statusbar.phone.KeyguardLiftController;
import com.android.systemui.statusbar.phone.ScreenOffAnimationController; import com.android.systemui.statusbar.phone.ScreenOffAnimationController;
import com.android.systemui.statusbar.policy.KeyguardStateController; import com.android.systemui.statusbar.policy.KeyguardStateController;
import com.android.systemui.statusbar.policy.UserSwitcherController; import com.android.systemui.statusbar.policy.UserSwitcherController;
import com.android.systemui.util.DeviceConfigProxy; import com.android.systemui.util.DeviceConfigProxy;
import com.android.systemui.util.sensors.AsyncSensorManager;
import java.util.concurrent.Executor; import java.util.concurrent.Executor;
@@ -133,20 +127,4 @@ public class KeyguardModule {
notificationShadeWindowController, notificationShadeWindowController,
activityLaunchAnimator); 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);
}
} }

View File

@@ -16,34 +16,52 @@
package com.android.systemui.statusbar.phone package com.android.systemui.statusbar.phone
import android.content.Context
import android.content.pm.PackageManager
import android.hardware.Sensor import android.hardware.Sensor
import android.hardware.TriggerEvent import android.hardware.TriggerEvent
import android.hardware.TriggerEventListener import android.hardware.TriggerEventListener
import com.android.keyguard.KeyguardUpdateMonitor import com.android.keyguard.KeyguardUpdateMonitor
import com.android.keyguard.KeyguardUpdateMonitorCallback import com.android.keyguard.KeyguardUpdateMonitorCallback
import com.android.systemui.CoreStartable
import com.android.systemui.Dumpable import com.android.systemui.Dumpable
import com.android.systemui.dagger.SysUISingleton
import com.android.systemui.dump.DumpManager import com.android.systemui.dump.DumpManager
import com.android.systemui.plugins.statusbar.StatusBarStateController import com.android.systemui.plugins.statusbar.StatusBarStateController
import com.android.systemui.util.Assert import com.android.systemui.util.Assert
import com.android.systemui.util.sensors.AsyncSensorManager import com.android.systemui.util.sensors.AsyncSensorManager
import java.io.FileDescriptor import java.io.FileDescriptor
import java.io.PrintWriter 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 statusBarStateController: StatusBarStateController,
private val asyncSensorManager: AsyncSensorManager, private val asyncSensorManager: AsyncSensorManager,
private val keyguardUpdateMonitor: KeyguardUpdateMonitor, private val keyguardUpdateMonitor: KeyguardUpdateMonitor,
dumpManager: DumpManager private val dumpManager: DumpManager
) : StatusBarStateController.StateListener, Dumpable, KeyguardUpdateMonitorCallback() { ) : Dumpable, CoreStartable(context) {
private val pickupSensor = asyncSensorManager.getDefaultSensor(Sensor.TYPE_PICK_UP_GESTURE) private val pickupSensor = asyncSensorManager.getDefaultSensor(Sensor.TYPE_PICK_UP_GESTURE)
private var isListening = false private var isListening = false
private var bouncerVisible = 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) dumpManager.registerDumpable(javaClass.name, this)
statusBarStateController.addCallback(this) statusBarStateController.addCallback(statusBarStateListener)
keyguardUpdateMonitor.registerCallback(this) keyguardUpdateMonitor.registerCallback(keyguardUpdateMonitorCallback)
updateListeningState() updateListeningState()
} }
@@ -58,17 +76,21 @@ class KeyguardLiftController constructor(
} }
} }
override fun onDozingChanged(isDozing: Boolean) { private val keyguardUpdateMonitorCallback = object : KeyguardUpdateMonitorCallback() {
updateListeningState() override fun onKeyguardBouncerChanged(bouncer: Boolean) {
bouncerVisible = bouncer
updateListeningState()
}
override fun onKeyguardVisibilityChanged(showing: Boolean) {
updateListeningState()
}
} }
override fun onKeyguardBouncerChanged(bouncer: Boolean) { private val statusBarStateListener = object : StatusBarStateController.StateListener {
bouncerVisible = bouncer override fun onDozingChanged(isDozing: Boolean) {
updateListeningState() updateListeningState()
} }
override fun onKeyguardVisibilityChanged(showing: Boolean) {
updateListeningState()
} }
override fun dump(fd: FileDescriptor, pw: PrintWriter, args: Array<out String>) { override fun dump(fd: FileDescriptor, pw: PrintWriter, args: Array<out String>) {