Merge "Fix flicker when device is unlocked from AOD." into sc-dev

This commit is contained in:
Issei Suzuki
2021-09-15 10:53:57 +00:00
committed by Android (Google) Code Review
2 changed files with 19 additions and 4 deletions

View File

@@ -106,13 +106,13 @@ class KeyguardController {
} }
/** /**
* @return {@code true} for default display when AOD is showing. Otherwise, same as * @return {@code true} for default display when AOD is showing, not going away. Otherwise, same
* {@link #isKeyguardOrAodShowing(int)} * as {@link #isKeyguardOrAodShowing(int)}
* TODO(b/125198167): Replace isKeyguardOrAodShowing() by this logic. * TODO(b/125198167): Replace isKeyguardOrAodShowing() by this logic.
*/ */
boolean isKeyguardUnoccludedOrAodShowing(int displayId) { boolean isKeyguardUnoccludedOrAodShowing(int displayId) {
if (displayId == DEFAULT_DISPLAY && mAodShowing) { if (displayId == DEFAULT_DISPLAY && mAodShowing) {
return true; return !mKeyguardGoingAway;
} }
return isKeyguardOrAodShowing(displayId); return isKeyguardOrAodShowing(displayId);
} }
@@ -477,7 +477,7 @@ class KeyguardController {
final KeyguardDisplayState state = getDisplayState(displayId); final KeyguardDisplayState state = getDisplayState(displayId);
if (isKeyguardUnoccludedOrAodShowing(displayId)) { if (isKeyguardUnoccludedOrAodShowing(displayId)) {
state.mSleepTokenAcquirer.acquire(displayId); state.mSleepTokenAcquirer.acquire(displayId);
} else if (!isKeyguardUnoccludedOrAodShowing(displayId)) { } else {
state.mSleepTokenAcquirer.release(displayId); state.mSleepTokenAcquirer.release(displayId);
} }
} }

View File

@@ -2165,6 +2165,21 @@ public class DisplayContentTests extends WindowTestsBase {
assertEquals(top, display.topRunningActivity(true /* considerKeyguardState */)); assertEquals(top, display.topRunningActivity(true /* considerKeyguardState */));
} }
@Test
public void testKeyguardGoingAwayWhileAodShown() {
mDisplayContent.getDisplayPolicy().setAwake(true);
final WindowState appWin = createWindow(null, TYPE_APPLICATION, mDisplayContent, "appWin");
final ActivityRecord activity = appWin.mActivityRecord;
mAtm.mKeyguardController.setKeyguardShown(true /* keyguardShowing */,
true /* aodShowing */);
assertFalse(activity.isVisibleRequested());
mAtm.mKeyguardController.keyguardGoingAway(0 /* flags */);
assertTrue(activity.isVisibleRequested());
}
@Test @Test
public void testRemoveRootTaskInWindowingModes() { public void testRemoveRootTaskInWindowingModes() {
removeRootTaskTests(() -> mRootWindowContainer.removeRootTasksInWindowingModes( removeRootTaskTests(() -> mRootWindowContainer.removeRootTasksInWindowingModes(