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

Commit 213d0fc0 authored by Toshiki Kikuchi's avatar Toshiki Kikuchi
Browse files

Add debug option to force desktop-first

This CL adds a system property to force a desktop-first mode on the
default display regardless of the proper decision factors.

Flag: com.android.window.flags.enable_display_windowing_mode_switching
Bug: 407869787
Test: adb shell setprop persist.wm.debug.force_desktop_first_on_default_display_for_testing 1
Change-Id: I9d1bfe3b6d6bf86d9a1653af0f93bf162908b582
parent f5d7074e
Loading
Loading
Loading
Loading
+22 −0
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@ import android.app.WindowConfiguration.windowingModeToString
import android.content.Context
import android.hardware.input.InputManager
import android.os.Handler
import android.os.SystemProperties
import android.provider.Settings
import android.provider.Settings.Global.DEVELOPMENT_FORCE_DESKTOP_MODE_ON_EXTERNAL_DISPLAYS
import android.util.IndentingPrintWriter
@@ -62,6 +63,16 @@ class DesktopDisplayModeController(
    @ShellMainThread private val mainHandler: Handler,
) {

    /**
     * Debug flag to indicate whether to force default display to be in desktop-first mode
     * regardless of required factors.
     */
    private val FORCE_DESKTOP_FIRST_ON_DEFAULT_DISPLAY =
        SystemProperties.getBoolean(
            "persist.wm.debug.force_desktop_first_on_default_display_for_testing",
            false,
        )

    private val inputDeviceListener =
        object : InputManager.InputDeviceListener {
            override fun onInputDeviceAdded(deviceId: Int) {
@@ -156,6 +167,14 @@ class DesktopDisplayModeController(
    // Do not directly use this method to check the state of desktop-first mode. Check the display
    // windowing mode instead.
    private fun canDesktopFirstModeBeEnabledOnDefaultDisplay(): Boolean {
        if (FORCE_DESKTOP_FIRST_ON_DEFAULT_DISPLAY) {
            logW(
                "FORCE_DESKTOP_FIRST_ON_DEFAULT_DISPLAY is enabled. Forcing desktop-first for " +
                    " testing purposes."
            )
            return true
        }

        val isDefaultDisplayDesktopEligible = isDefaultDisplayDesktopEligible()
        logV(
            "canDesktopFirstModeBeEnabledOnDefaultDisplay: isDefaultDisplayDesktopEligible=%s",
@@ -276,6 +295,9 @@ class DesktopDisplayModeController(
        pw.println("isDefaultDisplayDesktopEligible=" + isDefaultDisplayDesktopEligible())
        pw.println("isExtendedDisplayEnabled=" + isExtendedDisplayEnabled())
        pw.println("hasExternalDisplay=" + hasExternalDisplay())
        pw.println(
            "FORCE_DESKTOP_FIRST_ON_DEFAULT_DISPLAY=" + FORCE_DESKTOP_FIRST_ON_DEFAULT_DISPLAY
        )
        if (DesktopExperienceFlags.FORM_FACTOR_BASED_DESKTOP_FIRST_SWITCH.isTrue) {
            pw.println("hasAnyTouchpadDevice=" + hasAnyTouchpadDevice())
            pw.println("hasAnyPhysicalKeyboardDevice=" + hasAnyPhysicalKeyboardDevice())