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

Commit a4bd41df authored by Alina Zaidi's avatar Alina Zaidi
Browse files

[Dev option] Use DesktopModeStatus and ToggleOverride from wm/shell in...

[Dev option] Use DesktopModeStatus and ToggleOverride from wm/shell in Settings DesktopModePreferenceController

Test: Added tests
Bug: 348193756
Flag: com.android.window.flags.show_desktop_windowing_dev_option
Change-Id: I555f6152d3f7c4f6902611c4f5b54e2c4b3006bb
parent b283f3d3
Loading
Loading
Loading
Loading
+9 −0
Original line number Original line Diff line number Diff line
@@ -190,6 +190,15 @@ java_library {
    ],
    ],
}
}


java_library {
    name: "WindowManager-Shell-shared-desktopMode",

    srcs: [
        "shared/**/desktopmode/*.java",
        "shared/**/desktopmode/*.kt",
    ],
}

android_library {
android_library {
    name: "WindowManager-Shell",
    name: "WindowManager-Shell",
    srcs: [
    srcs: [
+18 −16
Original line number Original line Diff line number Diff line
@@ -84,11 +84,12 @@ enum class DesktopModeFlags(
          // Read Setting Global if System Property is not present (just after reboot)
          // Read Setting Global if System Property is not present (just after reboot)
          // or not valid (user manually changed the value)
          // or not valid (user manually changed the value)
          val overrideFromSettingsGlobal =
          val overrideFromSettingsGlobal =
              convertToToggleOverrideWithFallback(
                  Settings.Global.getInt(
                  Settings.Global.getInt(
                      context.contentResolver,
                      context.contentResolver,
                      Settings.Global.DEVELOPMENT_OVERRIDE_DESKTOP_MODE_FEATURES,
                      Settings.Global.DEVELOPMENT_OVERRIDE_DESKTOP_MODE_FEATURES,
                      ToggleOverride.OVERRIDE_UNSET.setting)
                      ToggleOverride.OVERRIDE_UNSET.setting),
                  .convertToToggleOverrideWithFallback(ToggleOverride.OVERRIDE_UNSET)
                  ToggleOverride.OVERRIDE_UNSET)
          // Initialize System Property
          // Initialize System Property
          System.setProperty(
          System.setProperty(
              SYSTEM_PROPERTY_OVERRIDE_KEY, overrideFromSettingsGlobal.setting.toString())
              SYSTEM_PROPERTY_OVERRIDE_KEY, overrideFromSettingsGlobal.setting.toString())
@@ -97,7 +98,6 @@ enum class DesktopModeFlags(
        }
        }
  }
  }


  // TODO(b/348193756): Share ToggleOverride enum with Settings 'DesktopModePreferenceController'
  /**
  /**
   * Override state of desktop mode developer option toggle.
   * Override state of desktop mode developer option toggle.
   *
   *
@@ -113,8 +113,6 @@ enum class DesktopModeFlags(
    OVERRIDE_ON(1)
    OVERRIDE_ON(1)
  }
  }


  private val settingToToggleOverrideMap = ToggleOverride.entries.associateBy { it.setting }

  private fun String?.convertToToggleOverride(): ToggleOverride? {
  private fun String?.convertToToggleOverride(): ToggleOverride? {
    val intValue = this?.toIntOrNull() ?: return null
    val intValue = this?.toIntOrNull() ?: return null
    return settingToToggleOverrideMap[intValue]
    return settingToToggleOverrideMap[intValue]
@@ -124,16 +122,6 @@ enum class DesktopModeFlags(
        }
        }
  }
  }


  private fun Int.convertToToggleOverrideWithFallback(
      fallbackOverride: ToggleOverride
  ): ToggleOverride {
    return settingToToggleOverrideMap[this]
        ?: run {
          Log.w(TAG, "Unknown toggleOverride int $this")
          fallbackOverride
        }
  }

  companion object {
  companion object {
    private const val TAG = "DesktopModeFlags"
    private const val TAG = "DesktopModeFlags"


@@ -148,5 +136,19 @@ enum class DesktopModeFlags(
     * be refreshed only on reboots as overridden state takes effect on reboots.
     * be refreshed only on reboots as overridden state takes effect on reboots.
     */
     */
    private var cachedToggleOverride: ToggleOverride? = null
    private var cachedToggleOverride: ToggleOverride? = null

    private val settingToToggleOverrideMap = ToggleOverride.entries.associateBy { it.setting }

    @JvmStatic
    fun convertToToggleOverrideWithFallback(
        overrideInt: Int,
        fallbackOverride: ToggleOverride
    ): ToggleOverride {
      return settingToToggleOverrideMap[overrideInt]
          ?: run {
            Log.w(TAG, "Unknown toggleOverride int $overrideInt")
            fallbackOverride
          }
    }
  }
  }
}
}
+29 −15
Original line number Original line Diff line number Diff line
@@ -26,6 +26,7 @@ import com.android.window.flags.Flags.FLAG_ENABLE_DESKTOP_WINDOWING_MODE
import com.android.window.flags.Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY
import com.android.window.flags.Flags.FLAG_ENABLE_DESKTOP_WINDOWING_WALLPAPER_ACTIVITY
import com.android.window.flags.Flags.FLAG_SHOW_DESKTOP_WINDOWING_DEV_OPTION
import com.android.window.flags.Flags.FLAG_SHOW_DESKTOP_WINDOWING_DEV_OPTION
import com.android.wm.shell.ShellTestCase
import com.android.wm.shell.ShellTestCase
import com.android.wm.shell.shared.desktopmode.DesktopModeFlags.Companion.convertToToggleOverrideWithFallback
import com.android.wm.shell.shared.desktopmode.DesktopModeFlags.DESKTOP_WINDOWING_MODE
import com.android.wm.shell.shared.desktopmode.DesktopModeFlags.DESKTOP_WINDOWING_MODE
import com.android.wm.shell.shared.desktopmode.DesktopModeFlags.ToggleOverride.OVERRIDE_OFF
import com.android.wm.shell.shared.desktopmode.DesktopModeFlags.ToggleOverride.OVERRIDE_OFF
import com.android.wm.shell.shared.desktopmode.DesktopModeFlags.ToggleOverride.OVERRIDE_ON
import com.android.wm.shell.shared.desktopmode.DesktopModeFlags.ToggleOverride.OVERRIDE_ON
@@ -416,6 +417,19 @@ class DesktopModeFlagsTest : ShellTestCase() {
    assertThat(WALLPAPER_ACTIVITY.isEnabled(mContext)).isFalse()
    assertThat(WALLPAPER_ACTIVITY.isEnabled(mContext)).isFalse()
  }
  }


  @Test
  fun convertToToggleOverrideWithFallback_validInt_returnsToggleOverride() {
    assertThat(convertToToggleOverrideWithFallback(0, OVERRIDE_UNSET)).isEqualTo(OVERRIDE_OFF)
    assertThat(convertToToggleOverrideWithFallback(1, OVERRIDE_UNSET)).isEqualTo(OVERRIDE_ON)
    assertThat(convertToToggleOverrideWithFallback(-1, OVERRIDE_ON)).isEqualTo(OVERRIDE_UNSET)
  }

  @Test
  fun convertToToggleOverrideWithFallback_invalidInt_returnsFallback() {
    assertThat(convertToToggleOverrideWithFallback(2, OVERRIDE_ON)).isEqualTo(OVERRIDE_ON)
    assertThat(convertToToggleOverrideWithFallback(-2, OVERRIDE_UNSET)).isEqualTo(OVERRIDE_UNSET)
  }

  private fun setOverride(setting: Int?) {
  private fun setOverride(setting: Int?) {
    val contentResolver = mContext.contentResolver
    val contentResolver = mContext.contentResolver
    val key = Settings.Global.DEVELOPMENT_OVERRIDE_DESKTOP_MODE_FEATURES
    val key = Settings.Global.DEVELOPMENT_OVERRIDE_DESKTOP_MODE_FEATURES