Merge "Fix missing legacy change transition on display info changed" into tm-qpr-dev
This commit is contained in:
@@ -1020,10 +1020,11 @@ class WindowContainer<E extends WindowContainer> extends ConfigurationContainer<
|
|||||||
* @param dc The display this container is on after changes.
|
* @param dc The display this container is on after changes.
|
||||||
*/
|
*/
|
||||||
void onDisplayChanged(DisplayContent dc) {
|
void onDisplayChanged(DisplayContent dc) {
|
||||||
if (mDisplayContent != null) {
|
if (mDisplayContent != null && mDisplayContent != dc) {
|
||||||
|
// Cancel any change transition queued-up for this container on the old display when
|
||||||
|
// this container is moved from the old display.
|
||||||
mDisplayContent.mClosingChangingContainers.remove(this);
|
mDisplayContent.mClosingChangingContainers.remove(this);
|
||||||
if (mDisplayContent.mChangingContainers.remove(this)) {
|
if (mDisplayContent.mChangingContainers.remove(this)) {
|
||||||
// Cancel any change transition queued-up for this container on the old display.
|
|
||||||
mSurfaceFreezer.unfreeze(getSyncTransaction());
|
mSurfaceFreezer.unfreeze(getSyncTransaction());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -868,6 +868,28 @@ public class WindowContainerTests extends WindowTestsBase {
|
|||||||
assertEquals(newDc, activity.mDisplayContent);
|
assertEquals(newDc, activity.mDisplayContent);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testOnDisplayChanged_cleanupChanging() {
|
||||||
|
final Task task = createTask(mDisplayContent);
|
||||||
|
spyOn(task.mSurfaceFreezer);
|
||||||
|
mDisplayContent.mChangingContainers.add(task);
|
||||||
|
|
||||||
|
// Don't remove the changing transition of this window when it is still the old display.
|
||||||
|
// This happens on display info changed.
|
||||||
|
task.onDisplayChanged(mDisplayContent);
|
||||||
|
|
||||||
|
assertTrue(mDisplayContent.mChangingContainers.contains(task));
|
||||||
|
verify(task.mSurfaceFreezer, never()).unfreeze(any());
|
||||||
|
|
||||||
|
// Remove the changing transition of this window when it is moved or reparented from the old
|
||||||
|
// display.
|
||||||
|
final DisplayContent newDc = createNewDisplay();
|
||||||
|
task.onDisplayChanged(newDc);
|
||||||
|
|
||||||
|
assertFalse(mDisplayContent.mChangingContainers.contains(task));
|
||||||
|
verify(task.mSurfaceFreezer).unfreeze(any());
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testHandleCompleteDeferredRemoval() {
|
public void testHandleCompleteDeferredRemoval() {
|
||||||
final DisplayContent displayContent = createNewDisplay();
|
final DisplayContent displayContent = createNewDisplay();
|
||||||
|
|||||||
Reference in New Issue
Block a user