Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3eaf8ee6 authored by Luca Stefani's avatar Luca Stefani Committed by Lucas Dupin
Browse files

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
parent 406c9fb6
Loading
Loading
Loading
Loading
+16 −6
Original line number Diff line number Diff line
@@ -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;
        }
    }

+13 −1
Original line number Diff line number Diff line
@@ -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