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

Commit ffe7fcc7 authored by Fabian Kozynski's avatar Fabian Kozynski
Browse files

Migrate SecureSetting to use SecureSettings proxy

Improves testability

Test: atest SystemUITests
Change-Id: Ie4c23324b5f9fd138d475abe61c67e6164da5588
parent d323c8d4
Loading
Loading
Loading
Loading
+5 −1
Original line number Diff line number Diff line
@@ -89,6 +89,7 @@ import com.android.systemui.qs.SecureSetting;
import com.android.systemui.settings.UserTracker;
import com.android.systemui.tuner.TunerService;
import com.android.systemui.tuner.TunerService.Tunable;
import com.android.systemui.util.settings.SecureSettings;

import java.util.ArrayList;
import java.util.List;
@@ -120,6 +121,7 @@ public class ScreenDecorations extends SystemUI implements Tunable {
    private final BroadcastDispatcher mBroadcastDispatcher;
    private final Handler mMainHandler;
    private final TunerService mTunerService;
    private final SecureSettings mSecureSettings;
    private DisplayManager.DisplayListener mDisplayListener;
    private CameraAvailabilityListener mCameraListener;
    private final UserTracker mUserTracker;
@@ -199,11 +201,13 @@ public class ScreenDecorations extends SystemUI implements Tunable {
    @Inject
    public ScreenDecorations(Context context,
            @Main Handler handler,
            SecureSettings secureSettings,
            BroadcastDispatcher broadcastDispatcher,
            TunerService tunerService,
            UserTracker userTracker) {
        super(context);
        mMainHandler = handler;
        mSecureSettings = secureSettings;
        mBroadcastDispatcher = broadcastDispatcher;
        mTunerService = tunerService;
        mUserTracker = userTracker;
@@ -309,7 +313,7 @@ public class ScreenDecorations extends SystemUI implements Tunable {

            // Watch color inversion and invert the overlay as needed.
            if (mColorInversionSetting == null) {
                mColorInversionSetting = new SecureSetting(mContext, mHandler,
                mColorInversionSetting = new SecureSetting(mSecureSettings, mHandler,
                        Secure.ACCESSIBILITY_DISPLAY_INVERSION_ENABLED,
                        mUserTracker.getUserId()) {
                    @Override
+10 −10
Original line number Diff line number Diff line
@@ -16,18 +16,17 @@

package com.android.systemui.qs;

import android.content.Context;
import android.database.ContentObserver;
import android.os.Handler;
import android.provider.Settings.Secure;

import com.android.systemui.statusbar.policy.Listenable;
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 final Context mContext;
    private SecureSettings mSecureSettings;
    private final String mSettingName;

    private boolean mListening;
@@ -36,19 +35,20 @@ public abstract class SecureSetting extends ContentObserver implements Listenabl

    protected abstract void handleValueChanged(int value, boolean observedChange);

    public SecureSetting(Context context, Handler handler, String settingName, int userId) {
    public SecureSetting(SecureSettings secureSettings, Handler handler, String settingName,
            int userId) {
        super(handler);
        mContext = context;
        mSecureSettings = secureSettings;
        mSettingName = settingName;
        mUserId = userId;
    }

    public int getValue() {
        return Secure.getIntForUser(mContext.getContentResolver(), mSettingName, DEFAULT, mUserId);
        return mSecureSettings.getIntForUser(mSettingName, DEFAULT, mUserId);
    }

    public void setValue(int value) {
        Secure.putIntForUser(mContext.getContentResolver(), mSettingName, value, mUserId);
        mSecureSettings.putIntForUser(mSettingName, value, mUserId);
    }

    @Override
@@ -57,10 +57,10 @@ public abstract class SecureSetting extends ContentObserver implements Listenabl
        mListening = listening;
        if (listening) {
            mObservedValue = getValue();
            mContext.getContentResolver().registerContentObserver(
                    Secure.getUriFor(mSettingName), false, this, mUserId);
            mSecureSettings.registerContentObserverForUser(
                    mSecureSettings.getUriFor(mSettingName), false, this, mUserId);
        } else {
            mContext.getContentResolver().unregisterContentObserver(this);
            mSecureSettings.unregisterContentObserver(this);
            mObservedValue = DEFAULT;
        }
    }
+14 −3
Original line number Diff line number Diff line
@@ -30,6 +30,7 @@ import com.android.systemui.statusbar.phone.ManagedProfileController;
import com.android.systemui.statusbar.policy.CastController;
import com.android.systemui.statusbar.policy.DataSaverController;
import com.android.systemui.statusbar.policy.HotspotController;
import com.android.systemui.util.settings.SecureSettings;

import dagger.Binds;
import dagger.Module;
@@ -48,14 +49,24 @@ public interface QSModule {
            AutoAddTracker.Builder autoAddTrackerBuilder,
            QSTileHost host,
            @Background Handler handler,
            SecureSettings secureSettings,
            HotspotController hotspotController,
            DataSaverController dataSaverController,
            ManagedProfileController managedProfileController,
            NightDisplayListener nightDisplayListener,
            CastController castController) {
        AutoTileManager manager = new AutoTileManager(context, autoAddTrackerBuilder,
                host, handler, hotspotController, dataSaverController, managedProfileController,
                nightDisplayListener, castController);
        AutoTileManager manager = new AutoTileManager(
                context,
                autoAddTrackerBuilder,
                host,
                handler,
                secureSettings,
                hotspotController,
                dataSaverController,
                managedProfileController,
                nightDisplayListener,
                castController
        );
        manager.init();
        return manager;
    }
+9 −3
Original line number Diff line number Diff line
@@ -36,6 +36,7 @@ import com.android.systemui.qs.SecureSetting;
import com.android.systemui.qs.logging.QSLogger;
import com.android.systemui.qs.tileimpl.QSTileImpl;
import com.android.systemui.statusbar.policy.BatteryController;
import com.android.systemui.util.settings.SecureSettings;

import javax.inject.Inject;

@@ -62,15 +63,20 @@ public class BatterySaverTile extends QSTileImpl<BooleanState> implements
            StatusBarStateController statusBarStateController,
            ActivityStarter activityStarter,
            QSLogger qsLogger,
            BatteryController batteryController
            BatteryController batteryController,
            SecureSettings secureSettings
    ) {
        super(host, backgroundLooper, mainHandler, metricsLogger, statusBarStateController,
                activityStarter, qsLogger);
        mBatteryController = batteryController;
        mBatteryController.observe(getLifecycle(), this);
        int currentUser = host.getUserContext().getUserId();
        mSetting = new SecureSetting(mContext, mHandler, Secure.LOW_POWER_WARNING_ACKNOWLEDGED,
                currentUser) {
        mSetting = new SecureSetting(
                secureSettings,
                mHandler,
                Secure.LOW_POWER_WARNING_ACKNOWLEDGED,
                currentUser
        ) {
            @Override
            protected void handleValueChanged(int value, boolean observedChange) {
                // mHandler is the background handler so calling this is OK
+4 −2
Original line number Diff line number Diff line
@@ -39,6 +39,7 @@ import com.android.systemui.qs.SecureSetting;
import com.android.systemui.qs.logging.QSLogger;
import com.android.systemui.qs.tileimpl.QSTileImpl;
import com.android.systemui.settings.UserTracker;
import com.android.systemui.util.settings.SecureSettings;

import javax.inject.Inject;

@@ -63,12 +64,13 @@ public class ColorInversionTile extends QSTileImpl<BooleanState> {
            StatusBarStateController statusBarStateController,
            ActivityStarter activityStarter,
            QSLogger qsLogger,
            UserTracker userTracker
            UserTracker userTracker,
            SecureSettings secureSettings
    ) {
        super(host, backgroundLooper, mainHandler, metricsLogger, statusBarStateController,
                activityStarter, qsLogger);

        mSetting = new SecureSetting(mContext, mainHandler,
        mSetting = new SecureSetting(secureSettings, mainHandler,
                Secure.ACCESSIBILITY_DISPLAY_INVERSION_ENABLED, userTracker.getUserId()) {
            @Override
            protected void handleValueChanged(int value, boolean observedChange) {
Loading