History log of /frameworks/base/services/core/java/com/android/server/am/KeyguardController.java
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
e9dc82ee4d94e76ab76aade84acde5a870b2aba8 23-Jun-2017 Wale Ogunwale <ogunwale@google.com> Fixed some rotation while unlocking screen issue.

- Don't use snapshot that is in different orientation than the current
display orientation. This is a follow up to a previous CL whose
implementation wasn't complete.
- Disabled fixed for unnecessary relaunches when unlocking with
fingerprint sensor introduced in ag/2310557. This causes regression in
the experience from N. We still have the relaunches, but we cover up the
delay by displaying the apps starting window.
- Added more trace log points.

Fixes: 62796190
Fixes: 62904487
Bug: 38494778
Test: go/wm-smoke and manual verification of bug.
Change-Id: Id161a334cb4455dd9eb25c6bb63d5bb3f8a6f1f0
(cherry picked from commit dfb7fb259828a6cfa222b76398da9e430e94fd90)
/frameworks/base/services/core/java/com/android/server/am/KeyguardController.java
bfa81adfbe1819d55737dbbb2fb9157e50dbe022 25-May-2017 Wale Ogunwale <ogunwale@google.com> Fix unnecessary relaunches when unlocking with fingerprint sensor.

When the device is unlocked using the fingerprint sensor in an
orientation opposite to the lockscreen orientation, the app that
will be visible is first relaunched in the current lockscreen
orientation and then later relaunched in the correct orientation.
If the keygaurd is going away then:
- Don't let keyguard affect device orientation. We want to use the
orientation of the app that will be visible.
- Allow the rotation sensor to be enabled even though draw isn't
complete so window manager can get the updated or last rotation
reading.
- Don't clear the previous proposed sensor reading to allow
window manager to use the information to update the orientation as
needed vs. falling back to the previous orientation.

Change-Id: I8369723d6a77f2c602f1ef080371fa7cd9ee094e
Fixes: 38494778
Test: Launch an app that doesn't fix orientation like clock, hold
the device in landscape, press the power button, unlock the device
using the fingerprint sensor, and verify the the app isn't
relaunched.
/frameworks/base/services/core/java/com/android/server/am/KeyguardController.java
ba836ad1faa70abe69073396b191921cd0d70299 28-Apr-2017 TreeHugger Robot <treehugger-gerrit@google.com> Merge "Dismiss docked stack when ShowWhenLocked activity is over keyguard (1/2)" into oc-dev
f4344ef78e5bbb52f25ad57898854d4f55347c7c 21-Apr-2017 Matthew Ng <ngmatthew@google.com> Dismiss docked stack when ShowWhenLocked activity is over keyguard (1/2)

Activities with ShowWhenLocked flag when docked should dismiss the
docked stack and appear after screen turns back on. This incorporates
missing code from ag/1013634 that was missed during refactoring.

Fixes: 36166079
Test: run-test CtsServicesHostTestCases
android.server.cts.KeyguardTests#testShowWhenLockedActivityWhileSplit
Change-Id: I003cdd0be46fe6b9640e2bfbfca582150f2723b7
/frameworks/base/services/core/java/com/android/server/am/KeyguardController.java
e287e19fda1821bd88c3578bab0586628d0fd7e5 21-Apr-2017 Wale Ogunwale <ogunwale@google.com> Fixed pinned stack lockscreen interaction

- Use focused stack to determine of an activity can occlude the
lockscreen instead of the topmost stack. The topmost stack should be the
pinned stack which we don't want to decide if the lockscreen should be
occluded. Should be based on the stack that can contain a resume
activity.
- Make sure the remove AppWindowToken from the display if some one ever
calls removeImmediately() directly on it. This makes sure internal
states are clean-up correctly if the removal wasn't triggered from the
AM side.
- Remove some logs that end up causing confusion for testers thinking
something is broken.

Change-Id: I635f6c9a372882ff33d2e9780a1407f78cddf457
Fixes: 37208509
Test: android.server.cts.KeyguardLockedTests#testShowWhenLockedActivityAndPipActivity
Test: android.server.cts.KeyguardLockedTests#testShowWhenLockedPipActivity
/frameworks/base/services/core/java/com/android/server/am/KeyguardController.java
fc8f82bc6b587bddd2aeaddc54c1ea3f598bb9c3 26-Jan-2017 Andrii Kulian <akulian@google.com> Allow showing content on virtual displays when locked

This adds new flag to virtual display that changes its
behavior when keyguard is shown, but can be dismissed without
entering credentials. This can be applied only to private
virtual displays.

