Use bg appop ALLOWED, not DEFAULT
DEFAULT is not actually the right thing; it's a subtlety used for other things that have compound state. ALLOWED is the proper outright "let this thing run free" state for this appop. Also, set the appop only for the target package, not for the entire uid. Bug 37226920 Bug 37242946 Test: make RunSettingsRoboTests Change-Id: I8c0a995b9519f980685e8573da946dcc93ac4e7c
This commit is contained in:
@@ -90,12 +90,16 @@ public class BackgroundActivityPreferenceController extends PreferenceController
|
||||
@Override
|
||||
public boolean onPreferenceChange(Preference preference, Object newValue) {
|
||||
boolean switchOn = (Boolean) newValue;
|
||||
mAppOpsManager.setUidMode(AppOpsManager.OP_RUN_IN_BACKGROUND, mUid,
|
||||
switchOn ? AppOpsManager.MODE_DEFAULT : AppOpsManager.MODE_IGNORED);
|
||||
|
||||
mAppOpsManager.setMode(AppOpsManager.OP_RUN_IN_BACKGROUND, mUid, mTargetPackage,
|
||||
switchOn ? AppOpsManager.MODE_ALLOWED : AppOpsManager.MODE_IGNORED);
|
||||
return true;
|
||||
}
|
||||
|
||||
@VisibleForTesting
|
||||
String getTargetPackage() {
|
||||
return mTargetPackage;
|
||||
}
|
||||
|
||||
@VisibleForTesting
|
||||
boolean isLegacyApp(final String packageName) {
|
||||
try {
|
||||
|
@@ -85,16 +85,16 @@ public class BackgroundActivityPreferenceControllerTest {
|
||||
public void testOnPreferenceChange_TurnOnCheck_MethodInvoked() {
|
||||
mController.onPreferenceChange(mPreference, true);
|
||||
|
||||
verify(mAppOpsManager).setUidMode(AppOpsManager.OP_RUN_IN_BACKGROUND,
|
||||
UID_NORMAL, AppOpsManager.MODE_DEFAULT);
|
||||
verify(mAppOpsManager).setMode(AppOpsManager.OP_RUN_IN_BACKGROUND, UID_NORMAL,
|
||||
mController.getTargetPackage(), AppOpsManager.MODE_ALLOWED);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testOnPreferenceChange_TurnOffCheck_MethodInvoked() {
|
||||
mController.onPreferenceChange(null, false);
|
||||
|
||||
verify(mAppOpsManager).setUidMode(AppOpsManager.OP_RUN_IN_BACKGROUND,
|
||||
UID_NORMAL, AppOpsManager.MODE_IGNORED);
|
||||
verify(mAppOpsManager).setMode(AppOpsManager.OP_RUN_IN_BACKGROUND, UID_NORMAL,
|
||||
mController.getTargetPackage(), AppOpsManager.MODE_IGNORED);
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -134,7 +134,7 @@ public class BackgroundActivityPreferenceControllerTest {
|
||||
mController = new BackgroundActivityPreferenceController(mContext, UID_SPECIAL);
|
||||
when(mAppOpsManager
|
||||
.checkOpNoThrow(AppOpsManager.OP_RUN_IN_BACKGROUND, UID_SPECIAL, LOW_SDK_PACKAGE))
|
||||
.thenReturn(AppOpsManager.MODE_DEFAULT);
|
||||
.thenReturn(AppOpsManager.MODE_ALLOWED);
|
||||
when(mAppOpsManager
|
||||
.checkOpNoThrow(AppOpsManager.OP_RUN_IN_BACKGROUND, UID_SPECIAL, HIGH_SDK_PACKAGE))
|
||||
.thenReturn(AppOpsManager.MODE_IGNORED);
|
||||
|
Reference in New Issue
Block a user