Fix jank when app launched from quick panels on the lock screen
Bug: 209035016 Test: atest AppTransitionTests Change-Id: Ifb0b41345729afc94e2c9bbbf828db80bf7858f7
This commit is contained in:
@@ -1634,21 +1634,21 @@ public class AppTransition implements Dump {
|
||||
}
|
||||
|
||||
@TransitionType int getKeyguardTransition() {
|
||||
// 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 (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;
|
||||
}
|
||||
|
||||
for (int i = 0; i < mNextAppTransitionRequests.size(); ++i) {
|
||||
final @TransitionType int transit = mNextAppTransitionRequests.get(i);
|
||||
if (isKeyguardTransit(transit)) {
|
||||
return transit;
|
||||
}
|
||||
// In case we unocclude Keyguard and occlude it again, meaning that we never actually
|
||||
// unoccclude/occlude Keyguard, but just run a normal transition.
|
||||
if (unoccludeIndex != -1 && unoccludeIndex < occludeIndex) {
|
||||
return TRANSIT_NONE;
|
||||
}
|
||||
return TRANSIT_NONE;
|
||||
return unoccludeIndex != -1 ? TRANSIT_KEYGUARD_UNOCCLUDE : TRANSIT_KEYGUARD_OCCLUDE;
|
||||
}
|
||||
|
||||
@TransitionType int getFirstAppTransition() {
|
||||
|
||||
@@ -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,
|
||||
@@ -101,6 +105,22 @@ public class AppTransitionTests extends WindowTestsBase {
|
||||
null /* oldWallpaper */, false /*skipAppTransitionAnimation*/));
|
||||
}
|
||||
|
||||
@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);
|
||||
|
||||
Reference in New Issue
Block a user