Merge "SystemUI: SecureSetting: Allow specifying a non-zero default" into sc-dev

This commit is contained in:
Lucas Dupin
2021-03-23 19:52:27 +00:00
committed by Android (Google) Code Review
2 changed files with 29 additions and 7 deletions

View File

@@ -16,6 +16,7 @@
package com.android.systemui.qs; package com.android.systemui.qs;
import android.app.ActivityManager;
import android.database.ContentObserver; import android.database.ContentObserver;
import android.os.Handler; import android.os.Handler;
@@ -24,27 +25,36 @@ import com.android.systemui.util.settings.SecureSettings;
/** Helper for managing a secure setting. **/ /** Helper for managing a secure setting. **/
public abstract class SecureSetting extends ContentObserver implements Listenable { public abstract class SecureSetting extends ContentObserver implements Listenable {
private static final int DEFAULT = 0; private final SecureSettings mSecureSettings;
private SecureSettings mSecureSettings;
private final String mSettingName; private final String mSettingName;
private final int mDefaultValue;
private boolean mListening; private boolean mListening;
private int mUserId; private int mUserId;
private int mObservedValue = DEFAULT; private int mObservedValue;
protected abstract void handleValueChanged(int value, boolean observedChange); protected abstract void handleValueChanged(int value, boolean observedChange);
public SecureSetting(SecureSettings secureSettings, Handler handler, String settingName, public SecureSetting(SecureSettings secureSettings, Handler handler, String settingName,
int userId) { 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); super(handler);
mSecureSettings = secureSettings; mSecureSettings = secureSettings;
mSettingName = settingName; mSettingName = settingName;
mObservedValue = mDefaultValue = defaultValue;
mUserId = userId; mUserId = userId;
} }
public int getValue() { public int getValue() {
return mSecureSettings.getIntForUser(mSettingName, DEFAULT, mUserId); return mSecureSettings.getIntForUser(mSettingName, mDefaultValue, mUserId);
} }
public void setValue(int value) { public void setValue(int value) {
@@ -61,7 +71,7 @@ public abstract class SecureSetting extends ContentObserver implements Listenabl
mSecureSettings.getUriFor(mSettingName), false, this, mUserId); mSecureSettings.getUriFor(mSettingName), false, this, mUserId);
} else { } else {
mSecureSettings.unregisterContentObserver(this); mSecureSettings.unregisterContentObserver(this);
mObservedValue = DEFAULT; mObservedValue = mDefaultValue;
} }
} }

View File

@@ -41,6 +41,7 @@ class SecureSettingTest : SysuiTestCase() {
private const val TEST_SETTING = "setting" private const val TEST_SETTING = "setting"
private const val USER = 0 private const val USER = 0
private const val OTHER_USER = 1 private const val OTHER_USER = 1
private const val DEFAULT_VALUE = 1
private val FAIL_CALLBACK: Callback = { _, _ -> fail("Callback should not be called") } private val FAIL_CALLBACK: Callback = { _, _ -> fail("Callback should not be called") }
} }
@@ -59,7 +60,8 @@ class SecureSettingTest : SysuiTestCase() {
secureSettings, secureSettings,
Handler(testableLooper.looper), Handler(testableLooper.looper),
TEST_SETTING, TEST_SETTING,
USER USER,
DEFAULT_VALUE
) { ) {
override fun handleValueChanged(value: Int, observedChange: Boolean) { override fun handleValueChanged(value: Int, observedChange: Boolean) {
callback(value, observedChange) callback(value, observedChange)
@@ -150,4 +152,14 @@ class SecureSettingTest : SysuiTestCase() {
assertThat(changed).isTrue() 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)
}
} }