[Dev option] Use static cache for overrides.
This initializes cache only once for enum class, instead of once for every enum.
Test: atest DesktopModeFlags
Bug: 348193756
Flag: com.android.window.flags.show_desktop_windowing_dev_option
Change-Id: I4f28529308f8998d10426be14790ddd72af60102
diff --git a/libs/WindowManager/Shell/shared/src/com/android/wm/shell/shared/desktopmode/DesktopModeFlags.kt b/libs/WindowManager/Shell/shared/src/com/android/wm/shell/shared/desktopmode/DesktopModeFlags.kt
index 5983168..8c2cfd1e 100644
--- a/libs/WindowManager/Shell/shared/src/com/android/wm/shell/shared/desktopmode/DesktopModeFlags.kt
+++ b/libs/WindowManager/Shell/shared/src/com/android/wm/shell/shared/desktopmode/DesktopModeFlags.kt
@@ -37,10 +37,6 @@
DESKTOP_WINDOWING_MODE(Flags::enableDesktopWindowingMode, true),
WALLPAPER_ACTIVITY(Flags::enableDesktopWindowingWallpaperActivity, true);
- // Local cache for toggle override, which is initialized once on its first access. It needs to be
- // refreshed only on reboots as overridden state takes effect on reboots.
- private var cachedToggleOverride: ToggleOverride? = null
-
/**
* Determines state of flag based on the actual flag and desktop mode developer option overrides.
*
@@ -138,13 +134,19 @@
}
}
- private companion object {
- const val TAG = "DesktopModeFlags"
+ companion object {
+ private const val TAG = "DesktopModeFlags"
/**
* Key for non-persistent System Property which is used to store desktop windowing developer
* option overrides.
*/
- const val SYSTEM_PROPERTY_OVERRIDE_KEY = "sys.wmshell.desktopmode.dev_toggle_override"
+ private const val SYSTEM_PROPERTY_OVERRIDE_KEY = "sys.wmshell.desktopmode.dev_toggle_override"
+
+ /**
+ * Local cache for toggle override, which is initialized once on its first access. It needs to
+ * be refreshed only on reboots as overridden state takes effect on reboots.
+ */
+ private var cachedToggleOverride: ToggleOverride? = null
}
}
diff --git a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/shared/desktopmode/DesktopModeFlagsTest.kt b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/shared/desktopmode/DesktopModeFlagsTest.kt
index 4661042..00f37da 100644
--- a/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/shared/desktopmode/DesktopModeFlagsTest.kt
+++ b/libs/WindowManager/Shell/tests/unittest/src/com/android/wm/shell/shared/desktopmode/DesktopModeFlagsTest.kt
@@ -427,15 +427,10 @@
}
private fun resetCache() {
- val cachedToggleOverrideDesktopMode =
- DESKTOP_WINDOWING_MODE::class.java.getDeclaredField("cachedToggleOverride")
- cachedToggleOverrideDesktopMode.isAccessible = true
- cachedToggleOverrideDesktopMode.set(DESKTOP_WINDOWING_MODE, null)
-
- val cachedToggleOverrideWallpaperActivity =
- WALLPAPER_ACTIVITY::class.java.getDeclaredField("cachedToggleOverride")
- cachedToggleOverrideWallpaperActivity.isAccessible = true
- cachedToggleOverrideWallpaperActivity.set(WALLPAPER_ACTIVITY, null)
+ val cachedToggleOverride =
+ DesktopModeFlags::class.java.getDeclaredField("cachedToggleOverride")
+ cachedToggleOverride.isAccessible = true
+ cachedToggleOverride.set(null, null)
// Clear override cache stored in System property
System.clearProperty(SYSTEM_PROPERTY_OVERRIDE_KEY)