Unrestricting app when put on power whitelist

Power whitelisting and background restrictions are opposing rules, so to
keep apps out of confusing states, unrestricting an app whenever it is
put on the power whitelist.

Test: atest RunSettingsRoboTests:HighPowerDetailTest

Bug: 77924141
Change-Id: I4952ac6c893bc7e98aa1b6ad3a86906fc299dea5
This commit is contained in:
Suprabh Shukla
2018-05-10 20:11:26 -07:00
parent e30007dcc0
commit 0f447022cf
4 changed files with 51 additions and 7 deletions

View File

@@ -18,27 +18,49 @@ package com.android.settings.fuelgauge;
import static org.mockito.Matchers.any;
import static org.mockito.Matchers.eq;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
import android.app.AppOpsManager;
import android.content.Context;
import android.content.DialogInterface;
import com.android.internal.logging.nano.MetricsProto;
import com.android.settings.testutils.FakeFeatureFactory;
import com.android.settings.testutils.SettingsRobolectricTestRunner;
import com.android.settingslib.fuelgauge.PowerWhitelistBackend;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.robolectric.RuntimeEnvironment;
@RunWith(SettingsRobolectricTestRunner.class)
public class HighPowerDetailTest {
private static final int TEST_UID = 12000;
private static final String TEST_PACKAGE = "com.test.package";
private FakeFeatureFactory mFeatureFactory;
private HighPowerDetail mFragment;
@Mock
private PowerWhitelistBackend mPowerWhitelistBackend;
@Mock
private BatteryUtils mBatteryUtils;
@Before
public void setUp() {
mFeatureFactory = FakeFeatureFactory.setupForTest();
MockitoAnnotations.initMocks(this);
mFragment = spy(new HighPowerDetail());
mFragment.mBackend = mPowerWhitelistBackend;
mFragment.mBatteryUtils = mBatteryUtils;
mFragment.mPackageUid = TEST_UID;
mFragment.mPackageName = TEST_PACKAGE;
}
@Test
@@ -53,4 +75,13 @@ public class HighPowerDetailTest {
verify(mFeatureFactory.metricsFeatureProvider).action(any(Context.class),
eq(MetricsProto.MetricsEvent.APP_SPECIAL_PERMISSION_BATTERY_ALLOW), eq("app"));
}
@Test
public void onClick_appAddedToDozeWhitelist_getsUnrestricted() {
mFragment.mIsEnabled = true;
when(mPowerWhitelistBackend.isWhitelisted(TEST_PACKAGE)).thenReturn(false);
mFragment.onClick(null, DialogInterface.BUTTON_POSITIVE);
verify(mBatteryUtils).setForceAppStandby(TEST_UID, TEST_PACKAGE,
AppOpsManager.MODE_ALLOWED);
}
}