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

Commit 843a6f8d authored by Vania Desmonda's avatar Vania Desmonda
Browse files

Use mLastReportedPictureInPictureMode to check PiP state.

Minor correction to use the state field to more accurately check
whether the previously resolved config is in Pip mode.

Test: atest ActivityRecordTests
Flag: com.android.window.flags.enable_dragging_pip_across_displays
Bug: 431280403
Change-Id: I3ea30c542e4058a615178bcd9d8f8918bdc8a06d
parent f324936f
Loading
Loading
Loading
Loading
+4 −3
Original line number Original line Diff line number Diff line
@@ -7604,9 +7604,10 @@ final class ActivityRecord extends WindowToken {
            requestedOverrideConfig.assetsSeq = ASSETS_SEQ_UNDEFINED;
            requestedOverrideConfig.assetsSeq = ASSETS_SEQ_UNDEFINED;
        }
        }


        if (ENABLE_DRAGGING_PIP_ACROSS_DISPLAYS.isTrue() && inPinnedWindowingMode()) {
        if (ENABLE_DRAGGING_PIP_ACROSS_DISPLAYS.isTrue() && mLastReportedPictureInPictureMode) {
            // Retain the following configs for PiP so that the activity doesn't get destroyed and
            // If the previously resolved full config of the activity is in PiP, retain the
            // recreated on display transfer while still remaining in PiP.
            // following configs so that the activity doesn't get destroyed and recreated on display
            // transfer while still remaining in PiP mode.
            if (newParentConfiguration.windowConfiguration.getWindowingMode()
            if (newParentConfiguration.windowConfiguration.getWindowingMode()
                    == WINDOWING_MODE_PINNED) {
                    == WINDOWING_MODE_PINNED) {
                final Configuration lastReportedMergedConfig =
                final Configuration lastReportedMergedConfig =
+7 −7
Original line number Original line Diff line number Diff line
@@ -3598,14 +3598,14 @@ public class ActivityRecordTests extends WindowTestsBase {


    @Test
    @Test
    @EnableFlags(Flags.FLAG_ENABLE_DRAGGING_PIP_ACROSS_DISPLAYS)
    @EnableFlags(Flags.FLAG_ENABLE_DRAGGING_PIP_ACROSS_DISPLAYS)
    public void resolveOverrideConfiguration_windowingModePinned_keepsLastReportedConfigs() {
    public void resolveOverrideConfiguration_inPipMode_keepsLastReportedConfigs() {
        final ActivityRecord activity = createActivityWithTask();
        final ActivityRecord activity = createActivityWithTask();
        activity.setWindowingMode(WINDOWING_MODE_PINNED);
        final Configuration config = new Configuration();
        final Configuration config = new Configuration();
        config.touchscreen = TOUCHSCREEN_FINGER;
        config.touchscreen = TOUCHSCREEN_FINGER;
        config.densityDpi = 100;
        config.densityDpi = 100;
        config.colorMode = COLOR_MODE_WIDE_COLOR_GAMUT_NO;
        config.colorMode = COLOR_MODE_WIDE_COLOR_GAMUT_NO;
        activity.setLastReportedConfiguration(new Configuration(), config);
        activity.setLastReportedConfiguration(new Configuration(), config);
        activity.mLastReportedPictureInPictureMode = true;


        final Configuration newConfig = new Configuration();
        final Configuration newConfig = new Configuration();
        newConfig.windowConfiguration.setWindowingMode(WINDOWING_MODE_PINNED);
        newConfig.windowConfiguration.setWindowingMode(WINDOWING_MODE_PINNED);
@@ -3621,15 +3621,15 @@ public class ActivityRecordTests extends WindowTestsBase {


    @Test
    @Test
    @EnableFlags(Flags.FLAG_ENABLE_DRAGGING_PIP_ACROSS_DISPLAYS)
    @EnableFlags(Flags.FLAG_ENABLE_DRAGGING_PIP_ACROSS_DISPLAYS)
    public void resolveOverrideConfiguration_pinnedActivityInfoHasConfigs_updatesOverrideConfigs() {
    public void resolveOverrideConfiguration_pipActivityInfoHasConfigs_updatesOverrideConfigs() {
        final ActivityRecord activity = createActivityWithTask();
        final ActivityRecord activity = createActivityWithTask();
        activity.setWindowingMode(WINDOWING_MODE_PINNED);
        final Configuration config = new Configuration();
        final Configuration config = new Configuration();
        config.touchscreen = TOUCHSCREEN_FINGER;
        config.touchscreen = TOUCHSCREEN_FINGER;
        config.densityDpi = 100;
        config.densityDpi = 100;
        config.colorMode = COLOR_MODE_WIDE_COLOR_GAMUT_NO;
        config.colorMode = COLOR_MODE_WIDE_COLOR_GAMUT_NO;
        activity.setLastReportedConfiguration(new Configuration(), config);
        activity.setLastReportedConfiguration(new Configuration(), config);
        activity.info.configChanges = CONFIG_TOUCHSCREEN | CONFIG_DENSITY | CONFIG_COLOR_MODE;
        activity.info.configChanges = CONFIG_TOUCHSCREEN | CONFIG_DENSITY | CONFIG_COLOR_MODE;
        activity.mLastReportedPictureInPictureMode = true;


        final Configuration newConfig = new Configuration();
        final Configuration newConfig = new Configuration();
        newConfig.windowConfiguration.setWindowingMode(WINDOWING_MODE_PINNED);
        newConfig.windowConfiguration.setWindowingMode(WINDOWING_MODE_PINNED);
@@ -3646,7 +3646,7 @@ public class ActivityRecordTests extends WindowTestsBase {


    @Test
    @Test
    @EnableFlags(Flags.FLAG_ENABLE_DRAGGING_PIP_ACROSS_DISPLAYS)
    @EnableFlags(Flags.FLAG_ENABLE_DRAGGING_PIP_ACROSS_DISPLAYS)
    public void resolveOverrideConfiguration_windowingModeUndefined_updatesOverrideConfigs() {
    public void resolveOverrideConfiguration_notInPipMode_updatesOverrideConfigs() {
        final ActivityRecord activity = createActivityWithTask();
        final ActivityRecord activity = createActivityWithTask();
        final Configuration config = new Configuration();
        final Configuration config = new Configuration();
        config.touchscreen = TOUCHSCREEN_FINGER;
        config.touchscreen = TOUCHSCREEN_FINGER;
@@ -3668,14 +3668,14 @@ public class ActivityRecordTests extends WindowTestsBase {


    @Test
    @Test
    @EnableFlags(Flags.FLAG_ENABLE_DRAGGING_PIP_ACROSS_DISPLAYS)
    @EnableFlags(Flags.FLAG_ENABLE_DRAGGING_PIP_ACROSS_DISPLAYS)
    public void resolveOverrideConfiguration_inPinnedMode_newConfigFullscreen_updatesConfigs() {
    public void resolveOverrideConfiguration_inPipMode_newConfigFullscreen_updatesConfigs() {
        final ActivityRecord activity = createActivityWithTask();
        final ActivityRecord activity = createActivityWithTask();
        activity.setWindowingMode(WINDOWING_MODE_PINNED);
        final Configuration config = new Configuration();
        final Configuration config = new Configuration();
        config.touchscreen = TOUCHSCREEN_FINGER;
        config.touchscreen = TOUCHSCREEN_FINGER;
        config.densityDpi = 100;
        config.densityDpi = 100;
        config.colorMode = COLOR_MODE_WIDE_COLOR_GAMUT_NO;
        config.colorMode = COLOR_MODE_WIDE_COLOR_GAMUT_NO;
        activity.setLastReportedConfiguration(new Configuration(), config);
        activity.setLastReportedConfiguration(new Configuration(), config);
        activity.mLastReportedPictureInPictureMode = true;


        final Configuration newConfig = new Configuration();
        final Configuration newConfig = new Configuration();
        newConfig.windowConfiguration.setWindowingMode(WINDOWING_MODE_FULLSCREEN);
        newConfig.windowConfiguration.setWindowingMode(WINDOWING_MODE_FULLSCREEN);