Merge "Device always wakes up when the bouncer shows" into tm-d1-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
b2229f28fa
@@ -652,7 +652,7 @@ public class LockIconViewController extends ViewController<LockIconView> impleme
|
||||
Process.myUid(),
|
||||
getContext().getOpPackageName(),
|
||||
UdfpsController.EFFECT_CLICK,
|
||||
"lock-icon-device-entry",
|
||||
"lock-screen-lock-icon-longpress",
|
||||
TOUCH_VIBRATION_ATTRIBUTES);
|
||||
|
||||
mKeyguardViewController.showBouncer(/* scrim */ true);
|
||||
@@ -677,6 +677,12 @@ public class LockIconViewController extends ViewController<LockIconView> impleme
|
||||
}
|
||||
|
||||
private boolean isActionable() {
|
||||
if (mIsBouncerShowing) {
|
||||
Log.v(TAG, "lock icon long-press ignored, bouncer already showing.");
|
||||
// a long press gestures from AOD may have already triggered the bouncer to show,
|
||||
// so this touch is no longer actionable
|
||||
return false;
|
||||
}
|
||||
return mUdfpsSupported || mShowUnlockIcon;
|
||||
}
|
||||
|
||||
|
||||
@@ -20,6 +20,7 @@ import static android.hardware.biometrics.BiometricFingerprintConstants.FINGERPR
|
||||
import static android.hardware.biometrics.BiometricOverlayConstants.REASON_AUTH_KEYGUARD;
|
||||
|
||||
import static com.android.internal.util.Preconditions.checkNotNull;
|
||||
import static com.android.systemui.classifier.Classifier.LOCK_ICON;
|
||||
import static com.android.systemui.classifier.Classifier.UDFPS_AUTHENTICATION;
|
||||
|
||||
import android.annotation.NonNull;
|
||||
@@ -167,11 +168,16 @@ public class UdfpsController implements DozeReceiver {
|
||||
private final Set<Callback> mCallbacks = new HashSet<>();
|
||||
|
||||
@VisibleForTesting
|
||||
public static final VibrationAttributes VIBRATION_ATTRIBUTES =
|
||||
public static final VibrationAttributes UDFPS_VIBRATION_ATTRIBUTES =
|
||||
new VibrationAttributes.Builder()
|
||||
// vibration will bypass battery saver mode:
|
||||
.setUsage(VibrationAttributes.USAGE_COMMUNICATION_REQUEST)
|
||||
.build();
|
||||
@VisibleForTesting
|
||||
public static final VibrationAttributes LOCK_ICON_VIBRATION_ATTRIBUTES =
|
||||
new VibrationAttributes.Builder()
|
||||
.setUsage(VibrationAttributes.USAGE_TOUCH)
|
||||
.build();
|
||||
|
||||
// haptic to use for successful device entry
|
||||
public static final VibrationEffect EFFECT_CLICK =
|
||||
@@ -671,7 +677,7 @@ public class UdfpsController implements DozeReceiver {
|
||||
mContext.getOpPackageName(),
|
||||
EFFECT_CLICK,
|
||||
"udfps-onStart-click",
|
||||
VIBRATION_ATTRIBUTES);
|
||||
UDFPS_VIBRATION_ATTRIBUTES);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -748,7 +754,19 @@ public class UdfpsController implements DozeReceiver {
|
||||
}
|
||||
|
||||
if (!mKeyguardUpdateMonitor.isFingerprintDetectionRunning()) {
|
||||
if (mFalsingManager.isFalseTouch(LOCK_ICON)) {
|
||||
Log.v(TAG, "aod lock icon long-press rejected by the falsing manager.");
|
||||
return;
|
||||
}
|
||||
mKeyguardViewManager.showBouncer(true);
|
||||
|
||||
// play the same haptic as the LockIconViewController longpress
|
||||
mVibrator.vibrate(
|
||||
Process.myUid(),
|
||||
mContext.getOpPackageName(),
|
||||
UdfpsController.EFFECT_CLICK,
|
||||
"aod-lock-icon-longpress",
|
||||
LOCK_ICON_VIBRATION_ATTRIBUTES);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
@@ -564,8 +564,6 @@ public interface CentralSurfaces extends Dumpable, ActivityStarter, LifecycleOwn
|
||||
|
||||
void setLaunchEmergencyActionOnFinishedWaking(boolean launch);
|
||||
|
||||
void setTopHidesStatusBar(boolean hides);
|
||||
|
||||
QSPanelController getQSPanelController();
|
||||
|
||||
boolean areNotificationAlertsDisabled();
|
||||
|
||||
@@ -207,7 +207,6 @@ import com.android.systemui.statusbar.notification.NotificationEntryManager;
|
||||
import com.android.systemui.statusbar.notification.NotificationLaunchAnimatorControllerProvider;
|
||||
import com.android.systemui.statusbar.notification.NotificationWakeUpCoordinator;
|
||||
import com.android.systemui.statusbar.notification.collection.legacy.VisualStabilityManager;
|
||||
import com.android.systemui.statusbar.notification.collection.render.NotifShadeEventSource;
|
||||
import com.android.systemui.statusbar.notification.init.NotificationsController;
|
||||
import com.android.systemui.statusbar.notification.interruption.NotificationInterruptStateProvider;
|
||||
import com.android.systemui.statusbar.notification.logging.NotificationLogger;
|
||||
@@ -238,7 +237,6 @@ import com.android.systemui.util.WallpaperController;
|
||||
import com.android.systemui.util.concurrency.DelayableExecutor;
|
||||
import com.android.systemui.util.concurrency.MessageRouter;
|
||||
import com.android.systemui.volume.VolumeComponent;
|
||||
import com.android.systemui.wmshell.BubblesManager;
|
||||
import com.android.wm.shell.bubbles.Bubbles;
|
||||
import com.android.wm.shell.startingsurface.SplashscreenContentDrawer;
|
||||
import com.android.wm.shell.startingsurface.StartingSurface;
|
||||
@@ -404,11 +402,6 @@ public class CentralSurfacesImpl extends CoreStartable implements
|
||||
mLaunchEmergencyActionWhenFinishedWaking = launch;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setTopHidesStatusBar(boolean hides) {
|
||||
mTopHidesStatusBar = hides;
|
||||
}
|
||||
|
||||
@Override
|
||||
public QSPanelController getQSPanelController() {
|
||||
return mQSPanelController;
|
||||
@@ -451,7 +444,6 @@ public class CentralSurfacesImpl extends CoreStartable implements
|
||||
private BiometricUnlockController mBiometricUnlockController;
|
||||
private final LightBarController mLightBarController;
|
||||
private final Lazy<LockscreenWallpaper> mLockscreenWallpaperLazy;
|
||||
private final LockscreenGestureLogger mLockscreenGestureLogger;
|
||||
@Nullable
|
||||
protected LockscreenWallpaper mLockscreenWallpaper;
|
||||
private final AutoHideController mAutoHideController;
|
||||
@@ -518,9 +510,6 @@ public class CentralSurfacesImpl extends CoreStartable implements
|
||||
|
||||
private boolean mExpandedVisible;
|
||||
|
||||
private final int[] mAbsPos = new int[2];
|
||||
|
||||
private final NotifShadeEventSource mNotifShadeEventSource;
|
||||
protected final NotificationEntryManager mEntryManager;
|
||||
private final NotificationGutsManager mGutsManager;
|
||||
private final NotificationLogger mNotificationLogger;
|
||||
@@ -602,7 +591,6 @@ public class CentralSurfacesImpl extends CoreStartable implements
|
||||
}
|
||||
}
|
||||
|
||||
private Handler mMainHandler;
|
||||
private final DelayableExecutor mMainExecutor;
|
||||
|
||||
private int mInteractingWindows;
|
||||
@@ -636,12 +624,9 @@ public class CentralSurfacesImpl extends CoreStartable implements
|
||||
|
||||
// Fingerprint (as computed by getLoggingFingerprint() of the last logged state.
|
||||
private int mLastLoggedStateFingerprint;
|
||||
private boolean mTopHidesStatusBar;
|
||||
private boolean mStatusBarWindowHidden;
|
||||
private boolean mIsLaunchingActivityOverLockscreen;
|
||||
|
||||
private final UserSwitcherController mUserSwitcherController;
|
||||
private final NetworkController mNetworkController;
|
||||
private final LifecycleRegistry mLifecycle = new LifecycleRegistry(this);
|
||||
protected final BatteryController mBatteryController;
|
||||
protected boolean mPanelExpanded;
|
||||
@@ -661,7 +646,6 @@ public class CentralSurfacesImpl extends CoreStartable implements
|
||||
protected NotificationPresenter mPresenter;
|
||||
private NotificationActivityStarter mNotificationActivityStarter;
|
||||
private final Lazy<NotificationShadeDepthController> mNotificationShadeDepthControllerLazy;
|
||||
private final Optional<BubblesManager> mBubblesManagerOptional;
|
||||
private final Optional<Bubbles> mBubblesOptional;
|
||||
private final Bubbles.BubbleExpandListener mBubbleExpandListener;
|
||||
private final Optional<StartingSurface> mStartingSurfaceOptional;
|
||||
@@ -703,7 +687,6 @@ public class CentralSurfacesImpl extends CoreStartable implements
|
||||
FalsingManager falsingManager,
|
||||
FalsingCollector falsingCollector,
|
||||
BroadcastDispatcher broadcastDispatcher,
|
||||
NotifShadeEventSource notifShadeEventSource,
|
||||
NotificationEntryManager notificationEntryManager,
|
||||
NotificationGutsManager notificationGutsManager,
|
||||
NotificationLogger notificationLogger,
|
||||
@@ -718,13 +701,11 @@ public class CentralSurfacesImpl extends CoreStartable implements
|
||||
NotificationLockscreenUserManager lockScreenUserManager,
|
||||
NotificationRemoteInputManager remoteInputManager,
|
||||
UserSwitcherController userSwitcherController,
|
||||
NetworkController networkController,
|
||||
BatteryController batteryController,
|
||||
SysuiColorExtractor colorExtractor,
|
||||
ScreenLifecycle screenLifecycle,
|
||||
WakefulnessLifecycle wakefulnessLifecycle,
|
||||
SysuiStatusBarStateController statusBarStateController,
|
||||
Optional<BubblesManager> bubblesManagerOptional,
|
||||
Optional<Bubbles> bubblesOptional,
|
||||
VisualStabilityManager visualStabilityManager,
|
||||
DeviceProvisionedController deviceProvisionedController,
|
||||
@@ -736,7 +717,6 @@ public class CentralSurfacesImpl extends CoreStartable implements
|
||||
DozeParameters dozeParameters,
|
||||
ScrimController scrimController,
|
||||
Lazy<LockscreenWallpaper> lockscreenWallpaperLazy,
|
||||
LockscreenGestureLogger lockscreenGestureLogger,
|
||||
Lazy<BiometricUnlockController> biometricUnlockControllerLazy,
|
||||
DozeServiceHost dozeServiceHost,
|
||||
PowerManager powerManager,
|
||||
@@ -769,7 +749,6 @@ public class CentralSurfacesImpl extends CoreStartable implements
|
||||
LockscreenShadeTransitionController lockscreenShadeTransitionController,
|
||||
FeatureFlags featureFlags,
|
||||
KeyguardUnlockAnimationController keyguardUnlockAnimationController,
|
||||
@Main Handler mainHandler,
|
||||
@Main DelayableExecutor delayableExecutor,
|
||||
@Main MessageRouter messageRouter,
|
||||
WallpaperManager wallpaperManager,
|
||||
@@ -799,7 +778,6 @@ public class CentralSurfacesImpl extends CoreStartable implements
|
||||
mFalsingCollector = falsingCollector;
|
||||
mFalsingManager = falsingManager;
|
||||
mBroadcastDispatcher = broadcastDispatcher;
|
||||
mNotifShadeEventSource = notifShadeEventSource;
|
||||
mEntryManager = notificationEntryManager;
|
||||
mGutsManager = notificationGutsManager;
|
||||
mNotificationLogger = notificationLogger;
|
||||
@@ -814,13 +792,11 @@ public class CentralSurfacesImpl extends CoreStartable implements
|
||||
mLockscreenUserManager = lockScreenUserManager;
|
||||
mRemoteInputManager = remoteInputManager;
|
||||
mUserSwitcherController = userSwitcherController;
|
||||
mNetworkController = networkController;
|
||||
mBatteryController = batteryController;
|
||||
mColorExtractor = colorExtractor;
|
||||
mScreenLifecycle = screenLifecycle;
|
||||
mWakefulnessLifecycle = wakefulnessLifecycle;
|
||||
mStatusBarStateController = statusBarStateController;
|
||||
mBubblesManagerOptional = bubblesManagerOptional;
|
||||
mBubblesOptional = bubblesOptional;
|
||||
mVisualStabilityManager = visualStabilityManager;
|
||||
mDeviceProvisionedController = deviceProvisionedController;
|
||||
@@ -834,7 +810,6 @@ public class CentralSurfacesImpl extends CoreStartable implements
|
||||
mDozeParameters = dozeParameters;
|
||||
mScrimController = scrimController;
|
||||
mLockscreenWallpaperLazy = lockscreenWallpaperLazy;
|
||||
mLockscreenGestureLogger = lockscreenGestureLogger;
|
||||
mScreenPinningRequest = screenPinningRequest;
|
||||
mDozeScrimController = dozeScrimController;
|
||||
mBiometricUnlockControllerLazy = biometricUnlockControllerLazy;
|
||||
@@ -861,7 +836,6 @@ public class CentralSurfacesImpl extends CoreStartable implements
|
||||
mStatusBarHideIconsForBouncerManager = statusBarHideIconsForBouncerManager;
|
||||
mFeatureFlags = featureFlags;
|
||||
mKeyguardUnlockAnimationController = keyguardUnlockAnimationController;
|
||||
mMainHandler = mainHandler;
|
||||
mMainExecutor = delayableExecutor;
|
||||
mMessageRouter = messageRouter;
|
||||
mWallpaperManager = wallpaperManager;
|
||||
@@ -1485,12 +1459,16 @@ public class CentralSurfacesImpl extends CoreStartable implements
|
||||
mPowerManager.wakeUp(
|
||||
time, PowerManager.WAKE_REASON_GESTURE, "com.android.systemui:" + why);
|
||||
mWakeUpComingFromTouch = true;
|
||||
where.getLocationInWindow(mTmpInt2);
|
||||
|
||||
// NOTE, the incoming view can sometimes be the entire container... unsure if
|
||||
// this location is valuable enough
|
||||
mWakeUpTouchLocation = new PointF(mTmpInt2[0] + where.getWidth() / 2,
|
||||
mTmpInt2[1] + where.getHeight() / 2);
|
||||
if (where != null) {
|
||||
where.getLocationInWindow(mTmpInt2);
|
||||
mWakeUpTouchLocation = new PointF(mTmpInt2[0] + where.getWidth() / 2,
|
||||
mTmpInt2[1] + where.getHeight() / 2);
|
||||
} else {
|
||||
mWakeUpTouchLocation = new PointF(-1, -1);
|
||||
}
|
||||
mFalsingCollector.onScreenOnFromTouch();
|
||||
}
|
||||
}
|
||||
@@ -2274,8 +2252,7 @@ public class CentralSurfacesImpl extends CoreStartable implements
|
||||
public void updateBubblesVisibility() {
|
||||
mBubblesOptional.ifPresent(bubbles -> bubbles.onStatusBarVisibilityChanged(
|
||||
mStatusBarMode != MODE_LIGHTS_OUT
|
||||
&& mStatusBarMode != MODE_LIGHTS_OUT_TRANSPARENT
|
||||
&& !mStatusBarWindowHidden));
|
||||
&& mStatusBarMode != MODE_LIGHTS_OUT_TRANSPARENT));
|
||||
}
|
||||
|
||||
void checkBarMode(@TransitionMode int mode, @WindowVisibleState int windowState,
|
||||
@@ -3558,6 +3535,9 @@ public class CentralSurfacesImpl extends CoreStartable implements
|
||||
setBouncerShowingForStatusBarComponents(bouncerShowing);
|
||||
mStatusBarHideIconsForBouncerManager.setBouncerShowingAndTriggerUpdate(bouncerShowing);
|
||||
mCommandQueue.recomputeDisableFlags(mDisplayId, true /* animate */);
|
||||
if (mBouncerShowing) {
|
||||
wakeUpIfDozing(SystemClock.uptimeMillis(), null, "BOUNCER_VISIBLE");
|
||||
}
|
||||
updateScrimController();
|
||||
if (!mBouncerShowing) {
|
||||
updatePanelExpansionForKeyguard();
|
||||
|
||||
@@ -640,6 +640,10 @@ public class KeyguardBouncer {
|
||||
public interface BouncerExpansionCallback {
|
||||
/**
|
||||
* Invoked when the bouncer expansion reaches {@link KeyguardBouncer#EXPANSION_VISIBLE}.
|
||||
* This is NOT called each time the bouncer is shown, but rather only when the fully
|
||||
* shown amount has changed based on the panel expansion. The bouncer is visibility
|
||||
* can still change when the expansion amount hasn't changed.
|
||||
* See {@link KeyguardBouncer#isShowing()} for the checks for the bouncer showing state.
|
||||
*/
|
||||
default void onFullyShown() {
|
||||
}
|
||||
|
||||
@@ -129,8 +129,6 @@ public class StatusBarKeyguardViewManager implements RemoteInputController.Callb
|
||||
public void onFullyShown() {
|
||||
mBouncerAnimating = false;
|
||||
updateStates();
|
||||
mCentralSurfaces.wakeUpIfDozing(SystemClock.uptimeMillis(),
|
||||
mCentralSurfaces.getBouncerContainer(), "BOUNCER_VISIBLE");
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -740,12 +740,12 @@ public class UdfpsControllerTest extends SysuiTestCase {
|
||||
anyString(),
|
||||
any(),
|
||||
eq("udfps-onStart-click"),
|
||||
eq(UdfpsController.VIBRATION_ATTRIBUTES));
|
||||
eq(UdfpsController.UDFPS_VIBRATION_ATTRIBUTES));
|
||||
|
||||
// THEN make sure vibration attributes has so that it always will play the haptic,
|
||||
// even in battery saver mode
|
||||
assertEquals(VibrationAttributes.USAGE_COMMUNICATION_REQUEST,
|
||||
UdfpsController.VIBRATION_ATTRIBUTES.getUsage());
|
||||
UdfpsController.UDFPS_VIBRATION_ATTRIBUTES.getUsage());
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
@@ -129,7 +129,6 @@ import com.android.systemui.statusbar.notification.collection.NotifPipeline;
|
||||
import com.android.systemui.statusbar.notification.collection.NotificationEntry;
|
||||
import com.android.systemui.statusbar.notification.collection.NotificationEntryBuilder;
|
||||
import com.android.systemui.statusbar.notification.collection.legacy.VisualStabilityManager;
|
||||
import com.android.systemui.statusbar.notification.collection.render.NotifShadeEventSource;
|
||||
import com.android.systemui.statusbar.notification.collection.render.NotificationVisibilityProvider;
|
||||
import com.android.systemui.statusbar.notification.init.NotificationsController;
|
||||
import com.android.systemui.statusbar.notification.interruption.KeyguardNotificationVisibilityProvider;
|
||||
@@ -159,7 +158,6 @@ import com.android.systemui.util.concurrency.FakeExecutor;
|
||||
import com.android.systemui.util.concurrency.MessageRouterImpl;
|
||||
import com.android.systemui.util.time.FakeSystemClock;
|
||||
import com.android.systemui.volume.VolumeComponent;
|
||||
import com.android.systemui.wmshell.BubblesManager;
|
||||
import com.android.wm.shell.bubbles.Bubbles;
|
||||
import com.android.wm.shell.startingsurface.StartingSurface;
|
||||
|
||||
@@ -223,7 +221,6 @@ public class CentralSurfacesImplTest extends SysuiTestCase {
|
||||
@Mock private NotificationShadeWindowView mNotificationShadeWindowView;
|
||||
@Mock private BroadcastDispatcher mBroadcastDispatcher;
|
||||
@Mock private AssistManager mAssistManager;
|
||||
@Mock private NotifShadeEventSource mNotifShadeEventSource;
|
||||
@Mock private NotificationEntryManager mNotificationEntryManager;
|
||||
@Mock private NotificationGutsManager mNotificationGutsManager;
|
||||
@Mock private NotificationMediaManager mNotificationMediaManager;
|
||||
@@ -240,15 +237,12 @@ public class CentralSurfacesImplTest extends SysuiTestCase {
|
||||
@Mock private StatusBarWindowStateController mStatusBarWindowStateController;
|
||||
@Mock private NotificationViewHierarchyManager mNotificationViewHierarchyManager;
|
||||
@Mock private UserSwitcherController mUserSwitcherController;
|
||||
@Mock private NetworkController mNetworkController;
|
||||
@Mock private BubblesManager mBubblesManager;
|
||||
@Mock private Bubbles mBubbles;
|
||||
@Mock private NotificationShadeWindowController mNotificationShadeWindowController;
|
||||
@Mock private NotificationIconAreaController mNotificationIconAreaController;
|
||||
@Mock private NotificationShadeWindowViewController mNotificationShadeWindowViewController;
|
||||
@Mock private DozeParameters mDozeParameters;
|
||||
@Mock private Lazy<LockscreenWallpaper> mLockscreenWallpaperLazy;
|
||||
@Mock private LockscreenGestureLogger mLockscreenGestureLogger;
|
||||
@Mock private LockscreenWallpaper mLockscreenWallpaper;
|
||||
@Mock private DozeServiceHost mDozeServiceHost;
|
||||
@Mock private ViewMediatorCallback mKeyguardVieMediatorCallback;
|
||||
@@ -403,7 +397,6 @@ public class CentralSurfacesImplTest extends SysuiTestCase {
|
||||
new FalsingManagerFake(),
|
||||
new FalsingCollectorFake(),
|
||||
mBroadcastDispatcher,
|
||||
mNotifShadeEventSource,
|
||||
mNotificationEntryManager,
|
||||
mNotificationGutsManager,
|
||||
notificationLogger,
|
||||
@@ -418,13 +411,11 @@ public class CentralSurfacesImplTest extends SysuiTestCase {
|
||||
mLockscreenUserManager,
|
||||
mRemoteInputManager,
|
||||
mUserSwitcherController,
|
||||
mNetworkController,
|
||||
mBatteryController,
|
||||
mColorExtractor,
|
||||
new ScreenLifecycle(mDumpManager),
|
||||
wakefulnessLifecycle,
|
||||
mStatusBarStateController,
|
||||
Optional.of(mBubblesManager),
|
||||
Optional.of(mBubbles),
|
||||
mVisualStabilityManager,
|
||||
mDeviceProvisionedController,
|
||||
@@ -436,7 +427,6 @@ public class CentralSurfacesImplTest extends SysuiTestCase {
|
||||
mDozeParameters,
|
||||
mScrimController,
|
||||
mLockscreenWallpaperLazy,
|
||||
mLockscreenGestureLogger,
|
||||
mBiometricUnlockControllerLazy,
|
||||
mDozeServiceHost,
|
||||
mPowerManager, mScreenPinningRequest,
|
||||
@@ -468,7 +458,6 @@ public class CentralSurfacesImplTest extends SysuiTestCase {
|
||||
mLockscreenTransitionController,
|
||||
mFeatureFlags,
|
||||
mKeyguardUnlockAnimationController,
|
||||
new Handler(TestableLooper.get(this).getLooper()),
|
||||
mMainExecutor,
|
||||
new MessageRouterImpl(mMainExecutor),
|
||||
mWallpaperManager,
|
||||
|
||||
Reference in New Issue
Block a user