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

Commit 8ee9fe8a authored by Vania Desmonda's avatar Vania Desmonda
Browse files

Revert resetting density and configs on exiting PiP.

Resetting the density causes some unexpected Core config changes that
makes multiple binder calls and causes the app to malfunction upon
launching an app while it's in PiP on another display.

Fixes: 443007642
Flag: com.android.window.flags.enable_dragging_pip_across_displays
Test: atest ActivityRecordTests
Change-Id: I1afde7e0659a3db6e4fbacbea7b9433b7aff6eb4
parent 04721557
Loading
Loading
Loading
Loading
+17 −23
Original line number Diff line number Diff line
@@ -7597,11 +7597,11 @@ final class ActivityRecord extends WindowToken {
            requestedOverrideConfig.assetsSeq = ASSETS_SEQ_UNDEFINED;
        }

        if (ENABLE_DRAGGING_PIP_ACROSS_DISPLAYS.isTrue() && mLastReportedPictureInPictureMode) {
            // If the previously resolved full config of the activity is in PiP, retain the
        // If the previously resolved full config and new parent activity is in PiP, retain the
        // 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 (ENABLE_DRAGGING_PIP_ACROSS_DISPLAYS.isTrue() && mLastReportedPictureInPictureMode
                && newParentConfiguration.windowConfiguration.getWindowingMode()
                == WINDOWING_MODE_PINNED) {
            final Configuration lastReportedMergedConfig =
                    mLastReportedConfiguration.getMergedConfiguration();
@@ -7615,12 +7615,6 @@ final class ActivityRecord extends WindowToken {
            if ((configChanges & ActivityInfo.CONFIG_DENSITY) == 0) {
                requestedOverrideConfig.densityDpi = lastReportedMergedConfig.densityDpi;
            }
            } else {
                // Reset the configs if we're exiting PiP mode.
                requestedOverrideConfig.colorMode = Configuration.COLOR_MODE_UNDEFINED;
                requestedOverrideConfig.touchscreen = Configuration.TOUCHSCREEN_UNDEFINED;
                requestedOverrideConfig.densityDpi = Configuration.DENSITY_DPI_UNDEFINED;
            }
        }

        super.resolveOverrideConfiguration(newParentConfiguration);
+0 −26
Original line number Diff line number Diff line
@@ -3642,32 +3642,6 @@ public class ActivityRecordTests extends WindowTestsBase {
                activity.getRequestedOverrideConfiguration().colorMode);
    }

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

        final Configuration newConfig = new Configuration();
        newConfig.windowConfiguration.setWindowingMode(WINDOWING_MODE_FULLSCREEN);
        newConfig.touchscreen = TOUCHSCREEN_NOTOUCH;
        newConfig.densityDpi = 200;
        newConfig.colorMode = COLOR_MODE_WIDE_COLOR_GAMUT_YES;
        activity.resolveOverrideConfiguration(newConfig);

        assertEquals(Configuration.TOUCHSCREEN_UNDEFINED,
                activity.getRequestedOverrideConfiguration().touchscreen);
        assertEquals(Configuration.DENSITY_DPI_UNDEFINED,
                activity.getRequestedOverrideConfiguration().densityDpi);
        assertEquals(Configuration.COLOR_MODE_UNDEFINED,
                activity.getRequestedOverrideConfiguration().colorMode);
    }

    private ActivityRecord setupDisplayAndActivityForCameraCompat(boolean isCameraRunning,
            int windowingMode) {
        doReturn(true).when(() -> DesktopModeHelper.canEnterDesktopMode(any()));