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

Commit 9e021198 authored by Neha Jain's avatar Neha Jain Committed by Android Build Coastguard Worker
Browse files

Revert "Correct showing desktop experience dev option"

This reverts commit 97c707c8.

Reason for revert: b/415214580

Bug: 389092752
(cherry picked from https://googleplex-android-review.googlesource.com/q/commit:0f2d9af7a4c2febaf4335cf21dc0a68c37592500)
Merged-In: Ifccbc80e95ac7d1ca2faf50084aaec4fc116ff62
Change-Id: Ifccbc80e95ac7d1ca2faf50084aaec4fc116ff62
parent 4a4c8f41
Loading
Loading
Loading
Loading
+0 −6
Original line number Diff line number Diff line
@@ -16,8 +16,6 @@

package android.window;

import static com.android.server.display.feature.flags.Flags.enableDisplayContentModeManagement;

import android.annotation.Nullable;
import android.app.ActivityThread;
import android.app.Application;
@@ -215,10 +213,6 @@ public enum DesktopModeFlags {
            boolean shouldOverrideByDevOption) {
        if (!shouldOverrideByDevOption) return flagFunction.getAsBoolean();
        if (Flags.showDesktopExperienceDevOption()) {
            // If the feature is enabled, just return the flag's value.
            if (enableDisplayContentModeManagement()) {
                return flagFunction.getAsBoolean();
            }
            return switch (getToggleOverride()) {
                case OVERRIDE_UNSET, OVERRIDE_OFF -> flagFunction.getAsBoolean();
                case OVERRIDE_ON -> true;
+0 −2
Original line number Diff line number Diff line
@@ -22,7 +22,6 @@ import static android.window.DesktopModeFlags.ToggleOverride.OVERRIDE_ON;
import static android.window.DesktopModeFlags.ToggleOverride.OVERRIDE_UNSET;
import static android.window.DesktopModeFlags.ToggleOverride.fromSetting;

import static com.android.server.display.feature.flags.Flags.FLAG_ENABLE_DISPLAY_CONTENT_MODE_MANAGEMENT;
import static com.android.window.flags.Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODE;
import static com.android.window.flags.Flags.FLAG_SHOW_DESKTOP_EXPERIENCE_DEV_OPTION;
import static com.android.window.flags.Flags.FLAG_SHOW_DESKTOP_WINDOWING_DEV_OPTION;
@@ -68,7 +67,6 @@ import java.util.List;
@SmallTest
@Presubmit
@RunWith(ParameterizedAndroidJunit4.class)
@DisableFlags(FLAG_ENABLE_DISPLAY_CONTENT_MODE_MANAGEMENT)
public class DesktopModeFlagsTest {

    @Parameters(name = "{0}")
+8 −2
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@
package com.android.wm.shell.shared.desktopmode;

import static android.hardware.display.DisplayManager.DISPLAY_CATEGORY_ALL_INCLUDING_DISABLED;
import static android.window.DesktopExperienceFlags.ENABLE_PROJECTED_DISPLAY_DESKTOP_MODE;

import static com.android.server.display.feature.flags.Flags.enableDisplayContentModeManagement;
import static com.android.wm.shell.shared.bubbles.BubbleAnythingFlagHelper.enableBubbleToFullscreen;
@@ -206,10 +207,15 @@ public class DesktopModeStatus {
        if (!enforceDeviceRestrictions()) {
            return true;
        }
        // If projected display is enabled, #canInternalDisplayHostDesktops is no longer a
        // requirement.
        final boolean desktopModeSupported = ENABLE_PROJECTED_DISPLAY_DESKTOP_MODE.isTrue()
                ? isDesktopModeSupported(context) : (isDesktopModeSupported(context)
                && canInternalDisplayHostDesktops(context));
        final boolean desktopModeSupportedByDevOptions =
                Flags.enableDesktopModeThroughDevOption()
                    && isDesktopModeDevOptionSupported(context);
        return isDesktopModeSupported(context) || desktopModeSupportedByDevOptions;
        return desktopModeSupported || desktopModeSupportedByDevOptions;
    }

    /**
+21 −2
Original line number Diff line number Diff line
@@ -27,6 +27,7 @@ import android.window.DesktopExperienceFlags
import android.window.DesktopModeFlags
import com.android.internal.R
import com.android.internal.annotations.VisibleForTesting
import com.android.server.display.feature.flags.Flags.enableDisplayContentModeManagement
import com.android.window.flags.Flags
import com.android.wm.shell.shared.bubbles.BubbleAnythingFlagHelper

@@ -84,9 +85,18 @@ class DesktopStateImpl(context: Context) : DesktopState {
    override val isDeviceEligibleForDesktopMode: Boolean
        get() {
            if (!enforceDeviceRestrictions) return true

            // If projected display is enabled, [canInternalDisplayHostDesktops] is no longer a
            // requirement.
            val desktopModeSupported =
                if (DesktopExperienceFlags.ENABLE_PROJECTED_DISPLAY_DESKTOP_MODE.isTrue) {
                    isDesktopModeSupported
                } else {
                    isDesktopModeSupported && canInternalDisplayHostDesktops
                }
            val desktopModeSupportedByDevOptions =
                Flags.enableDesktopModeThroughDevOption() && isDesktopModeDevOptionSupported
            return isDesktopModeSupported || desktopModeSupportedByDevOptions
            return desktopModeSupported || desktopModeSupportedByDevOptions
        }

    override val enableMultipleDesktops: Boolean =
@@ -101,9 +111,18 @@ class DesktopStateImpl(context: Context) : DesktopState {
        if (!canEnterDesktopMode) return false
        if (!enforceDeviceRestrictions) return true
        if (display.type == Display.TYPE_INTERNAL) return canInternalDisplayHostDesktops

        // TODO (b/395014779): Change this to use WM API
        if (
            (display.type == Display.TYPE_EXTERNAL || display.type == Display.TYPE_OVERLAY) &&
                enableDisplayContentModeManagement()
        ) {
            return windowManager?.isEligibleForDesktopMode(display.displayId) ?: false
        }

        return false
    }

    override fun isProjectedMode(): Boolean {
        if (!DesktopExperienceFlags.ENABLE_PROJECTED_DISPLAY_DESKTOP_MODE.isTrue) {
            return false
+14 −29
Original line number Diff line number Diff line
@@ -22,7 +22,6 @@ import android.platform.test.annotations.DisableFlags
import android.platform.test.annotations.EnableFlags
import android.platform.test.annotations.Presubmit
import android.platform.test.flag.junit.SetFlagsRule
import android.window.DesktopExperienceFlags
import android.window.DesktopModeFlags
import androidx.test.filters.SmallTest
import com.android.internal.R
@@ -58,6 +57,7 @@ class DesktopModeStatusTest : ShellTestCase() {
        doReturn(false).whenever(mockResources).getBoolean(
            eq(R.bool.config_isDesktopModeDevOptionSupported)
        )
        setDeviceEligibleForDesktopMode(false)
        doReturn(context.contentResolver).whenever(mockContext).contentResolver
        resetDesktopModeFlagsCache()
        resetEnforceDeviceRestriction()
@@ -140,10 +140,8 @@ class DesktopModeStatusTest : ShellTestCase() {
        assertThat(DesktopModeStatus.canEnterDesktopMode(mockContext)).isTrue()
    }

    @EnableFlags(
        Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODE,
        Flags.FLAG_ENABLE_DESKTOP_MODE_THROUGH_DEV_OPTION
    )
    @DisableFlags(Flags.FLAG_ENABLE_DESKTOP_MODE_THROUGH_DEV_OPTION)
    @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODE)
    @Test
    fun canEnterDesktopMode_DWFlagEnabled_deviceNotEligible_forceUsingDevOption_returnsTrue() {
        doReturn(true).whenever(mockResources).getBoolean(
@@ -172,12 +170,12 @@ class DesktopModeStatusTest : ShellTestCase() {

    @DisableFlags(Flags.FLAG_ENABLE_PROJECTED_DISPLAY_DESKTOP_MODE)
    @Test
    fun isDeviceEligibleForDesktopMode_configDEModeOnAndIntDispHostsDesktopOff_returnsTrue() {
    fun isDeviceEligibleForDesktopMode_configDEModeOnAndIntDispHostsDesktopOff_returnsFalse() {
        doReturn(true).whenever(mockResources).getBoolean(eq(R.bool.config_isDesktopModeSupported))
        doReturn(false).whenever(mockResources)
            .getBoolean(eq(R.bool.config_canInternalDisplayHostDesktops))

        assertThat(DesktopModeStatus.isDeviceEligibleForDesktopMode(mockContext)).isTrue()
        assertThat(DesktopModeStatus.isDeviceEligibleForDesktopMode(mockContext)).isFalse()
    }

    @EnableFlags(Flags.FLAG_ENABLE_PROJECTED_DISPLAY_DESKTOP_MODE)
@@ -249,36 +247,23 @@ class DesktopModeStatusTest : ShellTestCase() {
    }

    private fun resetDesktopModeFlagsCache() {
        // Toggle override cache for DesktopModeFlags
        val cachedToggleOverride1 =
        val cachedToggleOverride =
            DesktopModeFlags::class.java.getDeclaredField("sCachedToggleOverride")
        cachedToggleOverride1.isAccessible = true
        cachedToggleOverride1.set(null, DesktopModeFlags.ToggleOverride.OVERRIDE_OFF)

        // Toggle override cache for DesktopExperienceFlags
        val cachedToggleOverride2 =
            DesktopExperienceFlags::class.java.getDeclaredField("sCachedToggleOverride")
        cachedToggleOverride2.isAccessible = true
        cachedToggleOverride2.set(null, false)
        cachedToggleOverride.isAccessible = true
        cachedToggleOverride.set(null, null)
    }

    private fun setFlagOverride(override: DesktopModeFlags.ToggleOverride) {
        // Toggle override cache for DesktopModeFlags can be on/off/unset
        val cachedToggleOverride1 =
        val cachedToggleOverride =
            DesktopModeFlags::class.java.getDeclaredField("sCachedToggleOverride")
        cachedToggleOverride1.isAccessible = true
        cachedToggleOverride1.set(null, override)

        // Toggle override cache for DesktopExperienceFlags can be true or false
        val cachedToggleOverride2 =
            DesktopExperienceFlags::class.java.getDeclaredField("sCachedToggleOverride")
        cachedToggleOverride2.isAccessible = true
        cachedToggleOverride2.set(null, override == DesktopModeFlags.ToggleOverride.OVERRIDE_ON)
        cachedToggleOverride.isAccessible = true
        cachedToggleOverride.set(null, override)
    }

    private fun setDeviceEligibleForDesktopMode(eligible: Boolean) {
        doReturn(eligible).whenever(mockResources)
            .getBoolean(eq(R.bool.config_isDesktopModeSupported))
        val deviceRestrictions = DesktopModeStatus::class.java.getDeclaredField("ENFORCE_DEVICE_RESTRICTIONS")
        deviceRestrictions.isAccessible = true
        deviceRestrictions.setBoolean(/* obj= */ null, /* z= */ !eligible)
    }

    private fun setIsVeiledResizeEnabled(enabled: Boolean) {
Loading