diff options
| author | 2020-12-01 08:53:50 +0000 | |
|---|---|---|
| committer | 2020-12-01 08:53:50 +0000 | |
| commit | 9c593afe7345214e045d7915bd1e22b21b3cc4cb (patch) | |
| tree | 1c8e8876820d771a270ecdd2c3c38a1454254173 | |
| parent | 536bc936d39b2d8fa000581665394eace54965bd (diff) | |
| parent | 562659db694b38810568a50c87f2ce59ef05df65 (diff) | |
Merge "Fix max bounds doesn't get updated on dual TDA build"
3 files changed, 30 insertions, 4 deletions
diff --git a/services/core/java/com/android/server/wm/ConfigurationContainer.java b/services/core/java/com/android/server/wm/ConfigurationContainer.java index 60a62dc0b64c..36a1ef9f49b4 100644 --- a/services/core/java/com/android/server/wm/ConfigurationContainer.java +++ b/services/core/java/com/android/server/wm/ConfigurationContainer.java @@ -182,6 +182,11 @@ public abstract class ConfigurationContainer<E extends ConfigurationContainer> { // writing to proto (which has significant cost if we write a lot of empty configurations). mHasOverrideConfiguration = !Configuration.EMPTY.equals(overrideConfiguration); mRequestedOverrideConfiguration.setTo(overrideConfiguration); + final Rect newBounds = mRequestedOverrideConfiguration.windowConfiguration.getBounds(); + if (mHasOverrideConfiguration && providesMaxBounds() + && diffRequestedOverrideMaxBounds(newBounds) != BOUNDS_CHANGE_NONE) { + mRequestedOverrideConfiguration.windowConfiguration.setMaxBounds(newBounds); + } // Update full configuration of this container and all its children. final ConfigurationContainer parent = getParent(); onConfigurationChanged(parent != null ? parent.getConfiguration() : Configuration.EMPTY); @@ -341,9 +346,6 @@ public abstract class ConfigurationContainer<E extends ConfigurationContainer> { mRequestsTmpConfig.setTo(getRequestedOverrideConfiguration()); mRequestsTmpConfig.windowConfiguration.setBounds(bounds); - if (overrideMaxBounds) { - mRequestsTmpConfig.windowConfiguration.setMaxBounds(bounds); - } onRequestedOverrideConfigurationChanged(mRequestsTmpConfig); return boundsChange; diff --git a/services/core/java/com/android/server/wm/DisplayContent.java b/services/core/java/com/android/server/wm/DisplayContent.java index 058258d21120..6379080a8c0e 100644 --- a/services/core/java/com/android/server/wm/DisplayContent.java +++ b/services/core/java/com/android/server/wm/DisplayContent.java @@ -5210,7 +5210,7 @@ class DisplayContent extends RootDisplayArea implements WindowManagerPolicy.Disp mCurrentOverrideConfigurationChanges = currOverrideConfig.diff(overrideConfiguration); super.onRequestedOverrideConfigurationChanged(overrideConfiguration); mCurrentOverrideConfigurationChanges = 0; - mWmService.setNewDisplayOverrideConfiguration(overrideConfiguration, this); + mWmService.setNewDisplayOverrideConfiguration(currOverrideConfig, this); mAtmService.addWindowLayoutReasons( ActivityTaskManagerService.LAYOUT_REASON_CONFIG_CHANGED); } diff --git a/services/tests/wmtests/src/com/android/server/wm/ConfigurationContainerTests.java b/services/tests/wmtests/src/com/android/server/wm/ConfigurationContainerTests.java index 5828d02948a1..59b12e406d70 100644 --- a/services/tests/wmtests/src/com/android/server/wm/ConfigurationContainerTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/ConfigurationContainerTests.java @@ -366,6 +366,30 @@ public class ConfigurationContainerTests { assertTrue(child.getConfiguration().windowConfiguration.getMaxBounds().isEmpty()); } + @Test + public void testOnRequestedOverrideConfigurationChangedOverrideMaxBounds() { + final TestConfigurationContainer root = + new TestConfigurationContainer(true /* providesMaxBounds */); + final Rect bounds = new Rect(0, 0, 10, 10); + final TestConfigurationContainer child = new TestConfigurationContainer(); + root.addChild(child); + final Configuration configuration = new Configuration(); + configuration.windowConfiguration.setBounds(bounds); + + root.onRequestedOverrideConfigurationChanged(configuration); + + assertEquals(bounds, root.getBounds()); + assertEquals(bounds, root.getConfiguration().windowConfiguration.getBounds()); + assertEquals(bounds, child.getBounds()); + assertEquals(bounds, child.getConfiguration().windowConfiguration.getBounds()); + + assertEquals(bounds, root.getMaxBounds()); + assertEquals(bounds, root.getConfiguration().windowConfiguration.getMaxBounds()); + assertEquals(bounds, child.getMaxBounds()); + assertEquals(bounds, child.getConfiguration().windowConfiguration.getMaxBounds()); + } + + /** * Contains minimal implementation of {@link ConfigurationContainer}'s abstract behavior needed * for testing. |