diff options
| author | 2020-04-24 18:46:35 +0000 | |
|---|---|---|
| committer | 2020-04-24 18:46:35 +0000 | |
| commit | 91dd9efe81d36e1ba9b13a176ae1bfca2dfc42ce (patch) | |
| tree | 10fcbd58751161573ac879cb56f7515086742430 | |
| parent | fc9bda17d6d66cc860d14d8232e06d056be81588 (diff) | |
| parent | f8379d297d20250754d89b5fb5eda95a44c3beba (diff) | |
Merge "Pass user to SecureSetting constructor" into rvc-dev
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 |