Merge "resolve merge conflicts of fc3491bd3e to sc-v2-dev" into sc-v2-dev
This commit is contained in:
@@ -4714,7 +4714,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
|
||||
if (visible) {
|
||||
displayContent.mOpeningApps.add(this);
|
||||
mEnteringAnimation = true;
|
||||
} else {
|
||||
} else if (mVisible) {
|
||||
displayContent.mClosingApps.add(this);
|
||||
mEnteringAnimation = false;
|
||||
}
|
||||
@@ -4817,11 +4817,9 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
|
||||
* this has become invisible.
|
||||
*/
|
||||
private void postApplyAnimation(boolean visible) {
|
||||
final boolean usingShellTransitions =
|
||||
mAtmService.getTransitionController().getTransitionPlayer() != null;
|
||||
final boolean delayed = isAnimating(PARENTS | CHILDREN,
|
||||
ANIMATION_TYPE_APP_TRANSITION | ANIMATION_TYPE_WINDOW_ANIMATION);
|
||||
if (!delayed && !usingShellTransitions) {
|
||||
if (!delayed) {
|
||||
// We aren't delayed anything, but exiting windows rely on the animation finished
|
||||
// callback being called in case the ActivityRecord was pretending to be delayed,
|
||||
// which we might have done because we were in closing/opening apps list.
|
||||
@@ -4840,8 +4838,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
|
||||
// updated.
|
||||
// If we're becoming invisible, update the client visibility if we are not running an
|
||||
// animation. Otherwise, we'll update client visibility in onAnimationFinished.
|
||||
if (visible || !isAnimating(PARENTS, ANIMATION_TYPE_APP_TRANSITION)
|
||||
|| usingShellTransitions) {
|
||||
if (visible || !isAnimating(PARENTS, ANIMATION_TYPE_APP_TRANSITION)) {
|
||||
setClientVisible(visible);
|
||||
}
|
||||
|
||||
|
||||
@@ -2732,6 +2732,85 @@ public class ActivityRecordTests extends WindowTestsBase {
|
||||
> activity.getConfiguration().windowConfiguration.getAppBounds().height());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSetVisibility_visibleToVisible() {
|
||||
final ActivityRecord activity = new ActivityBuilder(mAtm)
|
||||
.setCreateTask(true).build();
|
||||
// By default, activity is visible.
|
||||
assertTrue(activity.isVisible());
|
||||
assertTrue(activity.mVisibleRequested);
|
||||
assertTrue(activity.mDisplayContent.mOpeningApps.contains(activity));
|
||||
assertFalse(activity.mDisplayContent.mClosingApps.contains(activity));
|
||||
|
||||
// Request the activity to be visible. Although the activity is already visible, app
|
||||
// transition animation should be applied on this activity. This might be unnecessary, but
|
||||
// until we verify no logic relies on this behavior, we'll keep this as is.
|
||||
activity.setVisibility(true);
|
||||
assertTrue(activity.isVisible());
|
||||
assertTrue(activity.mVisibleRequested);
|
||||
assertTrue(activity.mDisplayContent.mOpeningApps.contains(activity));
|
||||
assertFalse(activity.mDisplayContent.mClosingApps.contains(activity));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSetVisibility_visibleToInvisible() {
|
||||
final ActivityRecord activity = new ActivityBuilder(mAtm)
|
||||
.setCreateTask(true).build();
|
||||
// By default, activity is visible.
|
||||
assertTrue(activity.isVisible());
|
||||
assertTrue(activity.mVisibleRequested);
|
||||
assertTrue(activity.mDisplayContent.mOpeningApps.contains(activity));
|
||||
assertFalse(activity.mDisplayContent.mClosingApps.contains(activity));
|
||||
|
||||
// Request the activity to be invisible. Since the visibility changes, app transition
|
||||
// animation should be applied on this activity.
|
||||
activity.setVisibility(false);
|
||||
assertTrue(activity.isVisible());
|
||||
assertFalse(activity.mVisibleRequested);
|
||||
assertFalse(activity.mDisplayContent.mOpeningApps.contains(activity));
|
||||
assertTrue(activity.mDisplayContent.mClosingApps.contains(activity));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSetVisibility_invisibleToVisible() {
|
||||
final ActivityRecord activity = new ActivityBuilder(mAtm)
|
||||
.setCreateTask(true).setVisible(false).build();
|
||||
// Activiby is invisible. However ATMS requests it to become visible, since this is a top
|
||||
// activity.
|
||||
assertFalse(activity.isVisible());
|
||||
assertTrue(activity.mVisibleRequested);
|
||||
assertTrue(activity.mDisplayContent.mOpeningApps.contains(activity));
|
||||
assertFalse(activity.mDisplayContent.mClosingApps.contains(activity));
|
||||
|
||||
// Request the activity to be visible. Since the visibility changes, app transition
|
||||
// animation should be applied on this activity.
|
||||
activity.setVisibility(true);
|
||||
assertFalse(activity.isVisible());
|
||||
assertTrue(activity.mVisibleRequested);
|
||||
assertTrue(activity.mDisplayContent.mOpeningApps.contains(activity));
|
||||
assertFalse(activity.mDisplayContent.mClosingApps.contains(activity));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSetVisibility_invisibleToInvisible() {
|
||||
final ActivityRecord activity = new ActivityBuilder(mAtm)
|
||||
.setCreateTask(true).setVisible(false).build();
|
||||
// Activiby is invisible. However ATMS requests it to become visible, since this is a top
|
||||
// activity.
|
||||
assertFalse(activity.isVisible());
|
||||
assertTrue(activity.mVisibleRequested);
|
||||
assertTrue(activity.mDisplayContent.mOpeningApps.contains(activity));
|
||||
assertFalse(activity.mDisplayContent.mClosingApps.contains(activity));
|
||||
|
||||
// Request the activity to be invisible. Since the activity is already invisible, no app
|
||||
// transition should be applied on this activity.
|
||||
activity.setVisibility(false);
|
||||
assertFalse(activity.isVisible());
|
||||
assertFalse(activity.mVisibleRequested);
|
||||
assertFalse(activity.mDisplayContent.mOpeningApps.contains(activity));
|
||||
assertFalse(activity.mDisplayContent.mClosingApps.contains(activity));
|
||||
}
|
||||
|
||||
private void assertHasStartingWindow(ActivityRecord atoken) {
|
||||
assertNotNull(atoken.mStartingSurface);
|
||||
assertNotNull(atoken.mStartingData);
|
||||
|
||||
@@ -861,6 +861,7 @@ class WindowTestsBase extends SystemServiceTestsBase {
|
||||
private Bundle mIntentExtras;
|
||||
private boolean mOnTop = false;
|
||||
private ActivityInfo.WindowLayout mWindowLayout;
|
||||
private boolean mVisible = true;
|
||||
|
||||
ActivityBuilder(ActivityTaskManagerService service) {
|
||||
mService = service;
|
||||
@@ -986,6 +987,11 @@ class WindowTestsBase extends SystemServiceTestsBase {
|
||||
return this;
|
||||
}
|
||||
|
||||
ActivityBuilder setVisible(boolean visible) {
|
||||
mVisible = visible;
|
||||
return this;
|
||||
}
|
||||
|
||||
ActivityRecord build() {
|
||||
SystemServicesTestRule.checkHoldsLock(mService.mGlobalLock);
|
||||
try {
|
||||
@@ -1068,9 +1074,10 @@ class WindowTestsBase extends SystemServiceTestsBase {
|
||||
// root tasks (e.g. home root task).
|
||||
mTask.moveToFront("createActivity");
|
||||
}
|
||||
// Make visible by default...
|
||||
activity.mVisibleRequested = true;
|
||||
activity.setVisible(true);
|
||||
if (mVisible) {
|
||||
activity.mVisibleRequested = true;
|
||||
activity.setVisible(true);
|
||||
}
|
||||
}
|
||||
|
||||
final WindowProcessController wpc;
|
||||
|
||||
Reference in New Issue
Block a user