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

Commit ced0e5a1 authored by Lucas Dupin's avatar Lucas Dupin Committed by Android (Google) Code Review
Browse files

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

parents e2d38c5a 3eaf8ee6
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