Bug: 34280365
Test: android.server.cts.ActivityManagerDisplayTests
Test: #testVirtualDisplayHidesContentWhenLocked
Test: #testShowWhenLockedVirtualDisplay
Test: #testShowWhenLockedPublicVirtualDisplay
Change-Id: I9c19d36295e62f59bd1db1352af707d54ea51667
/frameworks/base/services/core/java/com/android/server/am/KeyguardController.java
8b702edea1bb211316e1deb3cbe291f2d48d7f77 20-Jan-2017 Jorim Jaggi <jjaggi@google.com> Add starting windows while unlocking

- Modify screen capturing logic a bit such that it can also take a
screenshot when the display is off.
- Also take snapshot when app visibility is changing without
proper app transition.
- When unlocking, add strating windows for all visible apps.

Test: Unlock phone.
Test: Have an app that sleeps in onStart, make sure unlocking is
instant.
Bug: 31339431
Change-Id: I953ab6cb30d0d264554fd49a46bdc56e23356d13
/frameworks/base/services/core/java/com/android/server/am/KeyguardController.java
fecb615093e9781309efcc4d51ffb1808f26415d 29-Oct-2016 Ruben Brunk <rubenbrunk@google.com> Fix VR interaction with screen on/off/lockscreen.

- Add mechanism to prevent VR mode from being enabled.
- Disable VR mode while screen is off, or user is in lockscreen,
and re-enable when this is no longer the case.

Test: Fix merge from nyc-mr2-dev.

Bug: 31665197
Bug: 33655854
Change-Id: If777e0ef40b29bff42722f2aa10cff86a5831bc0
/frameworks/base/services/core/java/com/android/server/am/KeyguardController.java
bbb5b6e8db346df613c15447c0697def8a76584d 15-Dec-2016 Jorim Jaggi <jjaggi@google.com> Revert "Fix VR interaction with screen on/off/lockscreen."

This reverts commit dfe0d7157da8e8a40ee86f0875531bfe2d657831.

Reason for revert: 33655854

Change-Id: Ie8573a394dee768859d64493dd8c17ee0c613287
/frameworks/base/services/core/java/com/android/server/am/KeyguardController.java
dfe0d7157da8e8a40ee86f0875531bfe2d657831 29-Oct-2016 Ruben Brunk <rubenbrunk@google.com> Fix VR interaction with screen on/off/lockscreen.

- Add mechanism to prevent VR mode from being enabled.
- Disable VR mode while screen is off, or user is in lockscreen,
and re-enable when this is no longer the case.

Test: Fix merge from nyc-mr2-dev.

Bug: 31665197
Change-Id: Ia0a7fe8d443a24dce9395053cfe3d1c5847a88f2
/frameworks/base/services/core/java/com/android/server/am/KeyguardController.java
0796187e95420b263c8e35a4a43a8749479bc559 23-Nov-2016 Jorim Jaggi <jjaggi@google.com> Deprecate FLAG_DISMISS_KEYGUARD

Since we now have an explicit dismiss method the flag is only
dangerous for falsing. The behavior will be migrated in the
following way:

- Insecure: Treat as FLAG_SHOW_WHEN_LOCKED
- Trusted: Actually dismiss Keyguard.
- Secure: Show bouncer.

We also restore the behavior to not allow dismissing the Keyguard
while it is occluded, which was the case in Nougat.

Test: cts/hostsidetests/services/activityandwindowmanager/util/run-test
android.server.cts.KeyguardTests

Test: cts/hostsidetests/services/activityandwindowmanager/util/run-test
android.server.cts.KeyguardLockedTests

Test: Insecure: Launch FLAG_DISMISS_KEYGUARD activity, make sure
Keyguard is occluded.

Test: Secure: Launch FLAG_DISMISS_KEYGUARD from SHOW_WHEN_LOCKED, make
sure bouncer is shown.

Test: Trusted: Launch FLAG_DISMISS_KEYGUARD from SHOW_WHEN_LOCKED, make
sure Keyguard gets unlocked.

Test: Trusted: Launch FLAG_DISMISS_KEYGUARD, lock screen, make sure
Keyguard is not dismissed/occluded.

Change-Id: I0d1ec9397a83975adb065c6cb81bf23b08c55395
/frameworks/base/services/core/java/com/android/server/am/KeyguardController.java
241ae10b2189f449e57d8d660235ac56d8fb1b80 03-Nov-2016 Jorim Jaggi <jjaggi@google.com> Add explicit method to dismiss Keyguard

The flag is a bit clunky for most cases, and a method is more
clear.

Test: cts/hostsidetests/services/activityandwindowmanager/util/run-test
android.server.cts.KeyguardTests

Test: cts/hostsidetests/services/activityandwindowmanager/util/run-test
android.server.cts.KeyguardLockedTests

Test: runtest systemui -c
com.android.systemui.keyguard.DismissCallbackRegistryTest

