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.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
}

View File

@@ -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);
}
}

View File

@@ -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<out String>) {