Merge "Reset override config when clearSizeCompat" into sc-v2-dev am: 3303217286 am: 7d242203fb

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

Change-Id: I40844ddb01d74057d69b35dafb324e5e2f11660f
This commit is contained in:
Chris Li
2022-01-22 03:34:02 +00:00
committed by Automerger Merge Worker
2 changed files with 26 additions and 1 deletions

View File

@@ -7369,7 +7369,8 @@ final class ActivityRecord extends WindowToken implements WindowManagerService.A
mSizeCompatBounds = null;
mCompatDisplayInsets = null;
onRequestedOverrideConfigurationChanged(getRequestedOverrideConfiguration());
// Clear config override in #updateCompatDisplayInsets().
onRequestedOverrideConfigurationChanged(EMPTY);
}
@Override

View File

@@ -77,6 +77,7 @@ import android.content.pm.ActivityInfo;
import android.content.pm.ActivityInfo.ScreenOrientation;
import android.content.res.Configuration;
import android.graphics.Rect;
import android.os.UserHandle;
import android.platform.test.annotations.Presubmit;
import android.provider.DeviceConfig;
import android.provider.DeviceConfig.Properties;
@@ -2182,6 +2183,29 @@ public class SizeCompatTests extends WindowTestsBase {
.computeAspectRatio(sizeCompatAppBounds), delta);
}
@Test
public void testClearSizeCompat_resetOverrideConfig() {
final int origDensity = 480;
final int newDensity = 520;
final DisplayContent display = new TestDisplayContent.Builder(mAtm, 600, 800)
.setDensityDpi(origDensity)
.build();
setUpApp(display);
prepareUnresizable(mActivity, -1.f /* maxAspect */, SCREEN_ORIENTATION_PORTRAIT);
// Activity should enter size compat with old density after display density change.
display.setForcedDensity(newDensity, UserHandle.USER_CURRENT);
assertScaled();
assertEquals(origDensity, mActivity.getConfiguration().densityDpi);
// Activity should exit size compat with new density.
mActivity.clearSizeCompatMode();
assertFitted();
assertEquals(newDensity, mActivity.getConfiguration().densityDpi);
}
private void assertHorizontalPositionForDifferentDisplayConfigsForLandscapeActivity(
float letterboxHorizontalPositionMultiplier) {
// Set up a display in landscape and ignoring orientation request.