Merge "Pass user to SecureSetting constructor" into rvc-dev

This commit is contained in:
TreeHugger Robot
2020-04-24 18:46:35 +00:00
committed by Android (Google) Code Review
3 changed files with 99 additions and 4 deletions

View File

@@ -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;
}
}

View File

@@ -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);
@@ -67,6 +71,11 @@ public class BatterySaverTile extends QSTileImpl<BooleanState> implements
mSetting.setListening(false);
}
@Override
protected void handleUserSwitch(int newUserId) {
mSetting.setUserId(newUserId);
}
@Override
public int getMetricsCategory() {
return MetricsEvent.QS_BATTERY_TILE;

View File

@@ -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)
}
}