summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author TreeHugger Robot <treehugger-gerrit@google.com> 2020-04-24 18:46:35 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2020-04-24 18:46:35 +0000
commit91dd9efe81d36e1ba9b13a176ae1bfca2dfc42ce (patch)
tree10fcbd58751161573ac879cb56f7515086742430
parentfc9bda17d6d66cc860d14d8232e06d056be81588 (diff)
parentf8379d297d20250754d89b5fb5eda95a44c3beba (diff)
Merge "Pass user to SecureSetting constructor" into rvc-dev
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/SecureSetting.java12
-rw-r--r--packages/SystemUI/src/com/android/systemui/qs/tiles/BatterySaverTile.java13
-rw-r--r--packages/SystemUI/tests/src/com/android/systemui/qs/tiles/BatterySaverTileTest.kt78
3 files changed, 99 insertions, 4 deletions
diff --git a/packages/SystemUI/src/com/android/systemui/qs/SecureSetting.java b/packages/SystemUI/src/com/android/systemui/qs/SecureSetting.java
index 4f812bc1059c..c22463964a19 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/SecureSetting.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/SecureSetting.java
@@ -37,11 +37,15 @@ public abstract class SecureSetting extends ContentObserver implements Listenabl
protected abstract void handleValueChanged(int value, boolean observedChange);
- public SecureSetting(Context context, Handler handler, String settingName) {
+ protected SecureSetting(Context context, Handler handler, String settingName) {
+ this(context, handler, settingName, ActivityManager.getCurrentUser());
+ }
+
+ public SecureSetting(Context context, Handler handler, String settingName, int userId) {
super(handler);
mContext = context;
mSettingName = settingName;
- mUserId = ActivityManager.getCurrentUser();
+ mUserId = userId;
}
public int getValue() {
@@ -80,4 +84,8 @@ public abstract class SecureSetting extends ContentObserver implements Listenabl
setListening(true);
}
}
+
+ public int getCurrentUser() {
+ return mUserId;
+ }
}
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/BatterySaverTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/BatterySaverTile.java
index 4449d483118b..f2495048bf26 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/BatterySaverTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/BatterySaverTile.java
@@ -20,6 +20,7 @@ import android.provider.Settings.Secure;
import android.service.quicksettings.Tile;
import android.widget.Switch;
+import com.android.internal.annotations.VisibleForTesting;
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.systemui.R;
import com.android.systemui.plugins.qs.QSTile.BooleanState;
@@ -34,7 +35,8 @@ public class BatterySaverTile extends QSTileImpl<BooleanState> implements
BatteryController.BatteryStateChangeCallback {
private final BatteryController mBatteryController;
- private final SecureSetting mSetting;
+ @VisibleForTesting
+ protected final SecureSetting mSetting;
private int mLevel;
private boolean mPowerSave;
@@ -48,7 +50,9 @@ public class BatterySaverTile extends QSTileImpl<BooleanState> implements
super(host);
mBatteryController = batteryController;
mBatteryController.observe(getLifecycle(), this);
- mSetting = new SecureSetting(mContext, mHandler, Secure.LOW_POWER_WARNING_ACKNOWLEDGED) {
+ int currentUser = host.getUserContext().getUserId();
+ mSetting = new SecureSetting(mContext, mHandler, Secure.LOW_POWER_WARNING_ACKNOWLEDGED,
+ currentUser) {
@Override
protected void handleValueChanged(int value, boolean observedChange) {
handleRefreshState(null);
@@ -68,6 +72,11 @@ public class BatterySaverTile extends QSTileImpl<BooleanState> implements
}
@Override
+ protected void handleUserSwitch(int newUserId) {
+ mSetting.setUserId(newUserId);
+ }
+
+ @Override
public int getMetricsCategory() {
return MetricsEvent.QS_BATTERY_TILE;
}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/BatterySaverTileTest.kt b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/BatterySaverTileTest.kt
new file mode 100644
index 000000000000..31992875df07
--- /dev/null
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/tiles/BatterySaverTileTest.kt
@@ -0,0 +1,78 @@
+/*
+ * Copyright (C) 2020 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.tiles
+
+import android.content.Context
+import android.testing.AndroidTestingRunner
+import android.testing.TestableLooper
+import android.testing.TestableLooper.RunWithLooper
+import androidx.test.filters.SmallTest
+import com.android.systemui.Dependency
+import com.android.systemui.SysuiTestCase
+import com.android.systemui.qs.QSHost
+import com.android.systemui.statusbar.policy.BatteryController
+import org.junit.Assert.assertEquals
+import org.junit.Before
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.mockito.Mock
+import org.mockito.Mockito.`when`
+import org.mockito.MockitoAnnotations
+
+@RunWith(AndroidTestingRunner::class)
+@RunWithLooper
+@SmallTest
+class BatterySaverTileTest : SysuiTestCase() {
+
+ companion object {
+ private const val USER = 10
+ }
+
+ @Mock
+ private lateinit var userContext: Context
+ @Mock
+ private lateinit var qsHost: QSHost
+ @Mock
+ private lateinit var batteryController: BatteryController
+ private lateinit var testableLooper: TestableLooper
+ private lateinit var tile: BatterySaverTile
+
+ @Before
+ fun setUp() {
+ MockitoAnnotations.initMocks(this)
+ testableLooper = TestableLooper.get(this)
+ mDependency.injectTestDependency(Dependency.BG_LOOPER, testableLooper.looper)
+ `when`(qsHost.userContext).thenReturn(userContext)
+ `when`(userContext.userId).thenReturn(USER)
+
+ tile = BatterySaverTile(qsHost, batteryController)
+ }
+
+ @Test
+ fun testSettingWithCorrectUser() {
+ assertEquals(USER, tile.mSetting.currentUser)
+ }
+
+ @Test
+ fun testSettingChangesUser() {
+ tile.userSwitch(USER + 1)
+
+ testableLooper.processAllMessages()
+
+ assertEquals(USER + 1, tile.mSetting.currentUser)
+ }
+} \ No newline at end of file