diff options
| author | 2024-10-04 05:23:12 +0000 | |
|---|---|---|
| committer | 2024-10-04 05:23:12 +0000 | |
| commit | 24fc85ca86539ff33e391561018bdb5a0b7371fb (patch) | |
| tree | 7fcfb6175e831a7ac6ae7bc7aeed63c9e4a53609 | |
| parent | ac36b8cca30f25ff6e3891b6143e0ae9fd6540ab (diff) | |
| parent | 2a09810f908c8d3f8f968262fc51754fd7861e59 (diff) | |
Merge "Use config size for DisplayMetrics when override doesn't exist" into main
| -rw-r--r-- | core/java/android/app/ResourcesManager.java | 9 | ||||
| -rw-r--r-- | core/tests/coretests/src/android/content/res/ResourcesManagerTest.java | 44 |
2 files changed, 49 insertions, 4 deletions
diff --git a/core/java/android/app/ResourcesManager.java b/core/java/android/app/ResourcesManager.java index 84a4eb4acddc..e043a5d0dc67 100644 --- a/core/java/android/app/ResourcesManager.java +++ b/core/java/android/app/ResourcesManager.java @@ -431,16 +431,19 @@ public class ResourcesManager { } /** - * Protected so that tests can override and returns something a fixed value. + * public so that tests can access and override */ @VisibleForTesting - protected @NonNull DisplayMetrics getDisplayMetrics(int displayId, DisplayAdjustments da) { + public @NonNull DisplayMetrics getDisplayMetrics(int displayId, DisplayAdjustments da) { final DisplayManagerGlobal displayManagerGlobal = DisplayManagerGlobal.getInstance(); final DisplayMetrics dm = new DisplayMetrics(); final DisplayInfo displayInfo = displayManagerGlobal != null ? displayManagerGlobal.getDisplayInfo(displayId) : null; if (displayInfo != null) { - displayInfo.getAppMetrics(dm, da); + final Configuration dajConfig = da.getConfiguration(); + displayInfo.getAppMetrics(dm, da.getCompatibilityInfo(), + (mResDisplayId == displayId && Configuration.EMPTY.equals(dajConfig)) + ? mResConfiguration : dajConfig); } else { dm.setToDefaults(); } diff --git a/core/tests/coretests/src/android/content/res/ResourcesManagerTest.java b/core/tests/coretests/src/android/content/res/ResourcesManagerTest.java index 3eefe044de90..b16c237252f6 100644 --- a/core/tests/coretests/src/android/content/res/ResourcesManagerTest.java +++ b/core/tests/coretests/src/android/content/res/ResourcesManagerTest.java @@ -119,7 +119,7 @@ public class ResourcesManagerTest { } @Override - protected DisplayMetrics getDisplayMetrics(int displayId, DisplayAdjustments daj) { + public DisplayMetrics getDisplayMetrics(int displayId, DisplayAdjustments daj) { return mDisplayMetricsMap.get(displayId); } }; @@ -470,6 +470,48 @@ public class ResourcesManagerTest { @Test @SmallTest + public void testResourceConfigurationAppliedWhenOverrideDoesNotExist() { + final int width = 240; + final int height = 360; + final float densityDpi = mDisplayMetricsMap.get(Display.DEFAULT_DISPLAY).densityDpi; + final int widthDp = (int) (width / densityDpi + 0.5f); + final int heightDp = (int) (height / densityDpi + 0.5f); + + final int overrideWidth = 480; + final int overrideHeight = 720; + final int overrideWidthDp = (int) (overrideWidth / densityDpi + 0.5f); + final int overrideHeightDp = (int) (height / densityDpi + 0.5f); + + // The method to be tested is overridden for other tests to provide a setup environment. + // Create a new one for this test only. + final ResourcesManager resourcesManager = new ResourcesManager(); + + Configuration newConfig = new Configuration(); + newConfig.windowConfiguration.setAppBounds(0, 0, width, height); + newConfig.screenWidthDp = widthDp; + newConfig.screenHeightDp = heightDp; + resourcesManager.applyConfigurationToResources(newConfig, null); + + assertEquals(width, resourcesManager.getDisplayMetrics(Display.DEFAULT_DISPLAY, + DisplayAdjustments.DEFAULT_DISPLAY_ADJUSTMENTS).widthPixels); + assertEquals(height, resourcesManager.getDisplayMetrics(Display.DEFAULT_DISPLAY, + DisplayAdjustments.DEFAULT_DISPLAY_ADJUSTMENTS).heightPixels); + + Configuration overrideConfig = new Configuration(); + overrideConfig.windowConfiguration.setAppBounds(0, 0, overrideWidth, overrideHeight); + overrideConfig.screenWidthDp = overrideWidthDp; + overrideConfig.screenHeightDp = overrideHeightDp; + + final DisplayAdjustments daj = new DisplayAdjustments(overrideConfig); + + assertEquals(overrideWidth, resourcesManager.getDisplayMetrics( + Display.DEFAULT_DISPLAY, daj).widthPixels); + assertEquals(overrideHeight, resourcesManager.getDisplayMetrics( + Display.DEFAULT_DISPLAY, daj).heightPixels); + } + + @Test + @SmallTest @RequiresFlagsEnabled(Flags.FLAG_REGISTER_RESOURCE_PATHS) @DisabledOnRavenwood(blockedBy = PackageManager.class) public void testNewResourcesWithOutdatedImplAfterResourcePathsRegistration() |