summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Issei Suzuki <issei@google.com> 2021-12-08 15:09:06 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2021-12-08 15:09:06 +0000
commit20569604d998c831bf42d309ed5d68bc8346c740 (patch)
tree60ee240125a57d46dc4f69544a42ad3f84407d45
parentf811df0eb623a3c06aa7501cdeb8b365588e7b36 (diff)
parentc03130ab6f8fbec4b99fee6ff21602fa59bd873e (diff)
Merge "Fix jank when app launched from quick panels on the lock screen" into sc-v2-dev
-rw-r--r--services/core/java/com/android/server/wm/AppTransition.java22
-rw-r--r--services/tests/wmtests/src/com/android/server/wm/AppTransitionTests.java20
2 files changed, 31 insertions, 11 deletions
diff --git a/services/core/java/com/android/server/wm/AppTransition.java b/services/core/java/com/android/server/wm/AppTransition.java
index b9353e1f9a0c..421a1c916fdc 100644
--- a/services/core/java/com/android/server/wm/AppTransition.java
+++ b/services/core/java/com/android/server/wm/AppTransition.java
@@ -1634,21 +1634,21 @@ public class AppTransition implements Dump {
}
@TransitionType int getKeyguardTransition() {
+ if (mNextAppTransitionRequests.indexOf(TRANSIT_KEYGUARD_GOING_AWAY) != -1) {
+ return TRANSIT_KEYGUARD_GOING_AWAY;
+ }
+ final int unoccludeIndex = mNextAppTransitionRequests.indexOf(TRANSIT_KEYGUARD_UNOCCLUDE);
+ final int occludeIndex = mNextAppTransitionRequests.indexOf(TRANSIT_KEYGUARD_OCCLUDE);
+ // No keyguard related transition requests.
+ if (unoccludeIndex == -1 && occludeIndex == -1) {
+ return TRANSIT_NONE;
+ }
// In case we unocclude Keyguard and occlude it again, meaning that we never actually
// unoccclude/occlude Keyguard, but just run a normal transition.
- final int occludeIndex = mNextAppTransitionRequests.indexOf(TRANSIT_KEYGUARD_UNOCCLUDE);
- if (occludeIndex != -1
- && occludeIndex < mNextAppTransitionRequests.indexOf(TRANSIT_KEYGUARD_OCCLUDE)) {
+ if (unoccludeIndex != -1 && unoccludeIndex < occludeIndex) {
return TRANSIT_NONE;
}
-
- for (int i = 0; i < mNextAppTransitionRequests.size(); ++i) {
- final @TransitionType int transit = mNextAppTransitionRequests.get(i);
- if (isKeyguardTransit(transit)) {
- return transit;
- }
- }
- return TRANSIT_NONE;
+ return unoccludeIndex != -1 ? TRANSIT_KEYGUARD_UNOCCLUDE : TRANSIT_KEYGUARD_OCCLUDE;
}
@TransitionType int getFirstAppTransition() {
diff --git a/services/tests/wmtests/src/com/android/server/wm/AppTransitionTests.java b/services/tests/wmtests/src/com/android/server/wm/AppTransitionTests.java
index c0959d311ed5..2ea7fdaf6348 100644
--- a/services/tests/wmtests/src/com/android/server/wm/AppTransitionTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/AppTransitionTests.java
@@ -22,6 +22,9 @@ import static android.view.WindowManager.TRANSIT_CHANGE;
import static android.view.WindowManager.TRANSIT_CLOSE;
import static android.view.WindowManager.TRANSIT_FLAG_APP_CRASHED;
import static android.view.WindowManager.TRANSIT_KEYGUARD_GOING_AWAY;
+import static android.view.WindowManager.TRANSIT_KEYGUARD_OCCLUDE;
+import static android.view.WindowManager.TRANSIT_KEYGUARD_UNOCCLUDE;
+import static android.view.WindowManager.TRANSIT_NONE;
import static android.view.WindowManager.TRANSIT_OLD_CRASHING_ACTIVITY_CLOSE;
import static android.view.WindowManager.TRANSIT_OLD_KEYGUARD_GOING_AWAY;
import static android.view.WindowManager.TRANSIT_OLD_TASK_CHANGE_WINDOWING_MODE;
@@ -92,6 +95,7 @@ public class AppTransitionTests extends WindowTestsBase {
final ActivityRecord activity = createActivityRecord(dc);
mDc.prepareAppTransition(TRANSIT_OPEN);
+ mDc.prepareAppTransition(TRANSIT_KEYGUARD_OCCLUDE);
mDc.prepareAppTransition(TRANSIT_KEYGUARD_GOING_AWAY);
mDc.mOpeningApps.add(activity);
assertEquals(TRANSIT_OLD_KEYGUARD_GOING_AWAY,
@@ -102,6 +106,22 @@ public class AppTransitionTests extends WindowTestsBase {
}
@Test
+ public void testKeyguardUnoccludeOcclude() {
+ final DisplayContent dc = createNewDisplay(Display.STATE_ON);
+ final ActivityRecord activity = createActivityRecord(dc);
+
+ mDc.prepareAppTransition(TRANSIT_KEYGUARD_UNOCCLUDE);
+ mDc.prepareAppTransition(TRANSIT_KEYGUARD_OCCLUDE);
+ mDc.mOpeningApps.add(activity);
+ assertEquals(TRANSIT_NONE,
+ AppTransitionController.getTransitCompatType(mDc.mAppTransition,
+ mDisplayContent.mOpeningApps, mDisplayContent.mClosingApps,
+ mDisplayContent.mChangingContainers, null /* wallpaperTarget */,
+ null /* oldWallpaper */, false /*skipAppTransitionAnimation*/));
+
+ }
+
+ @Test
public void testKeyguardKeep() {
final DisplayContent dc = createNewDisplay(Display.STATE_ON);
final ActivityRecord activity = createActivityRecord(dc);