diff options
author | Louis Chang <louischang@google.com> | 2020-08-14 03:19:00 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2020-08-14 03:19:00 +0000 |
commit | 25bfb826166ba9e2461a098bb7f6ac0a989e622d (patch) | |
tree | c978859c264d16e3565c77343092a039f35cdea4 | |
parent | b1012032d311f25f7fdbb0cfbed50223356b2154 (diff) | |
parent | 79388bdd6fc248362dddc8eb9a9cb633cb821596 (diff) |
Merge "Unset activity type for process level configuration" into rvc-qpr-dev
-rw-r--r-- | services/core/java/com/android/server/wm/WindowProcessController.java | 22 | ||||
-rw-r--r-- | services/tests/wmtests/src/com/android/server/wm/WindowProcessControllerTests.java | 15 |
2 files changed, 33 insertions, 4 deletions
diff --git a/services/core/java/com/android/server/wm/WindowProcessController.java b/services/core/java/com/android/server/wm/WindowProcessController.java index 29cf1776df9c..bd959aba5bb1 100644 --- a/services/core/java/com/android/server/wm/WindowProcessController.java +++ b/services/core/java/com/android/server/wm/WindowProcessController.java @@ -188,7 +188,6 @@ public class WindowProcessController extends ConfigurationContainer<Configuratio private final Configuration mLastReportedConfiguration = new Configuration(); // Configuration that is waiting to be dispatched to the process. private Configuration mPendingConfiguration; - private final Configuration mNewOverrideConfig = new Configuration(); // Registered display id as a listener to override config change private int mDisplayId; private ActivityRecord mConfigActivityRecord; @@ -1168,11 +1167,26 @@ public class WindowProcessController extends ConfigurationContainer<Configuratio } @Override + public void onRequestedOverrideConfigurationChanged(Configuration overrideConfiguration) { + super.onRequestedOverrideConfigurationChanged( + sanitizeProcessConfiguration(overrideConfiguration)); + } + + @Override public void onMergedOverrideConfigurationChanged(Configuration mergedOverrideConfig) { + super.onRequestedOverrideConfigurationChanged( + sanitizeProcessConfiguration(mergedOverrideConfig)); + } + + private static Configuration sanitizeProcessConfiguration(Configuration config) { // Make sure that we don't accidentally override the activity type. - mNewOverrideConfig.setTo(mergedOverrideConfig); - mNewOverrideConfig.windowConfiguration.setActivityType(ACTIVITY_TYPE_UNDEFINED); - super.onRequestedOverrideConfigurationChanged(mNewOverrideConfig); + if (config.windowConfiguration.getActivityType() != ACTIVITY_TYPE_UNDEFINED) { + final Configuration sanitizedConfig = new Configuration(config); + sanitizedConfig.windowConfiguration.setActivityType(ACTIVITY_TYPE_UNDEFINED); + return sanitizedConfig; + } + + return config; } private void updateConfiguration() { diff --git a/services/tests/wmtests/src/com/android/server/wm/WindowProcessControllerTests.java b/services/tests/wmtests/src/com/android/server/wm/WindowProcessControllerTests.java index cdf8eb4faf1d..24950ce6a882 100644 --- a/services/tests/wmtests/src/com/android/server/wm/WindowProcessControllerTests.java +++ b/services/tests/wmtests/src/com/android/server/wm/WindowProcessControllerTests.java @@ -16,6 +16,8 @@ package com.android.server.wm; +import static android.app.WindowConfiguration.ACTIVITY_TYPE_HOME; +import static android.app.WindowConfiguration.ACTIVITY_TYPE_UNDEFINED; import static android.content.res.Configuration.ORIENTATION_LANDSCAPE; import static android.content.res.Configuration.ORIENTATION_PORTRAIT; import static android.view.Display.INVALID_DISPLAY; @@ -253,6 +255,19 @@ public class WindowProcessControllerTests extends ActivityTestsBase { assertFalse(mWpc.registeredForActivityConfigChanges()); } + @Test + public void testProcessLevelConfiguration() { + Configuration config = new Configuration(); + config.windowConfiguration.setActivityType(ACTIVITY_TYPE_HOME); + mWpc.onRequestedOverrideConfigurationChanged(config); + assertEquals(ACTIVITY_TYPE_HOME, config.windowConfiguration.getActivityType()); + assertEquals(ACTIVITY_TYPE_UNDEFINED, mWpc.getActivityType()); + + mWpc.onMergedOverrideConfigurationChanged(config); + assertEquals(ACTIVITY_TYPE_HOME, config.windowConfiguration.getActivityType()); + assertEquals(ACTIVITY_TYPE_UNDEFINED, mWpc.getActivityType()); + } + private TestDisplayContent createTestDisplayContentInContainer() { return new TestDisplayContent.Builder(mService, 1000, 1500).build(); } |