Loading src/com/android/settings/fuelgauge/RestrictAppPreferenceController.java +15 −6 Original line number Diff line number Diff line Loading @@ -67,17 +67,26 @@ public class RestrictAppPreferenceController extends BasePreferenceController { final List<AppOpsManager.PackageOps> packageOpsList = mAppOpsManager.getPackagesForOps( new int[]{AppOpsManager.OP_RUN_ANY_IN_BACKGROUND}); final int num = CollectionUtils.size(packageOpsList); mAppInfos = new ArrayList<>(); for (int i = 0; i < num; i++) { for (int i = 0, size = CollectionUtils.size(packageOpsList); i < size; i++) { final AppOpsManager.PackageOps packageOps = packageOpsList.get(i); final List<AppOpsManager.OpEntry> entries = packageOps.getOps(); for (int j = 0; j < entries.size(); j++) { AppOpsManager.OpEntry ent = entries.get(j); if (ent.getOp() != AppOpsManager.OP_RUN_ANY_IN_BACKGROUND) { continue; } if (ent.getMode() != AppOpsManager.MODE_ALLOWED) { mAppInfos.add(new AppInfo.Builder() .setPackageName(packageOps.getPackageName()) .setUid(packageOps.getUid()) .build()); } } } final int num = mAppInfos.size(); // Enable the preference if some apps already been restricted, otherwise disable it preference.setEnabled(num > 0); preference.setSummary( Loading tests/robotests/src/com/android/settings/fuelgauge/RestrictAppPreferenceControllerTest.java +32 −7 Original line number Diff line number Diff line Loading @@ -18,7 +18,9 @@ package com.android.settings.fuelgauge; import static com.android.settings.SettingsActivity.EXTRA_SHOW_FRAGMENT; import static com.android.settings.SettingsActivity.EXTRA_SHOW_FRAGMENT_TITLE_RESID; import static com.google.common.truth.Truth.assertThat; import static org.mockito.Matchers.any; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.spy; Loading Loading @@ -47,11 +49,17 @@ import java.util.List; @RunWith(RobolectricTestRunner.class) public class RestrictAppPreferenceControllerTest { private static final int ALLOWED_UID = 111; private static final String ALLOWED_PACKAGE_NAME = "com.android.allowed.package"; private static final int RESTRICTED_UID = 222; private static final String RESTRICTED_PACKAGE_NAME = "com.android.restricted.package"; @Mock private AppOpsManager mAppOpsManager; @Mock private AppOpsManager.PackageOps mPackageOps; private AppOpsManager.PackageOps mRestrictedPackageOps; @Mock private AppOpsManager.PackageOps mAllowedPackageOps; @Mock private SettingsActivity mSettingsActivity; @Mock Loading @@ -65,6 +73,21 @@ public class RestrictAppPreferenceControllerTest { public void setUp() { MockitoAnnotations.initMocks(this); final AppOpsManager.OpEntry allowOpEntry = new AppOpsManager.OpEntry( AppOpsManager.OP_RUN_ANY_IN_BACKGROUND, AppOpsManager.MODE_ALLOWED, 0, 0, 0, 0, ""); final List<AppOpsManager.OpEntry> allowOps = new ArrayList<>(); allowOps.add(allowOpEntry); final AppOpsManager.OpEntry restrictedOpEntry = new AppOpsManager.OpEntry( AppOpsManager.OP_RUN_ANY_IN_BACKGROUND, AppOpsManager.MODE_IGNORED, 0, 0, 0, 0, ""); final List<AppOpsManager.OpEntry> restrictedOps = new ArrayList<>(); restrictedOps.add(restrictedOpEntry); doReturn(ALLOWED_UID).when(mAllowedPackageOps).getUid(); doReturn(ALLOWED_PACKAGE_NAME).when(mAllowedPackageOps).getPackageName(); doReturn(allowOps).when(mAllowedPackageOps).getOps(); doReturn(RESTRICTED_UID).when(mRestrictedPackageOps).getUid(); doReturn(RESTRICTED_PACKAGE_NAME).when(mRestrictedPackageOps).getPackageName(); doReturn(restrictedOps).when(mRestrictedPackageOps).getOps(); mContext = spy(RuntimeEnvironment.application); doReturn(mAppOpsManager).when(mContext).getSystemService(Context.APP_OPS_SERVICE); doReturn(mContext).when(mSettingsActivity).getApplicationContext(); Loading @@ -77,7 +100,7 @@ public class RestrictAppPreferenceControllerTest { @Test public void testUpdateState_oneApp_showCorrectSummary() { mPackageOpsList.add(mPackageOps); mPackageOpsList.add(mRestrictedPackageOps); doReturn(mPackageOpsList).when(mAppOpsManager).getPackagesForOps(any()); mRestrictAppPreferenceController.updateState(mPreference); Loading @@ -86,9 +109,10 @@ public class RestrictAppPreferenceControllerTest { } @Test public void testUpdateState_twoApps_showCorrectSummary() { mPackageOpsList.add(mPackageOps); mPackageOpsList.add(mPackageOps); public void testUpdateState_twoRestrictApps_showCorrectSummary() { mPackageOpsList.add(mRestrictedPackageOps); mPackageOpsList.add(mRestrictedPackageOps); mPackageOpsList.add(mAllowedPackageOps); doReturn(mPackageOpsList).when(mAppOpsManager).getPackagesForOps(any()); mRestrictAppPreferenceController.updateState(mPreference); Loading @@ -97,7 +121,8 @@ public class RestrictAppPreferenceControllerTest { } @Test public void testUpdateState_zeroApp_disabled() { public void testUpdateState_zeroRestrictApp_disabled() { mPackageOpsList.add(mAllowedPackageOps); doReturn(mPackageOpsList).when(mAppOpsManager).getPackagesForOps(any()); mRestrictAppPreferenceController.updateState(mPreference); Loading Loading
src/com/android/settings/fuelgauge/RestrictAppPreferenceController.java +15 −6 Original line number Diff line number Diff line Loading @@ -67,17 +67,26 @@ public class RestrictAppPreferenceController extends BasePreferenceController { final List<AppOpsManager.PackageOps> packageOpsList = mAppOpsManager.getPackagesForOps( new int[]{AppOpsManager.OP_RUN_ANY_IN_BACKGROUND}); final int num = CollectionUtils.size(packageOpsList); mAppInfos = new ArrayList<>(); for (int i = 0; i < num; i++) { for (int i = 0, size = CollectionUtils.size(packageOpsList); i < size; i++) { final AppOpsManager.PackageOps packageOps = packageOpsList.get(i); final List<AppOpsManager.OpEntry> entries = packageOps.getOps(); for (int j = 0; j < entries.size(); j++) { AppOpsManager.OpEntry ent = entries.get(j); if (ent.getOp() != AppOpsManager.OP_RUN_ANY_IN_BACKGROUND) { continue; } if (ent.getMode() != AppOpsManager.MODE_ALLOWED) { mAppInfos.add(new AppInfo.Builder() .setPackageName(packageOps.getPackageName()) .setUid(packageOps.getUid()) .build()); } } } final int num = mAppInfos.size(); // Enable the preference if some apps already been restricted, otherwise disable it preference.setEnabled(num > 0); preference.setSummary( Loading
tests/robotests/src/com/android/settings/fuelgauge/RestrictAppPreferenceControllerTest.java +32 −7 Original line number Diff line number Diff line Loading @@ -18,7 +18,9 @@ package com.android.settings.fuelgauge; import static com.android.settings.SettingsActivity.EXTRA_SHOW_FRAGMENT; import static com.android.settings.SettingsActivity.EXTRA_SHOW_FRAGMENT_TITLE_RESID; import static com.google.common.truth.Truth.assertThat; import static org.mockito.Matchers.any; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.spy; Loading Loading @@ -47,11 +49,17 @@ import java.util.List; @RunWith(RobolectricTestRunner.class) public class RestrictAppPreferenceControllerTest { private static final int ALLOWED_UID = 111; private static final String ALLOWED_PACKAGE_NAME = "com.android.allowed.package"; private static final int RESTRICTED_UID = 222; private static final String RESTRICTED_PACKAGE_NAME = "com.android.restricted.package"; @Mock private AppOpsManager mAppOpsManager; @Mock private AppOpsManager.PackageOps mPackageOps; private AppOpsManager.PackageOps mRestrictedPackageOps; @Mock private AppOpsManager.PackageOps mAllowedPackageOps; @Mock private SettingsActivity mSettingsActivity; @Mock Loading @@ -65,6 +73,21 @@ public class RestrictAppPreferenceControllerTest { public void setUp() { MockitoAnnotations.initMocks(this); final AppOpsManager.OpEntry allowOpEntry = new AppOpsManager.OpEntry( AppOpsManager.OP_RUN_ANY_IN_BACKGROUND, AppOpsManager.MODE_ALLOWED, 0, 0, 0, 0, ""); final List<AppOpsManager.OpEntry> allowOps = new ArrayList<>(); allowOps.add(allowOpEntry); final AppOpsManager.OpEntry restrictedOpEntry = new AppOpsManager.OpEntry( AppOpsManager.OP_RUN_ANY_IN_BACKGROUND, AppOpsManager.MODE_IGNORED, 0, 0, 0, 0, ""); final List<AppOpsManager.OpEntry> restrictedOps = new ArrayList<>(); restrictedOps.add(restrictedOpEntry); doReturn(ALLOWED_UID).when(mAllowedPackageOps).getUid(); doReturn(ALLOWED_PACKAGE_NAME).when(mAllowedPackageOps).getPackageName(); doReturn(allowOps).when(mAllowedPackageOps).getOps(); doReturn(RESTRICTED_UID).when(mRestrictedPackageOps).getUid(); doReturn(RESTRICTED_PACKAGE_NAME).when(mRestrictedPackageOps).getPackageName(); doReturn(restrictedOps).when(mRestrictedPackageOps).getOps(); mContext = spy(RuntimeEnvironment.application); doReturn(mAppOpsManager).when(mContext).getSystemService(Context.APP_OPS_SERVICE); doReturn(mContext).when(mSettingsActivity).getApplicationContext(); Loading @@ -77,7 +100,7 @@ public class RestrictAppPreferenceControllerTest { @Test public void testUpdateState_oneApp_showCorrectSummary() { mPackageOpsList.add(mPackageOps); mPackageOpsList.add(mRestrictedPackageOps); doReturn(mPackageOpsList).when(mAppOpsManager).getPackagesForOps(any()); mRestrictAppPreferenceController.updateState(mPreference); Loading @@ -86,9 +109,10 @@ public class RestrictAppPreferenceControllerTest { } @Test public void testUpdateState_twoApps_showCorrectSummary() { mPackageOpsList.add(mPackageOps); mPackageOpsList.add(mPackageOps); public void testUpdateState_twoRestrictApps_showCorrectSummary() { mPackageOpsList.add(mRestrictedPackageOps); mPackageOpsList.add(mRestrictedPackageOps); mPackageOpsList.add(mAllowedPackageOps); doReturn(mPackageOpsList).when(mAppOpsManager).getPackagesForOps(any()); mRestrictAppPreferenceController.updateState(mPreference); Loading @@ -97,7 +121,8 @@ public class RestrictAppPreferenceControllerTest { } @Test public void testUpdateState_zeroApp_disabled() { public void testUpdateState_zeroRestrictApp_disabled() { mPackageOpsList.add(mAllowedPackageOps); doReturn(mPackageOpsList).when(mAppOpsManager).getPackagesForOps(any()); mRestrictAppPreferenceController.updateState(mPreference); Loading