Merge "Update ActivityStarter to dismiss dreams when starting activities." into tm-dev am: cd2cf901f1

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

Change-Id: I608c2079a1c3b77fc579f4cba83204683c554e14
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Lucas Silva
2022-06-01 13:03:57 +00:00
committed by Automerger Merge Worker
2 changed files with 45 additions and 6 deletions

View File

@@ -83,7 +83,6 @@ import android.os.SystemProperties;
import android.os.Trace;
import android.os.UserHandle;
import android.provider.Settings;
import android.service.dreams.DreamService;
import android.service.dreams.IDreamManager;
import android.service.notification.StatusBarNotification;
import android.text.TextUtils;
@@ -780,7 +779,8 @@ public class CentralSurfacesImpl extends CoreStartable implements
InteractionJankMonitor jankMonitor,
DeviceStateManager deviceStateManager,
DreamOverlayStateController dreamOverlayStateController,
WiredChargingRippleController wiredChargingRippleController) {
WiredChargingRippleController wiredChargingRippleController,
IDreamManager dreamManager) {
super(context);
mNotificationsController = notificationsController;
mFragmentService = fragmentService;
@@ -871,6 +871,7 @@ public class CentralSurfacesImpl extends CoreStartable implements
mLockscreenShadeTransitionController = lockscreenShadeTransitionController;
mStartingSurfaceOptional = startingSurfaceOptional;
mNotifPipelineFlags = notifPipelineFlags;
mDreamManager = dreamManager;
lockscreenShadeTransitionController.setCentralSurfaces(this);
statusBarWindowStateController.addListener(this::onStatusBarWindowStateChanged);
@@ -924,8 +925,6 @@ public class CentralSurfacesImpl extends CoreStartable implements
SysuiStatusBarStateController.RANK_STATUS_BAR);
mWindowManager = (WindowManager) mContext.getSystemService(Context.WINDOW_SERVICE);
mDreamManager = IDreamManager.Stub.asInterface(
ServiceManager.checkService(DreamService.DREAM_SERVICE));
mDisplay = mContext.getDisplay();
mDisplayId = mDisplay.getDisplayId();
@@ -1792,6 +1791,12 @@ public class CentralSurfacesImpl extends CoreStartable implements
collapseShade();
}
// We should exit the dream to prevent the activity from starting below the
// dream.
if (mKeyguardUpdateMonitor.isDreaming()) {
awakenDreams();
}
mActivityLaunchAnimator.startIntentWithAnimation(controller, animate,
intent.getPackage(), showOverLockscreenWhenLocked, (adapter) -> TaskStackBuilder
.create(mContext)
@@ -2731,6 +2736,10 @@ public class CentralSurfacesImpl extends CoreStartable implements
mStatusBarKeyguardViewManager.dismissWithAction(action, cancelAction,
afterKeyguardGone);
} else {
// If the keyguard isn't showing but the device is dreaming, we should exit the dream.
if (mKeyguardUpdateMonitor.isDreaming()) {
awakenDreams();
}
action.onDismiss();
}
}
@@ -3963,7 +3972,7 @@ public class CentralSurfacesImpl extends CoreStartable implements
protected WindowManager mWindowManager;
protected IWindowManager mWindowManagerService;
private IDreamManager mDreamManager;
private final IDreamManager mDreamManager;
protected Display mDisplay;
private int mDisplayId;

View File

@@ -477,7 +477,7 @@ public class CentralSurfacesImplTest extends SysuiTestCase {
mJankMonitor,
mDeviceStateManager,
mDreamOverlayStateController,
mWiredChargingRippleController);
mWiredChargingRippleController, mDreamManager);
when(mKeyguardViewMediator.registerCentralSurfaces(
any(CentralSurfacesImpl.class),
any(NotificationPanelViewController.class),
@@ -533,6 +533,36 @@ public class CentralSurfacesImplTest extends SysuiTestCase {
mCentralSurfaces.executeRunnableDismissingKeyguard(null, null, false, false, false);
}
@Test
public void executeRunnableDismissingKeyguard_dreaming_notShowing() throws RemoteException {
when(mStatusBarKeyguardViewManager.isShowing()).thenReturn(false);
when(mStatusBarKeyguardViewManager.isOccluded()).thenReturn(false);
when(mKeyguardUpdateMonitor.isDreaming()).thenReturn(true);
mCentralSurfaces.executeRunnableDismissingKeyguard(() -> {},
/* cancelAction= */ null,
/* dismissShade= */ false,
/* afterKeyguardGone= */ false,
/* deferred= */ false);
mUiBgExecutor.runAllReady();
verify(mDreamManager, times(1)).awaken();
}
@Test
public void executeRunnableDismissingKeyguard_notDreaming_notShowing() throws RemoteException {
when(mStatusBarKeyguardViewManager.isShowing()).thenReturn(false);
when(mStatusBarKeyguardViewManager.isOccluded()).thenReturn(false);
when(mKeyguardUpdateMonitor.isDreaming()).thenReturn(false);
mCentralSurfaces.executeRunnableDismissingKeyguard(() -> {},
/* cancelAction= */ null,
/* dismissShade= */ false,
/* afterKeyguardGone= */ false,
/* deferred= */ false);
mUiBgExecutor.runAllReady();
verify(mDreamManager, never()).awaken();
}
@Test
public void lockscreenStateMetrics_notShowing() {
// uninteresting state, except that fingerprint must be non-zero