summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author TreeHugger Robot <treehugger-gerrit@google.com> 2020-12-01 08:53:50 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2020-12-01 08:53:50 +0000
commit9c593afe7345214e045d7915bd1e22b21b3cc4cb (patch)
tree1c8e8876820d771a270ecdd2c3c38a1454254173
parent536bc936d39b2d8fa000581665394eace54965bd (diff)
parent562659db694b38810568a50c87f2ce59ef05df65 (diff)
Merge "Fix max bounds doesn't get updated on dual TDA build"
-rw-r--r--services/core/java/com/android/server/wm/ConfigurationContainer.java8
-rw-r--r--services/core/java/com/android/server/wm/DisplayContent.java2
-rw-r--r--services/tests/wmtests/src/com/android/server/wm/ConfigurationContainerTests.java24
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.