diff --git a/packages/SystemUI/src/com/android/systemui/qs/GlobalSetting.java b/packages/SystemUI/src/com/android/systemui/qs/GlobalSetting.java deleted file mode 100644 index c169df005f563..0000000000000 --- a/packages/SystemUI/src/com/android/systemui/qs/GlobalSetting.java +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Copyright (C) 2014 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package com.android.systemui.qs; - -import android.content.Context; -import android.database.ContentObserver; -import android.os.Handler; -import android.provider.Settings.Global; - -import com.android.systemui.statusbar.policy.Listenable; - -/** Helper for managing a global setting. **/ -public abstract class GlobalSetting extends ContentObserver implements Listenable { - private final Context mContext; - private final String mSettingName; - - protected abstract void handleValueChanged(int value); - - public GlobalSetting(Context context, Handler handler, String settingName) { - super(handler); - mContext = context; - mSettingName = settingName; - } - - public int getValue() { - return Global.getInt(mContext.getContentResolver(), mSettingName, 0); - } - - public void setValue(int value) { - Global.putInt(mContext.getContentResolver(), mSettingName, value); - } - - @Override - public void setListening(boolean listening) { - if (listening) { - mContext.getContentResolver().registerContentObserver( - Global.getUriFor(mSettingName), false, this); - } else { - mContext.getContentResolver().unregisterContentObserver(this); - } - } - - @Override - public void onChange(boolean selfChange) { - handleValueChanged(getValue()); - } -} diff --git a/packages/SystemUI/src/com/android/systemui/qs/SettingObserver.java b/packages/SystemUI/src/com/android/systemui/qs/SettingObserver.java index 9a184d52134eb..6b0abd41dfff2 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/SettingObserver.java +++ b/packages/SystemUI/src/com/android/systemui/qs/SettingObserver.java @@ -21,11 +21,18 @@ import android.database.ContentObserver; import android.os.Handler; import com.android.systemui.statusbar.policy.Listenable; +import com.android.systemui.util.settings.GlobalSettings; import com.android.systemui.util.settings.SecureSettings; +import com.android.systemui.util.settings.SettingsProxy; +import com.android.systemui.util.settings.SystemSettings; -/** Helper for managing a secure setting. **/ +/** + * Helper for managing secure, global, and system settings through use of {@link SettingsProxy}, + * which is the common superclass of {@link SecureSettings}, {@link GlobalSettings}, and + * {@link SystemSettings}. + */ public abstract class SettingObserver extends ContentObserver implements Listenable { - private final SecureSettings mSecureSettings; + private final SettingsProxy mSettingsProxy; private final String mSettingName; private final int mDefaultValue; @@ -35,19 +42,19 @@ public abstract class SettingObserver extends ContentObserver implements Listena protected abstract void handleValueChanged(int value, boolean observedChange); - public SettingObserver(SecureSettings secureSettings, Handler handler, String settingName, + public SettingObserver(SettingsProxy settingsProxy, Handler handler, String settingName, int userId) { - this(secureSettings, handler, settingName, userId, 0); + this(settingsProxy, handler, settingName, userId, 0); } - public SettingObserver(SecureSettings secureSetting, Handler handler, String settingName) { - this(secureSetting, handler, settingName, ActivityManager.getCurrentUser()); + public SettingObserver(SettingsProxy settingsProxy, Handler handler, String settingName) { + this(settingsProxy, handler, settingName, ActivityManager.getCurrentUser()); } - public SettingObserver(SecureSettings secureSettings, Handler handler, String settingName, + public SettingObserver(SettingsProxy settingsProxy, Handler handler, String settingName, int userId, int defaultValue) { super(handler); - mSecureSettings = secureSettings; + mSettingsProxy = settingsProxy; mSettingName = settingName; mObservedValue = mDefaultValue = defaultValue; mUserId = userId; @@ -63,11 +70,11 @@ public abstract class SettingObserver extends ContentObserver implements Listena * @param value The new value for the setting. */ public void setValue(int value) { - mSecureSettings.putIntForUser(mSettingName, value, mUserId); + mSettingsProxy.putIntForUser(mSettingName, value, mUserId); } private int getValueFromProvider() { - return mSecureSettings.getIntForUser(mSettingName, mDefaultValue, mUserId); + return mSettingsProxy.getIntForUser(mSettingName, mDefaultValue, mUserId); } @Override @@ -76,10 +83,10 @@ public abstract class SettingObserver extends ContentObserver implements Listena mListening = listening; if (listening) { mObservedValue = getValueFromProvider(); - mSecureSettings.registerContentObserverForUser( - mSecureSettings.getUriFor(mSettingName), false, this, mUserId); + mSettingsProxy.registerContentObserverForUser( + mSettingsProxy.getUriFor(mSettingName), false, this, mUserId); } else { - mSecureSettings.unregisterContentObserver(this); + mSettingsProxy.unregisterContentObserver(this); mObservedValue = mDefaultValue; } } diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/AirplaneModeTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/AirplaneModeTile.java index 22cd6f86b1652..5650a17e703a1 100644 --- a/packages/SystemUI/src/com/android/systemui/qs/tiles/AirplaneModeTile.java +++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/AirplaneModeTile.java @@ -44,10 +44,11 @@ import com.android.systemui.plugins.ActivityStarter; import com.android.systemui.plugins.FalsingManager; import com.android.systemui.plugins.qs.QSTile.BooleanState; import com.android.systemui.plugins.statusbar.StatusBarStateController; -import com.android.systemui.qs.GlobalSetting; import com.android.systemui.qs.QSHost; +import com.android.systemui.qs.SettingObserver; import com.android.systemui.qs.logging.QSLogger; import com.android.systemui.qs.tileimpl.QSTileImpl; +import com.android.systemui.util.settings.GlobalSettings; import javax.inject.Inject; @@ -56,7 +57,7 @@ import dagger.Lazy; /** Quick settings tile: Airplane mode **/ public class AirplaneModeTile extends QSTileImpl { private final Icon mIcon = ResourceIcon.get(com.android.internal.R.drawable.ic_qs_airplane); - private final GlobalSetting mSetting; + private final SettingObserver mSetting; private final BroadcastDispatcher mBroadcastDispatcher; private final Lazy mLazyConnectivityManager; @@ -73,16 +74,17 @@ public class AirplaneModeTile extends QSTileImpl { ActivityStarter activityStarter, QSLogger qsLogger, BroadcastDispatcher broadcastDispatcher, - Lazy lazyConnectivityManager + Lazy lazyConnectivityManager, + GlobalSettings globalSettings ) { super(host, backgroundLooper, mainHandler, falsingManager, metricsLogger, statusBarStateController, activityStarter, qsLogger); mBroadcastDispatcher = broadcastDispatcher; mLazyConnectivityManager = lazyConnectivityManager; - mSetting = new GlobalSetting(mContext, mHandler, Global.AIRPLANE_MODE_ON) { + mSetting = new SettingObserver(globalSettings, mHandler, Global.AIRPLANE_MODE_ON) { @Override - protected void handleValueChanged(int value) { + protected void handleValueChanged(int value, boolean observedChange) { // mHandler is the background handler so calling this is OK handleRefreshState(value); } diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/ZenModeControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/ZenModeControllerImpl.java index 5acce7f80f6cb..b5ee62df890bf 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/ZenModeControllerImpl.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/ZenModeControllerImpl.java @@ -45,9 +45,10 @@ import com.android.systemui.broadcast.BroadcastDispatcher; import com.android.systemui.dagger.SysUISingleton; import com.android.systemui.dagger.qualifiers.Main; import com.android.systemui.dump.DumpManager; -import com.android.systemui.qs.GlobalSetting; +import com.android.systemui.qs.SettingObserver; import com.android.systemui.settings.CurrentUserTracker; import com.android.systemui.util.Utils; +import com.android.systemui.util.settings.GlobalSettings; import java.io.FileDescriptor; import java.io.PrintWriter; @@ -66,8 +67,8 @@ public class ZenModeControllerImpl extends CurrentUserTracker private final ArrayList mCallbacks = new ArrayList<>(); private final Object mCallbacksLock = new Object(); private final Context mContext; - private final GlobalSetting mModeSetting; - private final GlobalSetting mConfigSetting; + private final SettingObserver mModeSetting; + private final SettingObserver mConfigSetting; private final NotificationManager mNoMan; private final AlarmManager mAlarmManager; private final SetupObserver mSetupObserver; @@ -85,19 +86,20 @@ public class ZenModeControllerImpl extends CurrentUserTracker Context context, @Main Handler handler, BroadcastDispatcher broadcastDispatcher, - DumpManager dumpManager) { + DumpManager dumpManager, + GlobalSettings globalSettings) { super(broadcastDispatcher); mContext = context; - mModeSetting = new GlobalSetting(mContext, handler, Global.ZEN_MODE) { + mModeSetting = new SettingObserver(globalSettings, handler, Global.ZEN_MODE) { @Override - protected void handleValueChanged(int value) { + protected void handleValueChanged(int value, boolean observedChange) { updateZenMode(value); fireZenChanged(value); } }; - mConfigSetting = new GlobalSetting(mContext, handler, Global.ZEN_MODE_CONFIG_ETAG) { + mConfigSetting = new SettingObserver(globalSettings, handler, Global.ZEN_MODE_CONFIG_ETAG) { @Override - protected void handleValueChanged(int value) { + protected void handleValueChanged(int value, boolean observedChange) { updateZenModeConfig(); } }; diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/ZenModeControllerImplTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/ZenModeControllerImplTest.java index 336f2b16aeb71..3fe1a9f6ed97c 100644 --- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/ZenModeControllerImplTest.java +++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/ZenModeControllerImplTest.java @@ -36,6 +36,7 @@ import com.android.systemui.SysuiTestCase; import com.android.systemui.broadcast.BroadcastDispatcher; import com.android.systemui.dump.DumpManager; import com.android.systemui.statusbar.policy.ZenModeController.Callback; +import com.android.systemui.util.settings.FakeSettings; import org.junit.Before; import org.junit.Test; @@ -70,7 +71,8 @@ public class ZenModeControllerImplTest extends SysuiTestCase { mContext, Handler.createAsync(Looper.myLooper()), mBroadcastDispatcher, - mDumpManager); + mDumpManager, + new FakeSettings()); } @Test