SystemUI: SecureSetting: Allow specifying a non-zero default

* Some Setting while empty should be assumed to be
  non-zero by default ( ex AmbientDisplay )

Test: m, atest SystemUITests:SecureSettingTest
Fixes: 183498544
Change-Id: I44e1c4296be4e1a1f549d52d4dc0f5b2b7cef855
This commit is contained in:
Luca Stefani
2021-03-18 10:48:07 +01:00
committed by Lucas Dupin
parent 406c9fb61c
commit 3eaf8ee6a4
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)
}
}