Merge changes from topic "caitlinshk-csi-wakeupifdozing" into udc-qpr-dev

* changes:
  [Central Surfaces] Delete #wakeUpIfDozing.
  [Central Surfaces] Move NotifShadeWVC wake to PowerInteractor.
  [Central Surfaces] Move SBNotifPresenter wake to PowerInteractor.
  [Central Surfaces] Move NotifRemoteInputManager wake to PowerInteractor.
This commit is contained in:
Caitlin Shkuratov
2023-06-21 15:13:20 +00:00
committed by Android (Google) Code Review
11 changed files with 37 additions and 93 deletions

View File

@@ -58,6 +58,7 @@ import com.android.systemui.log.BouncerLogger;
import com.android.systemui.multishade.domain.interactor.MultiShadeInteractor;
import com.android.systemui.multishade.domain.interactor.MultiShadeMotionEventInteractor;
import com.android.systemui.multishade.ui.view.MultiShadeView;
import com.android.systemui.power.domain.interactor.PowerInteractor;
import com.android.systemui.shared.animation.DisableSubpixelTextTransitionListener;
import com.android.systemui.statusbar.DragDownHelper;
import com.android.systemui.statusbar.LockscreenShadeTransitionController;
@@ -113,6 +114,7 @@ public class NotificationShadeWindowViewController {
private PhoneStatusBarViewController mStatusBarViewController;
private final CentralSurfaces mService;
private final BackActionInteractor mBackActionInteractor;
private final PowerInteractor mPowerInteractor;
private final NotificationShadeWindowController mNotificationShadeWindowController;
private DragDownHelper mDragDownHelper;
private boolean mExpandingBelowNotch;
@@ -147,6 +149,7 @@ public class NotificationShadeWindowViewController {
LockIconViewController lockIconViewController,
CentralSurfaces centralSurfaces,
BackActionInteractor backActionInteractor,
PowerInteractor powerInteractor,
NotificationShadeWindowController controller,
Optional<UnfoldTransitionProgressProvider> unfoldTransitionProgressProvider,
KeyguardUnlockAnimationController keyguardUnlockAnimationController,
@@ -179,6 +182,7 @@ public class NotificationShadeWindowViewController {
mBackActionInteractor = backActionInteractor;
mLockIconViewController.init();
mService = centralSurfaces;
mPowerInteractor = powerInteractor;
mNotificationShadeWindowController = controller;
mKeyguardUnlockAnimationController = keyguardUnlockAnimationController;
mAmbientState = ambientState;
@@ -311,8 +315,7 @@ public class NotificationShadeWindowViewController {
/* onGestureDetectedRunnable */
() -> {
mService.userActivity();
mService.wakeUpIfDozing(
mClock.uptimeMillis(),
mPowerInteractor.wakeUpIfDozing(
"LOCK_ICON_TOUCH",
PowerManager.WAKE_REASON_GESTURE);
}

View File

@@ -27,7 +27,6 @@ import android.content.pm.UserInfo;
import android.os.PowerManager;
import android.os.RemoteException;
import android.os.ServiceManager;
import android.os.SystemClock;
import android.os.SystemProperties;
import android.os.UserManager;
import android.service.notification.StatusBarNotification;
@@ -52,6 +51,7 @@ import com.android.systemui.Dumpable;
import com.android.systemui.R;
import com.android.systemui.dump.DumpManager;
import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.power.domain.interactor.PowerInteractor;
import com.android.systemui.statusbar.dagger.CentralSurfacesDependenciesModule;
import com.android.systemui.statusbar.notification.NotifPipelineFlags;
import com.android.systemui.statusbar.notification.RemoteInputControllerLogger;
@@ -60,19 +60,15 @@ import com.android.systemui.statusbar.notification.collection.NotificationEntry.
import com.android.systemui.statusbar.notification.collection.render.NotificationVisibilityProvider;
import com.android.systemui.statusbar.notification.logging.NotificationLogger;
import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow;
import com.android.systemui.statusbar.phone.CentralSurfaces;
import com.android.systemui.statusbar.policy.RemoteInputUriController;
import com.android.systemui.statusbar.policy.RemoteInputView;
import com.android.systemui.util.DumpUtilsKt;
import com.android.systemui.util.ListenerSet;
import dagger.Lazy;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
import java.util.function.Consumer;
/**
@@ -95,10 +91,8 @@ public class NotificationRemoteInputManager implements Dumpable {
private final NotificationLockscreenUserManager mLockscreenUserManager;
private final SmartReplyController mSmartReplyController;
private final NotificationVisibilityProvider mVisibilityProvider;
private final PowerInteractor mPowerInteractor;
private final ActionClickLogger mLogger;
private final Lazy<Optional<CentralSurfaces>> mCentralSurfacesOptionalLazy;
protected final Context mContext;
protected final NotifPipelineFlags mNotifPipelineFlags;
private final UserManager mUserManager;
@@ -122,10 +116,8 @@ public class NotificationRemoteInputManager implements Dumpable {
@Override
public boolean onInteraction(
View view, PendingIntent pendingIntent, RemoteViews.RemoteResponse response) {
mCentralSurfacesOptionalLazy.get().ifPresent(
centralSurfaces -> centralSurfaces.wakeUpIfDozing(
SystemClock.uptimeMillis(), "NOTIFICATION_CLICK",
PowerManager.WAKE_REASON_GESTURE));
mPowerInteractor.wakeUpIfDozing(
"NOTIFICATION_CLICK", PowerManager.WAKE_REASON_GESTURE);
final NotificationEntry entry = getNotificationForParent(view.getParent());
mLogger.logInitialClick(entry, pendingIntent);
@@ -259,7 +251,7 @@ public class NotificationRemoteInputManager implements Dumpable {
NotificationLockscreenUserManager lockscreenUserManager,
SmartReplyController smartReplyController,
NotificationVisibilityProvider visibilityProvider,
Lazy<Optional<CentralSurfaces>> centralSurfacesOptionalLazy,
PowerInteractor powerInteractor,
StatusBarStateController statusBarStateController,
RemoteInputUriController remoteInputUriController,
RemoteInputControllerLogger remoteInputControllerLogger,
@@ -271,7 +263,7 @@ public class NotificationRemoteInputManager implements Dumpable {
mLockscreenUserManager = lockscreenUserManager;
mSmartReplyController = smartReplyController;
mVisibilityProvider = visibilityProvider;
mCentralSurfacesOptionalLazy = centralSurfacesOptionalLazy;
mPowerInteractor = powerInteractor;
mLogger = logger;
mBarService = IStatusBarService.Stub.asInterface(
ServiceManager.getService(Context.STATUS_BAR_SERVICE));

View File

@@ -28,6 +28,7 @@ import com.android.internal.statusbar.IStatusBarService;
import com.android.systemui.animation.ActivityLaunchAnimator;
import com.android.systemui.animation.AnimationFeatureFlags;
import com.android.systemui.animation.DialogLaunchAnimator;
import com.android.systemui.bouncer.domain.interactor.AlternateBouncerInteractor;
import com.android.systemui.colorextraction.SysuiColorExtractor;
import com.android.systemui.dagger.SysUISingleton;
import com.android.systemui.dagger.qualifiers.Main;
@@ -35,10 +36,10 @@ import com.android.systemui.dump.DumpHandler;
import com.android.systemui.dump.DumpManager;
import com.android.systemui.flags.FeatureFlags;
import com.android.systemui.flags.Flags;
import com.android.systemui.bouncer.domain.interactor.AlternateBouncerInteractor;
import com.android.systemui.media.controls.pipeline.MediaDataManager;
import com.android.systemui.plugins.ActivityStarter;
import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.power.domain.interactor.PowerInteractor;
import com.android.systemui.settings.DisplayTracker;
import com.android.systemui.shade.carrier.ShadeCarrierGroupController;
import com.android.systemui.statusbar.ActionClickLogger;
@@ -79,14 +80,14 @@ import com.android.systemui.tracing.ProtoTracer;
import com.android.systemui.util.concurrency.DelayableExecutor;
import com.android.systemui.util.time.SystemClock;
import java.util.Optional;
import java.util.concurrent.Executor;
import dagger.Binds;
import dagger.Lazy;
import dagger.Module;
import dagger.Provides;
import java.util.Optional;
import java.util.concurrent.Executor;
/**
* This module provides instances needed to construct {@link CentralSurfacesImpl}. These are moved to
* this separate from {@link CentralSurfacesModule} module so that components that wish to build
@@ -104,7 +105,7 @@ public interface CentralSurfacesDependenciesModule {
NotificationLockscreenUserManager lockscreenUserManager,
SmartReplyController smartReplyController,
NotificationVisibilityProvider visibilityProvider,
Lazy<Optional<CentralSurfaces>> centralSurfacesOptionalLazy,
PowerInteractor powerInteractor,
StatusBarStateController statusBarStateController,
RemoteInputUriController remoteInputUriController,
RemoteInputControllerLogger remoteInputControllerLogger,
@@ -117,7 +118,7 @@ public interface CentralSurfacesDependenciesModule {
lockscreenUserManager,
smartReplyController,
visibilityProvider,
centralSurfacesOptionalLazy,
powerInteractor,
statusBarStateController,
remoteInputUriController,
remoteInputControllerLogger,

View File

@@ -24,7 +24,6 @@ import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.os.PowerManager;
import android.os.UserHandle;
import android.view.KeyEvent;
import android.view.MotionEvent;
@@ -43,7 +42,6 @@ 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;
@@ -196,14 +194,6 @@ public interface CentralSurfaces extends Dumpable, LifecycleOwner {
@Override
Lifecycle getLifecycle();
/**
* 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);
/** */
ShadeViewController getShadeViewController();

View File

@@ -1597,24 +1597,6 @@ public class CentralSurfacesImpl implements CoreStartable, CentralSurfaces {
mCommandQueue.disable(mDisplayId, state1, state2, false /* animate */);
}
/**
* 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(
time, wakeReason, "com.android.systemui:" + why);
mFalsingCollector.onScreenOnFromTouch();
}
}
// TODO(b/117478341): This was left such that CarStatusBar can override this method.
// Try to remove this.
protected void createNavigationBar(@Nullable RegisterStatusBarResult result) {
@@ -2907,8 +2889,7 @@ public class CentralSurfacesImpl implements CoreStartable, CentralSurfaces {
mStatusBarHideIconsForBouncerManager.setBouncerShowingAndTriggerUpdate(bouncerShowing);
mCommandQueue.recomputeDisableFlags(mDisplayId, true /* animate */);
if (mBouncerShowing) {
wakeUpIfDozing(SystemClock.uptimeMillis(), "BOUNCER_VISIBLE",
PowerManager.WAKE_REASON_GESTURE);
mPowerInteractor.wakeUpIfDozing("BOUNCER_VISIBLE", PowerManager.WAKE_REASON_GESTURE);
}
updateScrimController();
if (!mBouncerShowing) {

View File

@@ -22,7 +22,6 @@ import android.content.Context;
import android.os.PowerManager;
import android.os.RemoteException;
import android.os.ServiceManager;
import android.os.SystemClock;
import android.service.notification.StatusBarNotification;
import android.service.vr.IVrManager;
import android.service.vr.IVrStateCallbacks;
@@ -36,6 +35,7 @@ import com.android.systemui.InitController;
import com.android.systemui.R;
import com.android.systemui.plugins.ActivityStarter;
import com.android.systemui.plugins.ActivityStarter.OnDismissAction;
import com.android.systemui.power.domain.interactor.PowerInteractor;
import com.android.systemui.shade.NotificationShadeWindowView;
import com.android.systemui.shade.QuickSettingsController;
import com.android.systemui.shade.ShadeViewController;
@@ -86,6 +86,7 @@ class StatusBarNotificationPresenter implements NotificationPresenter, CommandQu
private final CentralSurfaces mCentralSurfaces;
private final NotificationsInteractor mNotificationsInteractor;
private final LockscreenShadeTransitionController mShadeTransitionController;
private final PowerInteractor mPowerInteractor;
private final CommandQueue mCommandQueue;
private final AccessibilityManager mAccessibilityManager;
@@ -115,6 +116,7 @@ class StatusBarNotificationPresenter implements NotificationPresenter, CommandQu
CentralSurfaces centralSurfaces,
NotificationsInteractor notificationsInteractor,
LockscreenShadeTransitionController shadeTransitionController,
PowerInteractor powerInteractor,
CommandQueue commandQueue,
NotificationLockscreenUserManager lockscreenUserManager,
SysuiStatusBarStateController sysuiStatusBarStateController,
@@ -138,6 +140,7 @@ class StatusBarNotificationPresenter implements NotificationPresenter, CommandQu
mCentralSurfaces = centralSurfaces;
mNotificationsInteractor = notificationsInteractor;
mShadeTransitionController = shadeTransitionController;
mPowerInteractor = powerInteractor;
mCommandQueue = commandQueue;
mLockscreenUserManager = lockscreenUserManager;
mStatusBarStateController = sysuiStatusBarStateController;
@@ -238,9 +241,7 @@ class StatusBarNotificationPresenter implements NotificationPresenter, CommandQu
public void onExpandClicked(NotificationEntry clickedEntry, View clickedView,
boolean nowExpanded) {
mHeadsUpManager.setExpanded(clickedEntry, nowExpanded);
mCentralSurfaces.wakeUpIfDozing(
SystemClock.uptimeMillis(), "NOTIFICATION_CLICK",
PowerManager.WAKE_REASON_GESTURE);
mPowerInteractor.wakeUpIfDozing("NOTIFICATION_CLICK", PowerManager.WAKE_REASON_GESTURE);
if (nowExpanded) {
if (mStatusBarStateController.getState() == StatusBarState.KEYGUARD) {
mShadeTransitionController.goToLockedShade(clickedEntry.getRow());

View File

@@ -49,6 +49,7 @@ import com.android.systemui.multishade.data.remoteproxy.MultiShadeInputProxy
import com.android.systemui.multishade.data.repository.MultiShadeRepository
import com.android.systemui.multishade.domain.interactor.MultiShadeInteractor
import com.android.systemui.multishade.domain.interactor.MultiShadeMotionEventInteractor
import com.android.systemui.power.domain.interactor.PowerInteractor
import com.android.systemui.shade.NotificationShadeWindowView.InteractionEventHandler
import com.android.systemui.statusbar.LockscreenShadeTransitionController
import com.android.systemui.statusbar.NotificationInsetsController
@@ -93,6 +94,7 @@ class NotificationShadeWindowViewControllerTest : SysuiTestCase() {
@Mock private lateinit var sysuiStatusBarStateController: SysuiStatusBarStateController
@Mock private lateinit var centralSurfaces: CentralSurfaces
@Mock private lateinit var backActionInteractor: BackActionInteractor
@Mock private lateinit var powerInteractor: PowerInteractor
@Mock private lateinit var dockManager: DockManager
@Mock private lateinit var notificationPanelViewController: NotificationPanelViewController
@Mock private lateinit var notificationShadeDepthController: NotificationShadeDepthController
@@ -174,6 +176,7 @@ class NotificationShadeWindowViewControllerTest : SysuiTestCase() {
lockIconViewController,
centralSurfaces,
backActionInteractor,
powerInteractor,
notificationShadeWindowController,
unfoldTransitionProgressProvider,
keyguardUnlockAnimationController,

View File

@@ -48,6 +48,7 @@ import com.android.systemui.multishade.data.remoteproxy.MultiShadeInputProxy
import com.android.systemui.multishade.data.repository.MultiShadeRepository
import com.android.systemui.multishade.domain.interactor.MultiShadeInteractor
import com.android.systemui.multishade.domain.interactor.MultiShadeMotionEventInteractor
import com.android.systemui.power.domain.interactor.PowerInteractor
import com.android.systemui.shade.NotificationShadeWindowView.InteractionEventHandler
import com.android.systemui.statusbar.DragDownHelper
import com.android.systemui.statusbar.LockscreenShadeTransitionController
@@ -95,6 +96,7 @@ class NotificationShadeWindowViewTest : SysuiTestCase() {
@Mock private lateinit var shadeController: ShadeController
@Mock private lateinit var centralSurfaces: CentralSurfaces
@Mock private lateinit var backActionInteractor: BackActionInteractor
@Mock private lateinit var powerInteractor: PowerInteractor
@Mock private lateinit var dockManager: DockManager
@Mock private lateinit var notificationPanelViewController: NotificationPanelViewController
@Mock private lateinit var notificationStackScrollLayout: NotificationStackScrollLayout
@@ -187,6 +189,7 @@ class NotificationShadeWindowViewTest : SysuiTestCase() {
lockIconViewController,
centralSurfaces,
backActionInteractor,
powerInteractor,
notificationShadeWindowController,
unfoldTransitionProgressProvider,
keyguardUnlockAnimationController,

View File

@@ -33,25 +33,21 @@ import androidx.test.filters.SmallTest;
import com.android.systemui.SysuiTestCase;
import com.android.systemui.dump.DumpManager;
import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.power.domain.interactor.PowerInteractor;
import com.android.systemui.statusbar.notification.NotifPipelineFlags;
import com.android.systemui.statusbar.notification.RemoteInputControllerLogger;
import com.android.systemui.statusbar.notification.collection.NotificationEntry;
import com.android.systemui.statusbar.notification.collection.NotificationEntryBuilder;
import com.android.systemui.statusbar.notification.collection.render.NotificationVisibilityProvider;
import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow;
import com.android.systemui.statusbar.phone.CentralSurfaces;
import com.android.systemui.statusbar.policy.RemoteInputUriController;
import dagger.Lazy;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import java.util.Optional;
@SmallTest
@RunWith(AndroidTestingRunner.class)
@TestableLooper.RunWithLooper
@@ -69,6 +65,7 @@ public class NotificationRemoteInputManagerTest extends SysuiTestCase {
@Mock private RemoteInputUriController mRemoteInputUriController;
@Mock private NotificationClickNotifier mClickNotifier;
@Mock private NotificationLockscreenUserManager mLockscreenUserManager;
@Mock private PowerInteractor mPowerInteractor;
private TestableNotificationRemoteInputManager mRemoteInputManager;
private NotificationEntry mEntry;
@@ -82,7 +79,7 @@ public class NotificationRemoteInputManagerTest extends SysuiTestCase {
mLockscreenUserManager,
mSmartReplyController,
mVisibilityProvider,
() -> Optional.of(mock(CentralSurfaces.class)),
mPowerInteractor,
mStateController,
mRemoteInputUriController,
mock(RemoteInputControllerLogger.class),
@@ -140,7 +137,7 @@ public class NotificationRemoteInputManagerTest extends SysuiTestCase {
NotificationLockscreenUserManager lockscreenUserManager,
SmartReplyController smartReplyController,
NotificationVisibilityProvider visibilityProvider,
Lazy<Optional<CentralSurfaces>> centralSurfacesOptionalLazy,
PowerInteractor powerInteractor,
StatusBarStateController statusBarStateController,
RemoteInputUriController remoteInputUriController,
RemoteInputControllerLogger remoteInputControllerLogger,
@@ -153,7 +150,7 @@ public class NotificationRemoteInputManagerTest extends SysuiTestCase {
lockscreenUserManager,
smartReplyController,
visibilityProvider,
centralSurfacesOptionalLazy,
powerInteractor,
statusBarStateController,
remoteInputUriController,
remoteInputControllerLogger,

View File

@@ -29,7 +29,6 @@ import static junit.framework.TestCase.fail;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyBoolean;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.anyLong;
import static org.mockito.ArgumentMatchers.anyString;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.clearInvocations;
@@ -1252,34 +1251,6 @@ public class CentralSurfacesImplTest extends SysuiTestCase {
verify(mStatusBarStateController).setState(SHADE);
}
@Test
public void dozing_wakeUp() throws RemoteException {
// GIVEN can wakeup when dozing & is dozing
when(mScreenOffAnimationController.allowWakeUpIfDozing()).thenReturn(true);
setDozing(true);
// WHEN wakeup is requested
final int wakeReason = PowerManager.WAKE_REASON_TAP;
mCentralSurfaces.wakeUpIfDozing(0, "", wakeReason);
// THEN power manager receives wakeup
verify(mPowerManagerService).wakeUp(eq(0L), eq(wakeReason), anyString(), anyString());
}
@Test
public void notDozing_noWakeUp() throws RemoteException {
// GIVEN can wakeup when dozing and NOT dozing
when(mScreenOffAnimationController.allowWakeUpIfDozing()).thenReturn(true);
setDozing(false);
// WHEN wakeup is requested
final int wakeReason = PowerManager.WAKE_REASON_TAP;
mCentralSurfaces.wakeUpIfDozing(0, "", wakeReason);
// THEN power manager receives wakeup
verify(mPowerManagerService, never()).wakeUp(anyLong(), anyInt(), anyString(), anyString());
}
@Test
public void frpLockedDevice_shadeDisabled() {
when(mDeviceProvisionedController.isFrpActive()).thenReturn(true);

View File

@@ -37,6 +37,7 @@ import com.android.systemui.InitController;
import com.android.systemui.SysuiTestCase;
import com.android.systemui.plugins.ActivityStarter;
import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.power.domain.interactor.PowerInteractor;
import com.android.systemui.settings.FakeDisplayTracker;
import com.android.systemui.shade.NotificationShadeWindowView;
import com.android.systemui.shade.QuickSettingsController;
@@ -127,6 +128,7 @@ public class StatusBarNotificationPresenterTest extends SysuiTestCase {
mCentralSurfaces,
mNotificationsInteractor,
mock(LockscreenShadeTransitionController.class),
mock(PowerInteractor.class),
mCommandQueue,
mock(NotificationLockscreenUserManager.class),
mock(SysuiStatusBarStateController.class),