Loading services/core/java/com/android/server/wm/WindowProcessController.java +18 −4 Original line number Diff line number Diff line Loading @@ -196,7 +196,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; Loading Loading @@ -1291,12 +1290,27 @@ public class WindowProcessController extends ConfigurationContainer<Configuratio updateConfiguration(); } @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() { Loading services/tests/wmtests/src/com/android/server/wm/WindowProcessControllerTests.java +15 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -253,6 +255,19 @@ public class WindowProcessControllerTests extends WindowTestsBase { 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(mAtm, 1000, 1500).build(); } Loading Loading
services/core/java/com/android/server/wm/WindowProcessController.java +18 −4 Original line number Diff line number Diff line Loading @@ -196,7 +196,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; Loading Loading @@ -1291,12 +1290,27 @@ public class WindowProcessController extends ConfigurationContainer<Configuratio updateConfiguration(); } @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() { Loading
services/tests/wmtests/src/com/android/server/wm/WindowProcessControllerTests.java +15 −0 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -253,6 +255,19 @@ public class WindowProcessControllerTests extends WindowTestsBase { 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(mAtm, 1000, 1500).build(); } Loading