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

Commit d05df4a6 authored by Lucas Dupin's avatar Lucas Dupin Committed by Automerger Merge Worker
Browse files

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

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/13957765

Change-Id: Ib9423eafc69294ee9f4bb0920dd5dc29b4312ecb
parents 53cd2022 ced0e5a1
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