Merge "Unset activity type for process level configuration"
This commit is contained in:
@@ -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;
|
||||
@@ -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() {
|
||||
|
||||
@@ -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 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();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user