Merge "Clear mInheritedCompatDisplayInsets when clearing size compat mode" into tm-qpr-dev am: 451856db69

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

Change-Id: I6454e4d3ddf89bfe89a7327f6fb7cdfcf8d1e0d3
Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
Vali Calinescu
2023-03-23 14:46:59 +00:00
committed by Automerger Merge Worker
3 changed files with 34 additions and 0 deletions

View File

@@ -8073,6 +8073,7 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
mSizeCompatScale = 1f;
mSizeCompatBounds = null;
mCompatDisplayInsets = null;
mLetterboxUiController.clearInheritedCompatDisplayInsets();
}
@VisibleForTesting

View File

@@ -1494,6 +1494,10 @@ final class LetterboxUiController {
return mInheritedCompatDisplayInsets;
}
void clearInheritedCompatDisplayInsets() {
mInheritedCompatDisplayInsets = null;
}
/**
* In case of translucent activities, it consumes the {@link ActivityRecord} of the first opaque
* activity beneath using the given consumer and returns {@code true}.

View File

@@ -64,6 +64,8 @@ import static com.google.common.truth.Truth.assertThat;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.anyBoolean;
@@ -485,6 +487,33 @@ public class SizeCompatTests extends WindowTestsBase {
assertEquals(translucentActivity.getBounds(), mActivity.getBounds());
}
@Test
public void testTranslucentActivity_clearSizeCompatMode_inheritedCompatDisplayInsetsCleared() {
mWm.mLetterboxConfiguration.setTranslucentLetterboxingOverrideEnabled(true);
setUpDisplaySizeWithApp(2800, 1400);
mActivity.mDisplayContent.setIgnoreOrientationRequest(true /* ignoreOrientationRequest */);
prepareUnresizable(mActivity, -1f /* maxAspect */, SCREEN_ORIENTATION_PORTRAIT);
// Rotate to put activity in size compat mode.
rotateDisplay(mActivity.mDisplayContent, ROTATION_90);
assertTrue(mActivity.inSizeCompatMode());
// We launch a transparent activity
final ActivityRecord translucentActivity = new ActivityBuilder(mAtm)
.setLaunchedFromUid(mActivity.getUid())
.setScreenOrientation(SCREEN_ORIENTATION_PORTRAIT)
.build();
doReturn(false).when(translucentActivity).fillsParent();
mTask.addChild(translucentActivity);
// The transparent activity inherits the compat display insets of the opaque activity
// beneath it
assertNotNull(translucentActivity.getCompatDisplayInsets());
// Clearing SCM should also clear the inherited compat display insets
translucentActivity.clearSizeCompatMode();
assertNull(translucentActivity.getCompatDisplayInsets());
}
@Test
public void testRestartProcessIfVisible() {
setUpDisplaySizeWithApp(1000, 2500);