Merge "Fix flicker when device is unlocked from AOD." into sc-dev am: aaba1884bb am: 47428d13eb am: bfd83062f9

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/15736949

Change-Id: Id1b2141c32d5e743b7e33797269b1d55f9679029
This commit is contained in:
Issei Suzuki
2021-09-15 11:31:46 +00:00
committed by Automerger Merge Worker
2 changed files with 19 additions and 4 deletions

View File

@@ -109,13 +109,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);
} }
@@ -488,7 +488,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

@@ -2172,6 +2172,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(