Loading packages/SystemUI/src/com/android/systemui/power/data/repository/PowerRepository.kt +16 −1 Original line number Diff line number Diff line Loading @@ -26,6 +26,8 @@ import com.android.systemui.broadcast.BroadcastDispatcher import com.android.systemui.common.coroutine.ChannelExt.trySendWithFailureLogging import com.android.systemui.common.coroutine.ConflatedCallbackFlow.conflatedCallbackFlow import com.android.systemui.dagger.SysUISingleton import com.android.systemui.dagger.qualifiers.Application import com.android.systemui.util.time.SystemClock import javax.inject.Inject import kotlinx.coroutines.channels.awaitClose import kotlinx.coroutines.flow.Flow Loading @@ -34,13 +36,18 @@ import kotlinx.coroutines.flow.Flow interface PowerRepository { /** Whether the device is interactive. Starts with the current state. */ val isInteractive: Flow<Boolean> /** Wakes up the device. */ fun wakeUp(why: String, @PowerManager.WakeReason wakeReason: Int) } @SysUISingleton class PowerRepositoryImpl @Inject constructor( manager: PowerManager, private val manager: PowerManager, @Application private val applicationContext: Context, private val systemClock: SystemClock, dispatcher: BroadcastDispatcher, ) : PowerRepository { Loading Loading @@ -68,6 +75,14 @@ constructor( awaitClose { dispatcher.unregisterReceiver(receiver) } } override fun wakeUp(why: String, wakeReason: Int) { manager.wakeUp( systemClock.uptimeMillis(), wakeReason, "${applicationContext.packageName}:$why", ) } companion object { private const val TAG = "PowerRepository" } Loading packages/SystemUI/src/com/android/systemui/power/domain/interactor/PowerInteractor.kt +24 −1 Original line number Diff line number Diff line Loading @@ -17,8 +17,12 @@ package com.android.systemui.power.domain.interactor import android.os.PowerManager import com.android.systemui.classifier.FalsingCollector import com.android.systemui.dagger.SysUISingleton import com.android.systemui.plugins.statusbar.StatusBarStateController import com.android.systemui.power.data.repository.PowerRepository import com.android.systemui.statusbar.phone.ScreenOffAnimationController import javax.inject.Inject import kotlinx.coroutines.flow.Flow Loading @@ -27,8 +31,27 @@ import kotlinx.coroutines.flow.Flow class PowerInteractor @Inject constructor( repository: PowerRepository, private val repository: PowerRepository, private val falsingCollector: FalsingCollector, private val screenOffAnimationController: ScreenOffAnimationController, private val statusBarStateController: StatusBarStateController, ) { /** Whether the screen is on or off. */ val isInteractive: Flow<Boolean> = repository.isInteractive /** * Wakes up the device if the device was dozing. * * @param why a string explaining why we're waking the device for debugging purposes. Should be * in SCREAMING_SNAKE_CASE. * @param wakeReason the PowerManager-based reason why we're waking the device. */ fun wakeUpIfDozing(why: String, @PowerManager.WakeReason wakeReason: Int) { if ( statusBarStateController.isDozing && screenOffAnimationController.allowWakeUpIfDozing() ) { repository.wakeUp(why, wakeReason) falsingCollector.onScreenOnFromTouch() } } } packages/SystemUI/src/com/android/systemui/shade/PulsingGestureListener.kt +4 −13 Original line number Diff line number Diff line Loading @@ -18,7 +18,6 @@ package com.android.systemui.shade import android.hardware.display.AmbientDisplayConfiguration import android.os.PowerManager import android.os.SystemClock import android.provider.Settings import android.view.GestureDetector import android.view.MotionEvent Loading @@ -28,8 +27,8 @@ import com.android.systemui.dump.DumpManager import com.android.systemui.plugins.FalsingManager import com.android.systemui.plugins.FalsingManager.LOW_PENALTY import com.android.systemui.plugins.statusbar.StatusBarStateController import com.android.systemui.power.domain.interactor.PowerInteractor import com.android.systemui.settings.UserTracker import com.android.systemui.statusbar.phone.CentralSurfaces import com.android.systemui.statusbar.phone.dagger.CentralSurfacesComponent import com.android.systemui.tuner.TunerService import com.android.systemui.tuner.TunerService.Tunable Loading @@ -50,7 +49,7 @@ class PulsingGestureListener @Inject constructor( private val notificationShadeWindowView: NotificationShadeWindowView, private val falsingManager: FalsingManager, private val dockManager: DockManager, private val centralSurfaces: CentralSurfaces, private val powerInteractor: PowerInteractor, private val ambientDisplayConfiguration: AmbientDisplayConfiguration, private val statusBarStateController: StatusBarStateController, private val shadeLogger: ShadeLogger, Loading Loading @@ -88,11 +87,7 @@ class PulsingGestureListener @Inject constructor( shadeLogger.logSingleTapUpFalsingState(proximityIsNotNear, isNotAFalseTap) if (proximityIsNotNear && isNotAFalseTap) { shadeLogger.d("Single tap handled, requesting centralSurfaces.wakeUpIfDozing") centralSurfaces.wakeUpIfDozing( SystemClock.uptimeMillis(), "PULSING_SINGLE_TAP", PowerManager.WAKE_REASON_TAP ) powerInteractor.wakeUpIfDozing("PULSING_SINGLE_TAP", PowerManager.WAKE_REASON_TAP) } return true } Loading @@ -113,11 +108,7 @@ class PulsingGestureListener @Inject constructor( !falsingManager.isProximityNear && !falsingManager.isFalseDoubleTap ) { centralSurfaces.wakeUpIfDozing( SystemClock.uptimeMillis(), "PULSING_DOUBLE_TAP", PowerManager.WAKE_REASON_TAP ) powerInteractor.wakeUpIfDozing("PULSING_DOUBLE_TAP", PowerManager.WAKE_REASON_TAP) return true } return false Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfaces.java +4 −0 Original line number Diff line number Diff line Loading @@ -43,6 +43,7 @@ import com.android.systemui.Dumpable; import com.android.systemui.animation.ActivityLaunchAnimator; import com.android.systemui.navigationbar.NavigationBarView; import com.android.systemui.plugins.ActivityStarter.OnDismissAction; import com.android.systemui.power.domain.interactor.PowerInteractor; import com.android.systemui.qs.QSPanelController; import com.android.systemui.shade.ShadeViewController; import com.android.systemui.shared.system.RemoteAnimationRunnerCompat; Loading Loading @@ -197,7 +198,10 @@ public interface CentralSurfaces extends Dumpable, LifecycleOwner { /** * Wakes up the device if the device was dozing. * * @deprecated Use {@link PowerInteractor#wakeUpIfDozing(String, int)} instead. */ @Deprecated void wakeUpIfDozing(long time, String why, @PowerManager.WakeReason int wakeReason); /** */ Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfacesImpl.java +4 −1 Original line number Diff line number Diff line Loading @@ -136,6 +136,7 @@ import com.android.systemui.accessibility.floatingmenu.AccessibilityFloatingMenu import com.android.systemui.animation.ActivityLaunchAnimator; import com.android.systemui.assist.AssistManager; import com.android.systemui.biometrics.AuthRippleController; import com.android.systemui.bouncer.domain.interactor.AlternateBouncerInteractor; import com.android.systemui.broadcast.BroadcastDispatcher; import com.android.systemui.camera.CameraIntents; import com.android.systemui.charging.WiredChargingRippleController; Loading @@ -157,7 +158,6 @@ import com.android.systemui.keyguard.KeyguardUnlockAnimationController; import com.android.systemui.keyguard.KeyguardViewMediator; import com.android.systemui.keyguard.ScreenLifecycle; import com.android.systemui.keyguard.WakefulnessLifecycle; import com.android.systemui.bouncer.domain.interactor.AlternateBouncerInteractor; import com.android.systemui.keyguard.ui.binder.LightRevealScrimViewBinder; import com.android.systemui.keyguard.ui.viewmodel.LightRevealScrimViewModel; import com.android.systemui.navigationbar.NavigationBarController; Loading Loading @@ -1587,10 +1587,13 @@ public class CentralSurfacesImpl implements CoreStartable, CentralSurfaces { /** * Ask the display to wake up if currently dozing, else do nothing * * @deprecated Use {@link PowerInteractor#wakeUpIfDozing(String, int)} instead. * * @param time when to wake up * @param why the reason for the wake up */ @Override @Deprecated public void wakeUpIfDozing(long time, String why, @PowerManager.WakeReason int wakeReason) { if (mDozing && mScreenOffAnimationController.allowWakeUpIfDozing()) { mPowerManager.wakeUp( Loading Loading
packages/SystemUI/src/com/android/systemui/power/data/repository/PowerRepository.kt +16 −1 Original line number Diff line number Diff line Loading @@ -26,6 +26,8 @@ import com.android.systemui.broadcast.BroadcastDispatcher import com.android.systemui.common.coroutine.ChannelExt.trySendWithFailureLogging import com.android.systemui.common.coroutine.ConflatedCallbackFlow.conflatedCallbackFlow import com.android.systemui.dagger.SysUISingleton import com.android.systemui.dagger.qualifiers.Application import com.android.systemui.util.time.SystemClock import javax.inject.Inject import kotlinx.coroutines.channels.awaitClose import kotlinx.coroutines.flow.Flow Loading @@ -34,13 +36,18 @@ import kotlinx.coroutines.flow.Flow interface PowerRepository { /** Whether the device is interactive. Starts with the current state. */ val isInteractive: Flow<Boolean> /** Wakes up the device. */ fun wakeUp(why: String, @PowerManager.WakeReason wakeReason: Int) } @SysUISingleton class PowerRepositoryImpl @Inject constructor( manager: PowerManager, private val manager: PowerManager, @Application private val applicationContext: Context, private val systemClock: SystemClock, dispatcher: BroadcastDispatcher, ) : PowerRepository { Loading Loading @@ -68,6 +75,14 @@ constructor( awaitClose { dispatcher.unregisterReceiver(receiver) } } override fun wakeUp(why: String, wakeReason: Int) { manager.wakeUp( systemClock.uptimeMillis(), wakeReason, "${applicationContext.packageName}:$why", ) } companion object { private const val TAG = "PowerRepository" } Loading
packages/SystemUI/src/com/android/systemui/power/domain/interactor/PowerInteractor.kt +24 −1 Original line number Diff line number Diff line Loading @@ -17,8 +17,12 @@ package com.android.systemui.power.domain.interactor import android.os.PowerManager import com.android.systemui.classifier.FalsingCollector import com.android.systemui.dagger.SysUISingleton import com.android.systemui.plugins.statusbar.StatusBarStateController import com.android.systemui.power.data.repository.PowerRepository import com.android.systemui.statusbar.phone.ScreenOffAnimationController import javax.inject.Inject import kotlinx.coroutines.flow.Flow Loading @@ -27,8 +31,27 @@ import kotlinx.coroutines.flow.Flow class PowerInteractor @Inject constructor( repository: PowerRepository, private val repository: PowerRepository, private val falsingCollector: FalsingCollector, private val screenOffAnimationController: ScreenOffAnimationController, private val statusBarStateController: StatusBarStateController, ) { /** Whether the screen is on or off. */ val isInteractive: Flow<Boolean> = repository.isInteractive /** * Wakes up the device if the device was dozing. * * @param why a string explaining why we're waking the device for debugging purposes. Should be * in SCREAMING_SNAKE_CASE. * @param wakeReason the PowerManager-based reason why we're waking the device. */ fun wakeUpIfDozing(why: String, @PowerManager.WakeReason wakeReason: Int) { if ( statusBarStateController.isDozing && screenOffAnimationController.allowWakeUpIfDozing() ) { repository.wakeUp(why, wakeReason) falsingCollector.onScreenOnFromTouch() } } }
packages/SystemUI/src/com/android/systemui/shade/PulsingGestureListener.kt +4 −13 Original line number Diff line number Diff line Loading @@ -18,7 +18,6 @@ package com.android.systemui.shade import android.hardware.display.AmbientDisplayConfiguration import android.os.PowerManager import android.os.SystemClock import android.provider.Settings import android.view.GestureDetector import android.view.MotionEvent Loading @@ -28,8 +27,8 @@ import com.android.systemui.dump.DumpManager import com.android.systemui.plugins.FalsingManager import com.android.systemui.plugins.FalsingManager.LOW_PENALTY import com.android.systemui.plugins.statusbar.StatusBarStateController import com.android.systemui.power.domain.interactor.PowerInteractor import com.android.systemui.settings.UserTracker import com.android.systemui.statusbar.phone.CentralSurfaces import com.android.systemui.statusbar.phone.dagger.CentralSurfacesComponent import com.android.systemui.tuner.TunerService import com.android.systemui.tuner.TunerService.Tunable Loading @@ -50,7 +49,7 @@ class PulsingGestureListener @Inject constructor( private val notificationShadeWindowView: NotificationShadeWindowView, private val falsingManager: FalsingManager, private val dockManager: DockManager, private val centralSurfaces: CentralSurfaces, private val powerInteractor: PowerInteractor, private val ambientDisplayConfiguration: AmbientDisplayConfiguration, private val statusBarStateController: StatusBarStateController, private val shadeLogger: ShadeLogger, Loading Loading @@ -88,11 +87,7 @@ class PulsingGestureListener @Inject constructor( shadeLogger.logSingleTapUpFalsingState(proximityIsNotNear, isNotAFalseTap) if (proximityIsNotNear && isNotAFalseTap) { shadeLogger.d("Single tap handled, requesting centralSurfaces.wakeUpIfDozing") centralSurfaces.wakeUpIfDozing( SystemClock.uptimeMillis(), "PULSING_SINGLE_TAP", PowerManager.WAKE_REASON_TAP ) powerInteractor.wakeUpIfDozing("PULSING_SINGLE_TAP", PowerManager.WAKE_REASON_TAP) } return true } Loading @@ -113,11 +108,7 @@ class PulsingGestureListener @Inject constructor( !falsingManager.isProximityNear && !falsingManager.isFalseDoubleTap ) { centralSurfaces.wakeUpIfDozing( SystemClock.uptimeMillis(), "PULSING_DOUBLE_TAP", PowerManager.WAKE_REASON_TAP ) powerInteractor.wakeUpIfDozing("PULSING_DOUBLE_TAP", PowerManager.WAKE_REASON_TAP) return true } return false Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfaces.java +4 −0 Original line number Diff line number Diff line Loading @@ -43,6 +43,7 @@ import com.android.systemui.Dumpable; import com.android.systemui.animation.ActivityLaunchAnimator; import com.android.systemui.navigationbar.NavigationBarView; import com.android.systemui.plugins.ActivityStarter.OnDismissAction; import com.android.systemui.power.domain.interactor.PowerInteractor; import com.android.systemui.qs.QSPanelController; import com.android.systemui.shade.ShadeViewController; import com.android.systemui.shared.system.RemoteAnimationRunnerCompat; Loading Loading @@ -197,7 +198,10 @@ public interface CentralSurfaces extends Dumpable, LifecycleOwner { /** * Wakes up the device if the device was dozing. * * @deprecated Use {@link PowerInteractor#wakeUpIfDozing(String, int)} instead. */ @Deprecated void wakeUpIfDozing(long time, String why, @PowerManager.WakeReason int wakeReason); /** */ Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/CentralSurfacesImpl.java +4 −1 Original line number Diff line number Diff line Loading @@ -136,6 +136,7 @@ import com.android.systemui.accessibility.floatingmenu.AccessibilityFloatingMenu import com.android.systemui.animation.ActivityLaunchAnimator; import com.android.systemui.assist.AssistManager; import com.android.systemui.biometrics.AuthRippleController; import com.android.systemui.bouncer.domain.interactor.AlternateBouncerInteractor; import com.android.systemui.broadcast.BroadcastDispatcher; import com.android.systemui.camera.CameraIntents; import com.android.systemui.charging.WiredChargingRippleController; Loading @@ -157,7 +158,6 @@ import com.android.systemui.keyguard.KeyguardUnlockAnimationController; import com.android.systemui.keyguard.KeyguardViewMediator; import com.android.systemui.keyguard.ScreenLifecycle; import com.android.systemui.keyguard.WakefulnessLifecycle; import com.android.systemui.bouncer.domain.interactor.AlternateBouncerInteractor; import com.android.systemui.keyguard.ui.binder.LightRevealScrimViewBinder; import com.android.systemui.keyguard.ui.viewmodel.LightRevealScrimViewModel; import com.android.systemui.navigationbar.NavigationBarController; Loading Loading @@ -1587,10 +1587,13 @@ public class CentralSurfacesImpl implements CoreStartable, CentralSurfaces { /** * Ask the display to wake up if currently dozing, else do nothing * * @deprecated Use {@link PowerInteractor#wakeUpIfDozing(String, int)} instead. * * @param time when to wake up * @param why the reason for the wake up */ @Override @Deprecated public void wakeUpIfDozing(long time, String why, @PowerManager.WakeReason int wakeReason) { if (mDozing && mScreenOffAnimationController.allowWakeUpIfDozing()) { mPowerManager.wakeUp( Loading