diff --git a/packages/SystemUI/src/com/android/systemui/qs/SecureSetting.java b/packages/SystemUI/src/com/android/systemui/qs/SecureSetting.java index 994da9a174dfb..8aa2d09459e5d 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/SecureSetting.java +++ b/packages/SystemUI/src/com/android/systemui/qs/SecureSetting.java @@ -16,6 +16,7 @@ package com.android.systemui.qs; +import android.app.ActivityManager; import android.database.ContentObserver; import android.os.Handler; @@ -24,27 +25,36 @@ import com.android.systemui.util.settings.SecureSettings; /** Helper for managing a secure setting. **/ public abstract class SecureSetting extends ContentObserver implements Listenable { - private static final int DEFAULT = 0; - - private SecureSettings mSecureSettings; + private final SecureSettings mSecureSettings; private final String mSettingName; + private final int mDefaultValue; private boolean mListening; private int mUserId; - private int mObservedValue = DEFAULT; + private int mObservedValue; protected abstract void handleValueChanged(int value, boolean observedChange); public SecureSetting(SecureSettings secureSettings, Handler handler, String settingName, int userId) { + this(secureSettings, handler, settingName, userId, 0); + } + + public SecureSetting(SecureSettings secureSetting, Handler handler, String settingName) { + this(secureSetting, handler, settingName, ActivityManager.getCurrentUser()); + } + + public SecureSetting(SecureSettings secureSettings, Handler handler, String settingName, + int userId, int defaultValue) { super(handler); mSecureSettings = secureSettings; mSettingName = settingName; + mObservedValue = mDefaultValue = defaultValue; mUserId = userId; } public int getValue() { - return mSecureSettings.getIntForUser(mSettingName, DEFAULT, mUserId); + return mSecureSettings.getIntForUser(mSettingName, mDefaultValue, mUserId); } public void setValue(int value) { @@ -61,7 +71,7 @@ public abstract class SecureSetting extends ContentObserver implements Listenabl mSecureSettings.getUriFor(mSettingName), false, this, mUserId); } else { mSecureSettings.unregisterContentObserver(this); - mObservedValue = DEFAULT; + mObservedValue = mDefaultValue; } } diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/SecureSettingTest.kt b/packages/SystemUI/tests/src/com/android/systemui/qs/SecureSettingTest.kt index 418fa61f3b065..6af8402d8aff9 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/qs/SecureSettingTest.kt +++ b/packages/SystemUI/tests/src/com/android/systemui/qs/SecureSettingTest.kt @@ -41,6 +41,7 @@ class SecureSettingTest : SysuiTestCase() { private const val TEST_SETTING = "setting" private const val USER = 0 private const val OTHER_USER = 1 + private const val DEFAULT_VALUE = 1 private val FAIL_CALLBACK: Callback = { _, _ -> fail("Callback should not be called") } } @@ -59,7 +60,8 @@ class SecureSettingTest : SysuiTestCase() { secureSettings, Handler(testableLooper.looper), TEST_SETTING, - USER + USER, + DEFAULT_VALUE ) { override fun handleValueChanged(value: Int, observedChange: Boolean) { callback(value, observedChange) @@ -150,4 +152,14 @@ class SecureSettingTest : SysuiTestCase() { assertThat(changed).isTrue() } + + @Test + fun testDefaultValue() { + // Check default value before listening + assertThat(setting.value).isEqualTo(DEFAULT_VALUE) + + // Check default value if setting is not set + setting.isListening = true + assertThat(setting.value).isEqualTo(DEFAULT_VALUE) + } } \ No newline at end of file