diff --git a/res/xml/display_settings.xml b/res/xml/display_settings.xml index 3baf439035a..c7e29675757 100644 --- a/res/xml/display_settings.xml +++ b/res/xml/display_settings.xml @@ -34,7 +34,7 @@ settings:userRestriction="no_config_brightness"/> (settingsStore), KeyValueStore { + AbstractKeyedDataObservable(), KeyedObserver, KeyValueStore { - override fun contains(key: String) = settingsStore.contains(key) + override fun contains(key: String) = settingsStore.contains(SCREEN_BRIGHTNESS_MODE) override fun getDefaultValue(key: String, valueType: Class) = DEFAULT_VALUE.toBoolean() as T override fun getValue(key: String, valueType: Class) = - (settingsStore.getInt(key) ?: DEFAULT_VALUE).toBoolean() as T + (settingsStore.getInt(SCREEN_BRIGHTNESS_MODE) ?: DEFAULT_VALUE).toBoolean() as T override fun setValue(key: String, valueType: Class, value: T?) = - settingsStore.setInt(key, (value as? Boolean)?.toBrightnessMode()) + settingsStore.setInt(SCREEN_BRIGHTNESS_MODE, (value as? Boolean)?.toBrightnessMode()) + + override fun onFirstObserverAdded() { + // observe the underlying storage key + settingsStore.addObserver(SCREEN_BRIGHTNESS_MODE, this, HandlerExecutor.main) + } + + override fun onKeyChanged(key: String, reason: Int) { + // forward data change to preference hierarchy key + notifyChange(KEY, reason) + } + + override fun onLastObserverRemoved() { + settingsStore.removeObserver(SCREEN_BRIGHTNESS_MODE, this) + } /** Converts brightness mode integer to boolean. */ private fun Int.toBoolean() = this == SCREEN_BRIGHTNESS_MODE_AUTOMATIC @@ -128,7 +144,7 @@ class AutoBrightnessScreen : } companion object { - const val KEY = Settings.System.SCREEN_BRIGHTNESS_MODE + const val KEY = "auto_brightness_entry" private const val DEFAULT_VALUE = SCREEN_BRIGHTNESS_MODE_MANUAL } } diff --git a/tests/robotests/src/com/android/settings/display/AutoBrightnessScreenTest.kt b/tests/robotests/src/com/android/settings/display/AutoBrightnessScreenTest.kt index ab2d9bd29d9..5da5c2a8a37 100644 --- a/tests/robotests/src/com/android/settings/display/AutoBrightnessScreenTest.kt +++ b/tests/robotests/src/com/android/settings/display/AutoBrightnessScreenTest.kt @@ -128,7 +128,11 @@ class AutoBrightnessScreenTest { } private fun setScreenBrightnessMode(value: Int) = - Settings.System.putInt(context.contentResolver, AutoBrightnessScreen.KEY, value) + Settings.System.putInt( + context.contentResolver, + Settings.System.SCREEN_BRIGHTNESS_MODE, + value, + ) private fun getResId() = when {