Bug: 30961403
Bug: 27422134
Change-Id: I39de90c7cfecd99350a74f72cd76418e337f2b79
/frameworks/base/services/core/java/com/android/server/am/KeyguardController.java
e69c93181f1f313dcedd07f677af1cea953fdf16 01-Nov-2016 Jorim Jaggi <jjaggi@google.com> The big Keyguard transition refactor (8/n)

Don't force mKeyguardGoingAway, as this never recovers. Make sure
to only show the dismissing Keyguard activtiy and recover the
state when trusted state changes.

Test: Make sure Keyguard is in a trusted state, start an activity
with FLAG_DISMISS_KEYGUARD from FLAG_SHOW_WHEN_LOCKED activity
and make sure there is no flicker.

Bug: 32057734
Change-Id: I5d212f6f9d5430250b22c8370f45dc95756432d2
/frameworks/base/services/core/java/com/android/server/am/KeyguardController.java
8d78693157cb3fa7ab1c9072ef913af4d67c6314 27-Oct-2016 Jorim Jaggi <jjaggi@google.com> The big keyguard transition refactor (6/n)

Cleanup:
- Make sure all the state is nicely dumped.
- Remove some unused stuff.
- Fix a flicker when occluded -> unlocked

Bug: 32057734
Change-Id: Id87e26adccef740d608b325c2dc1f6db14dd4ec3
/frameworks/base/services/core/java/com/android/server/am/KeyguardController.java
ab7ad3898c91dfc2afe6e776917f96dc8a096a44 27-Oct-2016 Jorim Jaggi <jjaggi@google.com> The big keyguard transition refactor (5/n)

Also save surface for the home task, so unlocking to the homescreen
is as fast as before. Note that originally it was not possible to
save surface for home task because of artifacts when clicking the
home button. However, we added logic since then to disallow save
surface if it's a different intent, which is the case when pressing
the home button.

Also consolidate some relayout for less overhead.

Bug: 32057734
Change-Id: I53ede527cb1ff438001d4023ee3740283ee302ee
/frameworks/base/services/core/java/com/android/server/am/KeyguardController.java
77e104322920cb93c0ac3d5f101115826728d3d1 27-Oct-2016 Jorim Jaggi <jjaggi@google.com> The big keyguard transition refactor (3/n)

Notify activity manager when dreaming showing state changed so
KeyguardController can update the occluded state when the device
is dreaming.

Test: Set dreaming while charging, wait until screen times out,
make sure that dream is occluding Keyguard.
Bug: 32057734
Change-Id: Ied6f485d9b4a1526cb4cd5f0701f86b1ea05830a
/frameworks/base/services/core/java/com/android/server/am/KeyguardController.java
fe762344f4475a3a336bb46aef2d59c1fabf32ab 13-Oct-2016 Jorim Jaggi <jjaggi@google.com> The big keyguard transition refactor (1/n)

The heart of this change are two things:
1) Instead of using the force hide mechanism to hide windows behind
Keyguard, we actually make the activities invisible in activity manager.
2) When Keyguard is going away, we change the visibilities in activity
manager and run an app transition.

At the very core we move the responsibility of hiding activities to
ActivityStack, which checks whether Keyguard is showing, and then
hides all non-show-when-locked activities. For that, we need to check
whether any window of an activity has SHOW_WHEN_LOCKED set. We
introduce a callback from WM -> AM in case these Keyguard flags have
changed.

Furthermore, we decide whether to occlude Keyguard in KeyguardController,
which just checks whether the top activity has SHOW_WHEN_LOCKED set. When
this state changes, we prepare an occlude/unocclude app transition, and
in PWM we just inform the Keyguard about the animation so SysUI can play
along this animations in a mostly synchronized manner.

Since we now use an app transition when unlocking the phone, we get
lockscreen launch animations for free - window manager automatically
waits until the activity is drawn, or directly executes the transition
if there is nothing to animate. Thus, we can remove all the infrastructure
around "waitingForActivityDrawn".

The logic to show/hide non-app windows is moved to policy, and we add the
ability to run animations on non-app windows when executing an app
transition.

Test:
1) runtest frameworks-services -c com.android.server.wm.AppTransitionTests
2) Manually test unlocking Keyguard:
2a) Without security
2b) With security
2c) With security but trusted
2d) Portrait while activity behind is in landscape
3) Test launching things from Keyguard
3a) Without security
3b) With security
3c) Launch camera without security
3d) Launch camera with security
3e) Launch camera with securtiy and trusted
3f) Launch voice affordance
4) Set no notifications on lockscreen, drag down, make sure you get
the correct animation
5) Test clicking "emergency" on bouncer
5b) Test "Emergency info" on emergency dialer
5c) Test clicking edit button on emergency info, should show pattern on
Keyguard

Bug: 32057734
Change-Id: Icada03cca74d6a612c1f988845f4d4f601087558
/frameworks/base/services/core/java/com/android/server/am/KeyguardController.java