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

Commit 17130a37 authored by Eghosa Ewansiha-Vlachavas's avatar Eghosa Ewansiha-Vlachavas
Browse files

[1/n] Replace read-only desktop windowing flag with runtime flag

Replace use of `enable_desktop_windowing` flag with
`enable_desktop_windowing_mode` flag.

Bug: 304778354
Fixes: 326060018
Test: build & `adb shell device_config put lse_desktop_experience
com.android.window.flags.enable_desktop_windowing_mode true && adb
reboot` desktop windowing mode should be enabled.

Change-Id: I45c1ad6dc3b476af83725ec6c53e9b83199ec1bb
parent b81ff578
Loading
Loading
Loading
Loading
+0 −8
Original line number Diff line number Diff line
@@ -7,14 +7,6 @@ flag {
    bug: "274835596"
}

flag {
    name: "enable_desktop_windowing"
    namespace: "multitasking"
    description: "Enables desktop windowing"
    bug: "304778354"
    is_fixed_read_only: true
}

flag {
    name: "enable_split_contextual"
    namespace: "multitasking"
+2 −4
Original line number Diff line number Diff line
@@ -18,15 +18,13 @@ package com.android.wm.shell.desktopmode;

import android.os.SystemProperties;

import com.android.wm.shell.Flags;
import com.android.window.flags.Flags;

/**
 * Constants for desktop mode feature
 */
public class DesktopModeStatus {

    private static final boolean ENABLE_DESKTOP_WINDOWING = Flags.enableDesktopWindowing();

    /**
     * Flag to indicate whether desktop mode proto is available on the device
     */
@@ -79,7 +77,7 @@ public class DesktopModeStatus {
     */
    public static boolean isEnabled() {
        // Check for aconfig flag first
        if (ENABLE_DESKTOP_WINDOWING) {
        if (Flags.enableDesktopWindowingMode()) {
            return true;
        }
        // Fall back to sysprop flag
+10 −7
Original line number Diff line number Diff line
@@ -27,7 +27,7 @@ import android.os.SystemProperties;
import android.util.Slog;

import com.android.server.wm.LaunchParamsController.LaunchParamsModifier;
import com.android.wm.shell.Flags;
import com.android.window.flags.Flags;
/**
 * The class that defines default launch params for tasks in desktop mode
 */
@@ -37,8 +37,6 @@ public class DesktopModeLaunchParamsModifier implements LaunchParamsModifier {
            TAG_WITH_CLASS_NAME ? "DesktopModeLaunchParamsModifier" : TAG_ATM;
    private static final boolean DEBUG = false;

    // Desktop mode feature flags.
    private static final boolean ENABLE_DESKTOP_WINDOWING = Flags.enableDesktopWindowing();
    private static final boolean DESKTOP_MODE_PROTO2_SUPPORTED =
            SystemProperties.getBoolean("persist.wm.debug.desktop_mode_2", false);
    public static final float DESKTOP_MODE_INITIAL_BOUNDS_SCALE =
@@ -67,6 +65,11 @@ public class DesktopModeLaunchParamsModifier implements LaunchParamsModifier {
            LaunchParamsController.LaunchParams currentParams,
            LaunchParamsController.LaunchParams outParams) {

        if (!isDesktopModeEnabled()) {
            appendLog("desktop mode is not enabled, continuing");
            return RESULT_CONTINUE;
        }

        if (task == null) {
            appendLog("task null, skipping");
            return RESULT_SKIP;
@@ -87,7 +90,7 @@ public class DesktopModeLaunchParamsModifier implements LaunchParamsModifier {
        // previous windowing mode to be restored even if the desktop mode state has changed.
        // Let task launches inherit the windowing mode from the source task if available, which
        // should have the desired windowing mode set by WM Shell. See b/286929122.
        if (isDesktopModeSupported() && source != null && source.getTask() != null) {
        if (isDesktopModeEnabled() && source != null && source.getTask() != null) {
            final Task sourceTask = source.getTask();
            outParams.mWindowingMode = sourceTask.getWindowingMode();
            appendLog("inherit-from-source=" + outParams.mWindowingMode);
@@ -140,10 +143,10 @@ public class DesktopModeLaunchParamsModifier implements LaunchParamsModifier {
        if (DEBUG) Slog.d(TAG, mLogBuilder.toString());
    }

    /** Whether desktop mode is supported. */
    static boolean isDesktopModeSupported() {
    /** Whether desktop mode is enabled. */
    static boolean isDesktopModeEnabled() {
        // Check for aconfig flag first
        if (ENABLE_DESKTOP_WINDOWING) {
        if (Flags.enableDesktopWindowingMode()) {
            return true;
        }
        // Fall back to sysprop flag
+1 −4
Original line number Diff line number Diff line
@@ -64,11 +64,8 @@ class LaunchParamsController {
    void registerDefaultModifiers(ActivityTaskSupervisor supervisor) {
        // {@link TaskLaunchParamsModifier} handles window layout preferences.
        registerModifier(new TaskLaunchParamsModifier(supervisor));
        if (DesktopModeLaunchParamsModifier.isDesktopModeSupported()) {
            // {@link DesktopModeLaunchParamsModifier} handles default task size changes
        registerModifier(new DesktopModeLaunchParamsModifier());
    }
    }

    /**
     * Returns the {@link LaunchParams} calculated by the registered modifiers
+10 −0
Original line number Diff line number Diff line
@@ -31,11 +31,13 @@ import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.mock;

import android.graphics.Rect;
import android.platform.test.annotations.EnableFlags;
import android.platform.test.annotations.Presubmit;

import androidx.test.filters.SmallTest;

import com.android.server.wm.LaunchParamsController.LaunchParamsModifier.Result;
import com.android.window.flags.Flags;

import org.junit.Before;
import org.junit.Test;
@@ -70,11 +72,13 @@ public class DesktopModeLaunchParamsModifierTests extends WindowTestsBase {
    }

    @Test
    @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODE)
    public void testReturnsSkipIfTaskIsNull() {
        assertEquals(RESULT_SKIP, new CalculateRequestBuilder().setTask(null).calculate());
    }

    @Test
    @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODE)
    public void testReturnsSkipIfNotBoundsPhase() {
        final Task task = new TaskBuilder(mSupervisor).build();
        assertEquals(RESULT_SKIP, new CalculateRequestBuilder().setTask(task).setPhase(
@@ -82,6 +86,7 @@ public class DesktopModeLaunchParamsModifierTests extends WindowTestsBase {
    }

    @Test
    @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODE)
    public void testReturnsSkipIfTaskNotUsingActivityTypeStandardOrUndefined() {
        final Task task = new TaskBuilder(mSupervisor).setActivityType(
                ACTIVITY_TYPE_ASSISTANT).build();
@@ -89,6 +94,7 @@ public class DesktopModeLaunchParamsModifierTests extends WindowTestsBase {
    }

    @Test
    @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODE)
    public void testReturnsDoneIfTaskUsingActivityTypeStandard() {
        final Task task = new TaskBuilder(mSupervisor).setActivityType(
                ACTIVITY_TYPE_STANDARD).build();
@@ -96,6 +102,7 @@ public class DesktopModeLaunchParamsModifierTests extends WindowTestsBase {
    }

    @Test
    @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODE)
    public void testReturnsDoneIfTaskUsingActivityTypeUndefined() {
        final Task task = new TaskBuilder(mSupervisor).setActivityType(
                ACTIVITY_TYPE_UNDEFINED).build();
@@ -103,6 +110,7 @@ public class DesktopModeLaunchParamsModifierTests extends WindowTestsBase {
    }

    @Test
    @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODE)
    public void testReturnsSkipIfCurrentParamsHasBounds() {
        final Task task = new TaskBuilder(mSupervisor).setActivityType(
                ACTIVITY_TYPE_STANDARD).build();
@@ -111,6 +119,7 @@ public class DesktopModeLaunchParamsModifierTests extends WindowTestsBase {
    }

    @Test
    @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODE)
    public void testUsesDefaultBounds() {
        final Task task = new TaskBuilder(mSupervisor).setActivityType(
                ACTIVITY_TYPE_STANDARD).build();
@@ -125,6 +134,7 @@ public class DesktopModeLaunchParamsModifierTests extends WindowTestsBase {
    }

    @Test
    @EnableFlags(Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODE)
    public void testUsesDisplayAreaAndWindowingModeFromSource() {
        final Task task = new TaskBuilder(mSupervisor).setActivityType(
                ACTIVITY_TYPE_STANDARD).build();