Disable bg restriction for "Disallow apps control"
Use RestrictedPreference so it could handle it automatically Change-Id: Ibf58934639677b88316366b2e00790f9556d0966 Fixes: 64474641 Test: Robotests
This commit is contained in:
@@ -15,7 +15,9 @@
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
-->
|
-->
|
||||||
|
|
||||||
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
|
<PreferenceScreen
|
||||||
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
|
xmlns:settings="http://schemas.android.com/apk/res-auto">
|
||||||
|
|
||||||
<com.android.settings.applications.LayoutPreference
|
<com.android.settings.applications.LayoutPreference
|
||||||
android:key="header_view"
|
android:key="header_view"
|
||||||
@@ -30,10 +32,11 @@
|
|||||||
<PreferenceCategory
|
<PreferenceCategory
|
||||||
android:title="@string/battery_detail_manage_title">
|
android:title="@string/battery_detail_manage_title">
|
||||||
|
|
||||||
<Preference
|
<com.android.settingslib.RestrictedPreference
|
||||||
android:key="background_activity"
|
android:key="background_activity"
|
||||||
android:title="@string/background_activity_title"
|
android:title="@string/background_activity_title"
|
||||||
android:selectable="true"/>
|
android:selectable="true"
|
||||||
|
settings:userRestriction="no_control_apps"/>
|
||||||
|
|
||||||
<Preference
|
<Preference
|
||||||
android:key="battery_optimization"
|
android:key="battery_optimization"
|
||||||
|
@@ -28,6 +28,7 @@ import com.android.settings.fuelgauge.batterytip.BatteryTipDialogFragment;
|
|||||||
import com.android.settings.fuelgauge.batterytip.tips.BatteryTip;
|
import com.android.settings.fuelgauge.batterytip.tips.BatteryTip;
|
||||||
import com.android.settings.fuelgauge.batterytip.tips.RestrictAppTip;
|
import com.android.settings.fuelgauge.batterytip.tips.RestrictAppTip;
|
||||||
import com.android.settings.fuelgauge.batterytip.tips.UnrestrictAppTip;
|
import com.android.settings.fuelgauge.batterytip.tips.UnrestrictAppTip;
|
||||||
|
import com.android.settingslib.RestrictedPreference;
|
||||||
import com.android.settingslib.core.AbstractPreferenceController;
|
import com.android.settingslib.core.AbstractPreferenceController;
|
||||||
import com.android.settingslib.fuelgauge.PowerWhitelistBackend;
|
import com.android.settingslib.fuelgauge.PowerWhitelistBackend;
|
||||||
|
|
||||||
@@ -76,6 +77,11 @@ public class BackgroundActivityPreferenceController extends AbstractPreferenceCo
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void updateState(Preference preference) {
|
public void updateState(Preference preference) {
|
||||||
|
final RestrictedPreference restrictedPreference = (RestrictedPreference) preference;
|
||||||
|
if (restrictedPreference.isDisabledByAdmin()) {
|
||||||
|
// If disabled, let RestrictedPreference handle it and do nothing here
|
||||||
|
return;
|
||||||
|
}
|
||||||
final int mode = mAppOpsManager
|
final int mode = mAppOpsManager
|
||||||
.checkOpNoThrow(AppOpsManager.OP_RUN_ANY_IN_BACKGROUND, mUid, mTargetPackage);
|
.checkOpNoThrow(AppOpsManager.OP_RUN_ANY_IN_BACKGROUND, mUid, mTargetPackage);
|
||||||
final boolean whitelisted = mPowerWhitelistBackend.isWhitelisted(mTargetPackage);
|
final boolean whitelisted = mPowerWhitelistBackend.isWhitelisted(mTargetPackage);
|
||||||
|
@@ -17,10 +17,13 @@
|
|||||||
package com.android.settings.fuelgauge;
|
package com.android.settings.fuelgauge;
|
||||||
|
|
||||||
import static com.google.common.truth.Truth.assertThat;
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
|
|
||||||
|
import static org.mockito.Matchers.anyBoolean;
|
||||||
import static org.mockito.Matchers.anyInt;
|
import static org.mockito.Matchers.anyInt;
|
||||||
import static org.mockito.Matchers.anyString;
|
import static org.mockito.Matchers.anyString;
|
||||||
import static org.mockito.Mockito.doNothing;
|
import static org.mockito.Mockito.doNothing;
|
||||||
import static org.mockito.Mockito.doReturn;
|
import static org.mockito.Mockito.doReturn;
|
||||||
|
import static org.mockito.Mockito.never;
|
||||||
import static org.mockito.Mockito.spy;
|
import static org.mockito.Mockito.spy;
|
||||||
import static org.mockito.Mockito.verify;
|
import static org.mockito.Mockito.verify;
|
||||||
import static org.mockito.Mockito.when;
|
import static org.mockito.Mockito.when;
|
||||||
@@ -38,6 +41,7 @@ import com.android.settings.testutils.FakeFeatureFactory;
|
|||||||
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
import com.android.settings.testutils.SettingsRobolectricTestRunner;
|
||||||
import com.android.settings.testutils.shadow.SettingsShadowResources;
|
import com.android.settings.testutils.shadow.SettingsShadowResources;
|
||||||
import com.android.settings.testutils.shadow.ShadowFragment;
|
import com.android.settings.testutils.shadow.ShadowFragment;
|
||||||
|
import com.android.settingslib.RestrictedPreference;
|
||||||
import com.android.settingslib.fuelgauge.PowerWhitelistBackend;
|
import com.android.settingslib.fuelgauge.PowerWhitelistBackend;
|
||||||
|
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
@@ -49,8 +53,6 @@ import org.mockito.MockitoAnnotations;
|
|||||||
import org.robolectric.RuntimeEnvironment;
|
import org.robolectric.RuntimeEnvironment;
|
||||||
import org.robolectric.annotation.Config;
|
import org.robolectric.annotation.Config;
|
||||||
|
|
||||||
import androidx.preference.Preference;
|
|
||||||
|
|
||||||
@RunWith(SettingsRobolectricTestRunner.class)
|
@RunWith(SettingsRobolectricTestRunner.class)
|
||||||
@Config(shadows = {SettingsShadowResources.SettingsShadowTheme.class, ShadowFragment.class})
|
@Config(shadows = {SettingsShadowResources.SettingsShadowTheme.class, ShadowFragment.class})
|
||||||
public class BackgroundActivityPreferenceControllerTest {
|
public class BackgroundActivityPreferenceControllerTest {
|
||||||
@@ -80,7 +82,7 @@ public class BackgroundActivityPreferenceControllerTest {
|
|||||||
@Mock
|
@Mock
|
||||||
private PowerWhitelistBackend mPowerWhitelistBackend;
|
private PowerWhitelistBackend mPowerWhitelistBackend;
|
||||||
private BackgroundActivityPreferenceController mController;
|
private BackgroundActivityPreferenceController mController;
|
||||||
private Preference mPreference;
|
private RestrictedPreference mPreference;
|
||||||
private Context mShadowContext;
|
private Context mShadowContext;
|
||||||
private BatteryUtils mBatteryUtils;
|
private BatteryUtils mBatteryUtils;
|
||||||
|
|
||||||
@@ -109,7 +111,7 @@ public class BackgroundActivityPreferenceControllerTest {
|
|||||||
mBatteryUtils = spy(new BatteryUtils(mShadowContext));
|
mBatteryUtils = spy(new BatteryUtils(mShadowContext));
|
||||||
doNothing().when(mBatteryUtils).setForceAppStandby(anyInt(), anyString(), anyInt());
|
doNothing().when(mBatteryUtils).setForceAppStandby(anyInt(), anyString(), anyInt());
|
||||||
|
|
||||||
mPreference = new Preference(mShadowContext);
|
mPreference = spy(new RestrictedPreference(mShadowContext, null /* attrs */));
|
||||||
mPreference.setKey(BackgroundActivityPreferenceController.KEY_BACKGROUND_ACTIVITY);
|
mPreference.setKey(BackgroundActivityPreferenceController.KEY_BACKGROUND_ACTIVITY);
|
||||||
mController = spy(new BackgroundActivityPreferenceController(
|
mController = spy(new BackgroundActivityPreferenceController(
|
||||||
mContext, mFragment, UID_LOW_SDK, LOW_SDK_PACKAGE, mPowerWhitelistBackend));
|
mContext, mFragment, UID_LOW_SDK, LOW_SDK_PACKAGE, mPowerWhitelistBackend));
|
||||||
@@ -118,7 +120,7 @@ public class BackgroundActivityPreferenceControllerTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testHandlePreferenceTreeClick_restrictApp_showDialog() {
|
public void handlePreferenceTreeClick_restrictApp_showDialog() {
|
||||||
doReturn(AppOpsManager.MODE_ALLOWED).when(mAppOpsManager)
|
doReturn(AppOpsManager.MODE_ALLOWED).when(mAppOpsManager)
|
||||||
.checkOpNoThrow(anyInt(), anyInt(), anyString());
|
.checkOpNoThrow(anyInt(), anyInt(), anyString());
|
||||||
|
|
||||||
@@ -128,7 +130,7 @@ public class BackgroundActivityPreferenceControllerTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testHandlePreferenceTreeClick_unRestrictApp_showDialog() {
|
public void handlePreferenceTreeClick_unRestrictApp_showDialog() {
|
||||||
doReturn(AppOpsManager.MODE_IGNORED).when(mAppOpsManager)
|
doReturn(AppOpsManager.MODE_IGNORED).when(mAppOpsManager)
|
||||||
.checkOpNoThrow(anyInt(), anyInt(), anyString());
|
.checkOpNoThrow(anyInt(), anyInt(), anyString());
|
||||||
|
|
||||||
@@ -138,7 +140,7 @@ public class BackgroundActivityPreferenceControllerTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testUpdateState_noError_setEnabled() {
|
public void updateState_noError_setEnabled() {
|
||||||
when(mAppOpsManager.checkOpNoThrow(AppOpsManager.OP_RUN_ANY_IN_BACKGROUND, UID_LOW_SDK,
|
when(mAppOpsManager.checkOpNoThrow(AppOpsManager.OP_RUN_ANY_IN_BACKGROUND, UID_LOW_SDK,
|
||||||
LOW_SDK_PACKAGE)).thenReturn(AppOpsManager.MODE_ALLOWED);
|
LOW_SDK_PACKAGE)).thenReturn(AppOpsManager.MODE_ALLOWED);
|
||||||
|
|
||||||
@@ -149,7 +151,7 @@ public class BackgroundActivityPreferenceControllerTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testUpdateState_whitelisted() {
|
public void updateState_whitelisted() {
|
||||||
when(mPowerWhitelistBackend.isWhitelisted(LOW_SDK_PACKAGE)).thenReturn(true);
|
when(mPowerWhitelistBackend.isWhitelisted(LOW_SDK_PACKAGE)).thenReturn(true);
|
||||||
mController.updateState(mPreference);
|
mController.updateState(mPreference);
|
||||||
assertThat(mPreference.isEnabled()).isFalse();
|
assertThat(mPreference.isEnabled()).isFalse();
|
||||||
@@ -158,7 +160,16 @@ public class BackgroundActivityPreferenceControllerTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testUpdateSummary_modeError_showSummaryDisabled() {
|
public void updateState_disabledByAdmin_doNothing() {
|
||||||
|
doReturn(true).when(mPreference).isDisabledByAdmin();
|
||||||
|
|
||||||
|
mController.updateState(mPreference);
|
||||||
|
|
||||||
|
verify(mPreference, never()).setEnabled(anyBoolean());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void updateSummary_modeError_showSummaryDisabled() {
|
||||||
when(mAppOpsManager.checkOpNoThrow(AppOpsManager.OP_RUN_ANY_IN_BACKGROUND, UID_LOW_SDK,
|
when(mAppOpsManager.checkOpNoThrow(AppOpsManager.OP_RUN_ANY_IN_BACKGROUND, UID_LOW_SDK,
|
||||||
LOW_SDK_PACKAGE)).thenReturn(AppOpsManager.MODE_ERRORED);
|
LOW_SDK_PACKAGE)).thenReturn(AppOpsManager.MODE_ERRORED);
|
||||||
final CharSequence expectedSummary = mShadowContext.getText(
|
final CharSequence expectedSummary = mShadowContext.getText(
|
||||||
@@ -169,7 +180,7 @@ public class BackgroundActivityPreferenceControllerTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testUpdateSummary_modeDefault_showNotRestricted() {
|
public void updateSummary_modeDefault_showNotRestricted() {
|
||||||
when(mAppOpsManager.checkOpNoThrow(AppOpsManager.OP_RUN_ANY_IN_BACKGROUND, UID_LOW_SDK,
|
when(mAppOpsManager.checkOpNoThrow(AppOpsManager.OP_RUN_ANY_IN_BACKGROUND, UID_LOW_SDK,
|
||||||
LOW_SDK_PACKAGE)).thenReturn(AppOpsManager.MODE_DEFAULT);
|
LOW_SDK_PACKAGE)).thenReturn(AppOpsManager.MODE_DEFAULT);
|
||||||
|
|
||||||
@@ -179,7 +190,7 @@ public class BackgroundActivityPreferenceControllerTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testUpdateSummary_modeIgnored_showRestricted() {
|
public void updateSummary_modeIgnored_showRestricted() {
|
||||||
when(mAppOpsManager.checkOpNoThrow(AppOpsManager.OP_RUN_ANY_IN_BACKGROUND, UID_LOW_SDK,
|
when(mAppOpsManager.checkOpNoThrow(AppOpsManager.OP_RUN_ANY_IN_BACKGROUND, UID_LOW_SDK,
|
||||||
LOW_SDK_PACKAGE)).thenReturn(AppOpsManager.MODE_IGNORED);
|
LOW_SDK_PACKAGE)).thenReturn(AppOpsManager.MODE_IGNORED);
|
||||||
|
|
||||||
@@ -189,7 +200,7 @@ public class BackgroundActivityPreferenceControllerTest {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testIsAvailable_ReturnTrue() {
|
public void isAvailable_ReturnTrue() {
|
||||||
assertThat(mController.isAvailable()).isTrue();
|
assertThat(mController.isAvailable()).isTrue();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user