[RESTRICT AUTOMERGE] Update the visibility of activities on sleeping display am: 31fc73a707
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/12400345 Change-Id: I1cc21d2c55d87ef09c8edd607ea5640720a6c948
This commit is contained in:
@@ -4578,15 +4578,6 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check if the activity is on a sleeping display, and if it can turn it ON.
|
|
||||||
if (getDisplay().isSleeping()) {
|
|
||||||
final boolean canTurnScreenOn = !mSetToSleep || canTurnScreenOn()
|
|
||||||
|| canShowWhenLocked() || containsDismissKeyguardWindow();
|
|
||||||
if (!canTurnScreenOn) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Now check whether it's really visible depending on Keyguard state, and update
|
// Now check whether it's really visible depending on Keyguard state, and update
|
||||||
// {@link ActivityStack} internal states.
|
// {@link ActivityStack} internal states.
|
||||||
// Inform the method if this activity is the top activity of this stack, but exclude the
|
// Inform the method if this activity is the top activity of this stack, but exclude the
|
||||||
@@ -4597,6 +4588,12 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
|
|||||||
final boolean visibleIgnoringDisplayStatus = stack.checkKeyguardVisibility(this,
|
final boolean visibleIgnoringDisplayStatus = stack.checkKeyguardVisibility(this,
|
||||||
visibleIgnoringKeyguard, isTop && isTopNotPinnedStack);
|
visibleIgnoringKeyguard, isTop && isTopNotPinnedStack);
|
||||||
|
|
||||||
|
// Check if the activity is on a sleeping display, and if it can turn it ON.
|
||||||
|
// TODO(b/163993448): Do not make activity visible before display awake.
|
||||||
|
if (visibleIgnoringDisplayStatus && getDisplay().isSleeping()) {
|
||||||
|
return !mSetToSleep || canTurnScreenOn();
|
||||||
|
}
|
||||||
|
|
||||||
return visibleIgnoringDisplayStatus;
|
return visibleIgnoringDisplayStatus;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1099,6 +1099,34 @@ public class ActivityRecordTests extends ActivityTestsBase {
|
|||||||
verify(topActivity).destroyIfPossible(anyString());
|
verify(topActivity).destroyIfPossible(anyString());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Verify the visibility of a show-when-locked and dismiss keyguard activity on sleeping
|
||||||
|
* display.
|
||||||
|
*/
|
||||||
|
@Test
|
||||||
|
public void testDisplaySleeping_activityInvisible() {
|
||||||
|
final KeyguardController keyguardController =
|
||||||
|
mActivity.mStackSupervisor.getKeyguardController();
|
||||||
|
doReturn(true).when(keyguardController).isKeyguardLocked();
|
||||||
|
final ActivityRecord topActivity = new ActivityBuilder(mService).setTask(mTask).build();
|
||||||
|
topActivity.mVisibleRequested = true;
|
||||||
|
topActivity.nowVisible = true;
|
||||||
|
topActivity.setState(RESUMED, "test" /*reason*/);
|
||||||
|
doReturn(true).when(topActivity).containsDismissKeyguardWindow();
|
||||||
|
doCallRealMethod().when(mRootWindowContainer).ensureActivitiesVisible(
|
||||||
|
any() /* starting */, anyInt() /* configChanges */,
|
||||||
|
anyBoolean() /* preserveWindows */, anyBoolean() /* notifyClients */);
|
||||||
|
topActivity.setShowWhenLocked(true);
|
||||||
|
|
||||||
|
// Verify the top activity is occluded keyguard.
|
||||||
|
assertEquals(topActivity, mStack.topRunningActivity());
|
||||||
|
assertTrue(mStack.topActivityOccludesKeyguard());
|
||||||
|
|
||||||
|
final DisplayContent display = mActivity.mDisplayContent;
|
||||||
|
doReturn(true).when(display).isSleeping();
|
||||||
|
assertFalse(topActivity.shouldBeVisible());
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Verify that complete finish request for a show-when-locked activity must ensure the
|
* Verify that complete finish request for a show-when-locked activity must ensure the
|
||||||
* keyguard occluded state being updated.
|
* keyguard occluded state being updated.
|
||||||
|
|||||||
Reference in New Issue
Block a user