Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6f148d8f authored by Louis Chang's avatar Louis Chang Committed by Automerger Merge Worker
Browse files

Merge "Unset activity type for process level configuration" into rvc-qpr-dev am: 25bfb826

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/12360930

Change-Id: I13ef4042627670ab0f4f7d0af5e716764f960d93
parents 8c2b879a 25bfb826
Loading
Loading
Loading
Loading
+18 −4
Original line number Diff line number Diff line
@@ -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;
@@ -1167,12 +1166,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() {
+15 −0
Original line number Diff line number Diff line
@@ -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();
    }