From 65cb0d648885101abbe317ffb3ae8c2771384485 Mon Sep 17 00:00:00 2001 From: Christopher Tate Date: Tue, 11 Apr 2017 10:52:06 -0700 Subject: [PATCH] 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 --- .../BackgroundActivityPreferenceController.java | 10 +++++++--- .../BackgroundActivityPreferenceControllerTest.java | 10 +++++----- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/src/com/android/settings/fuelgauge/BackgroundActivityPreferenceController.java b/src/com/android/settings/fuelgauge/BackgroundActivityPreferenceController.java index c249676084a..463d4dc0a6e 100644 --- a/src/com/android/settings/fuelgauge/BackgroundActivityPreferenceController.java +++ b/src/com/android/settings/fuelgauge/BackgroundActivityPreferenceController.java @@ -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 { diff --git a/tests/robotests/src/com/android/settings/fuelgauge/BackgroundActivityPreferenceControllerTest.java b/tests/robotests/src/com/android/settings/fuelgauge/BackgroundActivityPreferenceControllerTest.java index 6d3607fdd87..081347873a2 100644 --- a/tests/robotests/src/com/android/settings/fuelgauge/BackgroundActivityPreferenceControllerTest.java +++ b/tests/robotests/src/com/android/settings/fuelgauge/BackgroundActivityPreferenceControllerTest.java @@ -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);