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;
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;
}
}

View File

@@ -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)
}
}