summaryrefslogtreecommitdiff
path: root/packages/SystemUI/src/com/android/systemui/shade/NotificationShadeWindowViewController.java
Commit message (Collapse)AuthorAgeFilesLines
* Merge "RESTRICT AUTOMERGE Fix alternateBouncer => primaryBouncer flicker" ↵Beverly Tai2023-03-131-1/+3
|\ | | | | | | into tm-qpr-dev
| * RESTRICT AUTOMERGE Fix alternateBouncer => primaryBouncer flickerBeverly2023-03-101-1/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This involves a series of fixes: 1. Don't update the scrim state between hiding the alternate bouncer and showing the primary bouncer. This can cause the scrim state to transition to the UNLOCKED scrim between AUTH_SCRIMMED_SHADE and BOUNCER_SCRIMMED. 2. Handle the AlternateBouncer touch on action up. The AlternateBouncer intercepts all touch events when its visible. We don't want to prematurely stop intercepting the touch after the initial down event, or else the touch can be sent to its parent view (notification shade) while the alternate bouncer is going away which can cause flicker. Therefore, don't trigger the transition to the primary bouncer until action UP. Test: atest StatusBarKeyguardViewManagerTest Test: bring up the altnerate bouncer over the shade over an occluding activity, and then tap anywhere to bring up the primary bouncer. Observe there's no flicker. Bug: 272350664 Change-Id: I1c68ceb9bb77b0b664ca351af1a897b835e80367
* | Touch handling and other tiny cleanups in NPVCJustin Weir2023-03-081-1/+1
|/ | | | | | | | | | | | | | The interface used for the touch handling handoff between Status Bar and Shade is nearly the same as Gefingerpoken, so this change will remove the redundancy. It also removes the usage of the view as an an unnecessary middleman by passing events directly to the Shade touch handler. Also includes some trivial warning cleanup. This was originally the first in a chain of CLs attempting to fix multitouch in the shade, but the follow up CL was too risky for QPR. Bug: 132458655 Test: manual and atest Change-Id: Iabb3484e43573b6e4f7755d1abe0a76512828834
* [DO NOT MERGE] Transitions: PRIMARY_BOUNCER -> GONEMatt Pietal2023-03-031-1/+4
| | | | | | | | | | | | | | | | | | | | | | | | If the device unlocks while the bouncer is in transit, the bouncer will remain visible over the launcher for half a second while the appear animation completes while the scrim immediately disappears (while also undergoing numerous bad requests to transition to invalid states). To fix, control this animation using the transition repo instead and ignore all other incoming requests while it is running. Also, support a new mode for canceling transitions. Some transitions may want to continue from the canceled point, others may want to run the starting transition in full. Fixes: 268596047 Test: ScrimControllerTest KeyguardRepositoryImplTest NotificationShadeWindowViewControllerTest KeyguardTransitionScenariosTest KeyguardTransitionRepositoryTest Test: manual - Tested all bouncer variations, with and without face unlock Change-Id: Ib3f7587574a4445dffdd75493851ed066e3f191d
* Revert "[DO NOT MERGE] Transitions - Smooth out bouncer -> gone"Neha Jain2023-03-021-4/+1
| | | | | | | | | | Revert submission 21608738-mpietal_smooth_bouncer Reason for revert: b/271382454 Reverted changes: /q/submissionid:21608738-mpietal_smooth_bouncer Change-Id: I44fbb56be8faab54818dc2d1b6a93c264113bff9
* [DO NOT MERGE] Transitions - Smooth out bouncer -> goneMatt Pietal2023-02-281-1/+4
| | | | | | | | | | | | | | | | | | | | | | | | If the device unlocks while the bouncer is in transit, the bouncer will remain visible over the launcher for half a second while the appear animation completes while the scrim immediately disappears (while also undergoing numerous bad requests to transition to invalid states). To fix, control this animation using the transition repo instead and ignore all other incoming requests while it is running. Also, support a new mode for canceling transitions. Some transitions may want to continue from the canceled point, others may want to run the starting transition in full. Fixes: 268596047 Test: ScrimControllerTest KeyguardRepositoryImplTest NotificationShadeWindowViewControllerTest KeyguardTransitionScenariosTest KeyguardTransitionRepositoryTest Test: manual - Tested all bouncer variations, with and without face unlock Change-Id: I6fdd0b796e8833539d06c8534182f1298c7e3a58
* [DO NOT MERGE] Remove UNOCCLUSION_TRANSITION flagMatt Pietal2023-02-221-7/+2
| | | | | | | | | | | ... and all of the associated dead code. Fixes: 262859270 Test: atest KeyguardViewMediatorTest NotificationShadeWindowViewControllerTest ScrimControllerTest StatusBarKeyguardViewManagerTest Change-Id: I8d33e07ef566945353dec75a51a7f783b0ed8371
* Remove MODERN_BOUNCER flag.Aaron Liu2023-01-261-6/+4
| | | | | | | | and its references. Fixes: 254512385 Test: open bouncer and close it. Change-Id: I30ce739d7422bb7b7fb26c4a98187e80605c7131
* RESTRICT AUTOMERGE Modernize alternate bouncer logicBeverly2023-01-101-4/+8
| | | | | | | | | | | | | Test: atest BiometricRepositoryTest Test: atest UdfpsKeyguardViewControllerWithCoroutinesTest Test: atest AlternateBouncerInteractorTest Test: atest SystemUITests SystemUIGoogleTests Test: install DPM test app, change device policy requirements and see that biometric repository is correctly updated Bug: 237362467 Change-Id: Ia975fd65d929505d7e1259cfca1dede4cfbc8704 Merged-In: I1d5f8d1331256c7d3d8c427993d2509a591b7e24
* [DO NOT MERGE] Transitions: LOCKSCREEN->DREAMINGMatt Pietal2023-01-091-0/+23
| | | | | | | | | | | | | | | | | | | | | | Add general support for lockscren->occluded/dreaming transitions, including improved support for camera gesture occlusion. Double-tap power will send various signals, so capture the double-tap as soon as possible to cancel a transition in favor of the occlusion transition. For LOCKSCREEN->DREAMING only, delay call to setOccluded, as it causes jank when done too early. Also absorb touches while this transition is running to prevent strange artifacts from popping in if the display is touched. Test: atest KeyguardRepositoryImplTest KeyguardTransitionRepositoryTest NotificationShadeWindowViewControllerTest LockscreenToDreamingTransitionViewModelTest LockscreenToOccludedTransitionViewModelTest NotificationShadeWindowViewTest NotificationPanelViewControllerTest Bug: 260637747 Change-Id: Ie2593706f2848ca715e557c8d4dfc129d93a29f1
* Update SysUI to use new PowerManager WakeReasonsBeverly2022-12-201-1/+4
| | | | | | | Test: manual - check PowerManagerService logs Test: atest CentralSurfacesImplTest PulsingGestureListenerTest Bug: 242628816 Change-Id: I9ff9845a1f98beb336993170ce65886a31dbfdb9
* Merge "Removed calls to NPVC.getView()" into tm-qpr-devShawn Lee2022-11-181-1/+1
|\
| * Removed calls to NPVC.getView()Shawn Lee2022-11-141-1/+1
| | | | | | | | | | | | | | | | | | Got rid of most NPVC.getView calls except for the ones in FoldAodAnimationController, to get closer to deleting it entirely. Bug: 254878364 Test: existing tests Change-Id: If8070d9ec766e7116178febd23cb3f9910d5affb
* | Introduce NotificationInsetsController.Ben Lin2022-11-141-0/+5
|/ | | | | | | | | | | Allow Notification Shade Window view's insets be calculated by a separate module. OEMs can override this module and provide their own calculation logic. Bug: 251207888 Test: Build Change-Id: Ia0b6f854dc62eca4bed5c4a893f8277accf0696c Change-Id: I07ecf6742de791839c756beadcd1c1399453bd8b
* Update naming for the AlternateBouncerBeverly2022-11-081-2/+2
| | | | | | | | | | | | | | | Differentiate naming of the AlternateBouncer and PrimaryBouncer. The AlternateBouncer was formerly referred to as "AltAuth" and "AlternateAuth method". Instead, consistently refer to it as the AlternateBouncer. The AlternateBouncer can be implemented by specific biometric modalities to encourage users to use a biometric before the PrimaryBouncer (pin/pattern/password input) shows. Test: atest SystemUITests Bug: 237362467 Change-Id: Icd2f8fbf76192d9ce8b5ecad3aa4919f9c3a49c0 Merged-In: Icd2f8fbf76192d9ce8b5ecad3aa4919f9c3a49c0
* 1/N sideFPs bouncer, separate altBouncer callbackBeverly2022-11-021-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | The AltBouncer callback should only handle events relevant to any alternate bouncer (ie: show and hide). Other callbacks like setQsExpanded and onTouch should be moved out to a different callback since they're not relevant to all alternate bouncers. This CL also converts UdfpsKeyguardViewController to kotlin and, when the modern bouncer is enabled, uses the BouncerInteractor for the bouncerExpansion to determine whether to show the UDPFS affordance or not. Test: atest UdfpsKeyguardViewControllerTest Test: atest UdfpsKeyguardViewControllerWithCoroutinesTest Test: wallet activity shows udfps affordance Test: tapping home controls affordances shows udfps bouncer Test: tapping notification w/ intent shows udfps bouncer Bug: 237362467 Change-Id: Ibb9b55e6b1a629e28f523ac62058f7e5cf40faed Merged-In: Ibb9b55e6b1a629e28f523ac62058f7e5cf40faed
* Moved panel expansion classes to shade packageShawn Lee2022-10-121-5/+4
| | | | | | | | | Renamed PanelExpansion... to ShadeExpansion..., and refactored accordingly. Cleaned up wildcard imports in UdfpsControllerOverlayTest to pass ktlint. Test: presubmits Bug: 247607270 Change-Id: I7a112a7426ed357b036dd01a00e9caf63dd5897b Merged-In: I7a112a7426ed357b036dd01a00e9caf63dd5897b
* [Keyguard Bouncer] Add new data flow.Aaron Liu2022-09-231-1/+15
| | | | | | | | | | | | | | | | | | | Add MVVM architecture to the existing bouncer logic. Make this feature flag enabled but true by default. Bug: 240298897 Test: Added unit tests and test behavior on device. - Tested on Large screen and standard screen device. - Unlock sim - Unlock pattern - Unlock password - Unlock from tapping settings icon in LS - Unlock from dream - Sim pin unlock - Sim pin -> sim puk unlock - Tested with feature flag off. Change-Id: I0391f552b628991f6504a8c032dbe0e2ad65e859
* Wakeup display on taps before entering true AoDBeverly2022-09-151-3/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | In this transition state, the device is not technically pulsing, but it is Dozing. The primary difference is that the display state is the display is still ON (not DISPLAY_STATE_DOZE) and the DozeSensor wake gestures aren't registered yet. Because isPulsing=false during this transition, instead of checking isPulsing, check isDozing instead. Only touches when the display is ON get sent through the NotificationShadeWindowViewController => PulsingGestureListener, so the DozeSensors will still handle the wakeups that aren't fake AoD2 (including both pulsing + transition period). This CL: - updates the PulsingGestureListener to only check the falsing manager on the ACTION_UP event of the single tap and double tap gesture. The FalsingManager only works if checked right after the action occurred. Previously, we'd check double taps on the double tap's ACTION_DOWN. - allows the FalsingManager to analyze taps from the NotificationPanel while Dozing, as to include the taps when the device is transitioning to AoD. When the device enters the display state DOZE, taps will no longer be sent to the NotificationPanel. - removes the vibration when DOZING that goes along with the falsing manager's feedback when an additional tap is required. if the device is dozing, its likely the device may be in the pocket so there's no reason to buzz. Test: manual 1. Enable AoD 2. Power off display 3. Tap display right after power off 4. Observe: device wakes up to LS Test: manual 1. Disable AoD 2. Send a delayed (5000ms) high-priority notification 3. Screen off 4. When the notification shows, tap the screen 5. Observe: device wakes up to LS Test: atest PulsingGestureListenerTest NotificationPanelViewControllerTest Fixes: 246722709 Bug: 244659326 Bug: 242125976 Change-Id: I1330f2c87482d8bc743a61d652d245fd9b4c69a0
* [Bouncer] Separate keyguard message areas.Aaron Liu2022-09-081-0/+8
| | | | | | | | | | | Separate keyguard message area between bouncer and alt bouncer. Ensure that the separation is clear and understandable. Insert keyguard message area for bouncer into the security view so the layout is better. Fixes: 242186543, 240328688 Test: Add unit tests and tested on multiple devices and view modes. Change-Id: Iff34f1ebe108649c454691d14054072af46bfad8
* Remove doze low light clock.Darrell Shi2022-09-021-22/+0
| | | | | | | Bug: 241567067 Fix: 241567067 Test: manually on device Change-Id: I1fefc24ea73d2a21a31b6e7d4c217a5fbb53a543
* Add falsing protection to the pulsing stateBeverly2022-08-261-50/+6
| | | | | | | | | | | | | | Prox-gate the tap and double tap to wake gestures from pulsing/AoD2. Enable FalsingCollector logs: adb shell setprop log.tag.FalsingCollector DEBUG Test: manually trigger quickpickup (or receive a notification on AoD), cover the prox sensor, and then tap the screen - see device won't wake up Test: atest NotificationShadeWindowViewControllerTest BrightLineFalsingManagerTest PulsingGestureListenerTest Fixes: 242125976 Change-Id: I520df509b7804d765807477968257c94f55ef634
* Move most of the shade codebase into its own packageJustin Weir2022-07-181-0/+500
Creates the package outside the 'phone' directory, since the shade is not just on phones anymore and moves most of the shade code to it. Moves the shade.transition package to it. Moves all related tests. Expands a small amount of method scoping as necessary. Updates, adds, and organizes imports as needed Test: atest SystemUITests SystemUIGoogleTests Fixes: 238333941 Change-Id: I721d35d4adb637f06501e92efe2d37421a3e84e5