diff --git a/services/core/java/com/android/server/AlarmManagerService.java b/services/core/java/com/android/server/AlarmManagerService.java index cab6ecf3931e3..4c08f6290c6cf 100644 --- a/services/core/java/com/android/server/AlarmManagerService.java +++ b/services/core/java/com/android/server/AlarmManagerService.java @@ -245,8 +245,6 @@ class AlarmManagerService extends SystemService { private static final long DEFAULT_LISTENER_TIMEOUT = 5 * 1000; - private static final boolean DEFAULT_BACKGROUND_RESTRICTIONS_ENABLED = false; - // Minimum futurity of a new alarm public long MIN_FUTURITY = DEFAULT_MIN_FUTURITY; @@ -266,8 +264,6 @@ class AlarmManagerService extends SystemService { // Direct alarm listener callback timeout public long LISTENER_TIMEOUT = DEFAULT_LISTENER_TIMEOUT; - public boolean BACKGROUND_ALARMS_BLOCKED = DEFAULT_BACKGROUND_RESTRICTIONS_ENABLED; - private ContentResolver mResolver; private final KeyValueListParser mParser = new KeyValueListParser(','); private long mLastAllowWhileIdleWhitelistDuration = -1; @@ -326,21 +322,6 @@ class AlarmManagerService extends SystemService { DEFAULT_ALLOW_WHILE_IDLE_WHITELIST_DURATION); LISTENER_TIMEOUT = mParser.getLong(KEY_LISTENER_TIMEOUT, DEFAULT_LISTENER_TIMEOUT); - BACKGROUND_ALARMS_BLOCKED = mParser.getBoolean(KEY_BG_RESTRICTIONS_ENABLED, - DEFAULT_BACKGROUND_RESTRICTIONS_ENABLED); - if (!BACKGROUND_ALARMS_BLOCKED) { - // TODO: remove this code and constant when feature is turned on - // deliver all blocked alarms - final ArrayList allBlockedAlarms = new ArrayList<>(); - for (int i = mPendingBackgroundAlarms.size() - 1; i >=0; i--) { - allBlockedAlarms.addAll(mPendingBackgroundAlarms.valueAt(i)); - } - mPendingBackgroundAlarms = new SparseArray<>(); - deliverPendingBackgroundAlarmsLocked(allBlockedAlarms, - SystemClock.elapsedRealtime()); - } else if (DEBUG_BG_LIMIT) { - Slog.d(TAG, "Background limiting enabled"); - } updateAllowWhileIdleMinTimeLocked(); updateAllowWhileIdleWhitelistDurationLocked(); @@ -2392,9 +2373,6 @@ class AlarmManagerService extends SystemService { } private boolean isBackgroundRestricted(Alarm alarm) { - if (!mConstants.BACKGROUND_ALARMS_BLOCKED) { - return false; - } if (alarm.alarmClock != null) { // Don't block alarm clocks return false; diff --git a/services/core/java/com/android/server/job/JobSchedulerService.java b/services/core/java/com/android/server/job/JobSchedulerService.java index c6998d6a108cb..ac80794174260 100644 --- a/services/core/java/com/android/server/job/JobSchedulerService.java +++ b/services/core/java/com/android/server/job/JobSchedulerService.java @@ -228,7 +228,6 @@ public final class JobSchedulerService extends com.android.server.SystemService private static final String KEY_MAX_WORK_RESCHEDULE_COUNT = "max_work_reschedule_count"; private static final String KEY_MIN_LINEAR_BACKOFF_TIME = "min_linear_backoff_time"; private static final String KEY_MIN_EXP_BACKOFF_TIME = "min_exp_backoff_time"; - private static final String KEY_BG_JOBS_RESTRICTED = "bg_jobs_restricted"; private static final int DEFAULT_MIN_IDLE_COUNT = 1; private static final int DEFAULT_MIN_CHARGING_COUNT = 1; @@ -244,7 +243,6 @@ public final class JobSchedulerService extends com.android.server.SystemService private static final int DEFAULT_BG_MODERATE_JOB_COUNT = 4; private static final int DEFAULT_BG_LOW_JOB_COUNT = 1; private static final int DEFAULT_BG_CRITICAL_JOB_COUNT = 1; - private static final boolean DEFAULT_BG_JOBS_RESTRICTED = false; private static final int DEFAULT_MAX_STANDARD_RESCHEDULE_COUNT = Integer.MAX_VALUE; private static final int DEFAULT_MAX_WORK_RESCHEDULE_COUNT = Integer.MAX_VALUE; private static final long DEFAULT_MIN_LINEAR_BACKOFF_TIME = JobInfo.MIN_BACKOFF_MILLIS; @@ -338,11 +336,6 @@ public final class JobSchedulerService extends com.android.server.SystemService */ long MIN_EXP_BACKOFF_TIME = DEFAULT_MIN_EXP_BACKOFF_TIME; - /** - * Runtime switch for throttling background jobs - */ - boolean BACKGROUND_JOBS_RESTRICTED = DEFAULT_BG_JOBS_RESTRICTED; - private ContentResolver mResolver; private final KeyValueListParser mParser = new KeyValueListParser(','); @@ -421,12 +414,6 @@ public final class JobSchedulerService extends com.android.server.SystemService DEFAULT_MIN_LINEAR_BACKOFF_TIME); MIN_EXP_BACKOFF_TIME = mParser.getLong(KEY_MIN_EXP_BACKOFF_TIME, DEFAULT_MIN_EXP_BACKOFF_TIME); - final boolean bgJobsRestricted = mParser.getBoolean(KEY_BG_JOBS_RESTRICTED, - DEFAULT_BG_JOBS_RESTRICTED); - if (bgJobsRestricted != BACKGROUND_JOBS_RESTRICTED) { - mBackgroundJobsController.enableRestrictionsLocked( - BACKGROUND_JOBS_RESTRICTED = bgJobsRestricted); - } } } @@ -486,9 +473,6 @@ public final class JobSchedulerService extends com.android.server.SystemService pw.print(" "); pw.print(KEY_MIN_EXP_BACKOFF_TIME); pw.print("="); pw.print(MIN_EXP_BACKOFF_TIME); pw.println(); - - pw.print(" "); pw.print(KEY_BG_JOBS_RESTRICTED); pw.print("="); - pw.print(BACKGROUND_JOBS_RESTRICTED); pw.println(); } } diff --git a/services/core/java/com/android/server/job/controllers/BackgroundJobsController.java b/services/core/java/com/android/server/job/controllers/BackgroundJobsController.java index ec50d6dba8418..0539c022809c9 100644 --- a/services/core/java/com/android/server/job/controllers/BackgroundJobsController.java +++ b/services/core/java/com/android/server/job/controllers/BackgroundJobsController.java @@ -48,14 +48,12 @@ public final class BackgroundJobsController extends StateController { private static final Object sCreationLock = new Object(); private static volatile BackgroundJobsController sController; - /* Runtime switch to keep feature under wraps */ - private boolean mEnableSwitch; private final JobSchedulerService mJobSchedulerService; private final IAppOpsService mAppOpsService; private final IDeviceIdleController mDeviceIdleController; private final SparseBooleanArray mForegroundUids; - private int[] mPowerWhitelistedAppIds; + private int[] mPowerWhitelistedUserAppIds; private int[] mTempWhitelistedAppIds; /** * Only tracks jobs for which source package app op RUN_ANY_IN_BACKGROUND is not ALLOWED. @@ -81,7 +79,8 @@ public final class BackgroundJobsController extends StateController { try { switch (intent.getAction()) { case PowerManager.ACTION_POWER_SAVE_WHITELIST_CHANGED: - mPowerWhitelistedAppIds = mDeviceIdleController.getAppIdWhitelist(); + mPowerWhitelistedUserAppIds = + mDeviceIdleController.getAppIdUserWhitelist(); break; case PowerManager.ACTION_POWER_SAVE_TEMP_WHITELIST_CHANGED: mTempWhitelistedAppIds = mDeviceIdleController.getAppIdTempWhitelist(); @@ -110,7 +109,7 @@ public final class BackgroundJobsController extends StateController { try { mAppOpsService.startWatchingMode(AppOpsManager.OP_RUN_ANY_IN_BACKGROUND, null, new AppOpsWatcher()); - mPowerWhitelistedAppIds = mDeviceIdleController.getAppIdWhitelist(); + mPowerWhitelistedUserAppIds = mDeviceIdleController.getAppIdUserWhitelist(); mTempWhitelistedAppIds = mDeviceIdleController.getAppIdTempWhitelist(); } catch (RemoteException rexc) { // Shouldn't happen as they are in the same process. @@ -121,8 +120,6 @@ public final class BackgroundJobsController extends StateController { powerWhitelistFilter.addAction(PowerManager.ACTION_POWER_SAVE_TEMP_WHITELIST_CHANGED); context.registerReceiverAsUser(mDozeWhitelistReceiver, UserHandle.ALL, powerWhitelistFilter, null, null); - - mEnableSwitch = false; } @Override @@ -170,7 +167,6 @@ public final class BackgroundJobsController extends StateController { @Override public void dumpControllerStateLocked(final PrintWriter pw, final int filterUid) { - pw.println("Background restrictions: global switch = " + mEnableSwitch); pw.print("Foreground uids: ["); for (int i = 0; i < mForegroundUids.size(); i++) { if (mForegroundUids.valueAt(i)) pw.print(mForegroundUids.keyAt(i) + " "); @@ -206,14 +202,6 @@ public final class BackgroundJobsController extends StateController { }); } - public void enableRestrictionsLocked(boolean enable) { - mEnableSwitch = enable; - Slog.d(LOG_TAG, "Background jobs restrictions switch changed to " + mEnableSwitch); - if (checkAllTrackedJobsLocked()) { - mStateChangedListener.onControllerStateChanged(); - } - } - void startTrackingJobLocked(JobStatus jobStatus) { final int uid = jobStatus.getSourceUid(); ArraySet jobsForUid = mTrackedJobs.get(uid); @@ -255,11 +243,11 @@ public final class BackgroundJobsController extends StateController { boolean isWhitelistedLocked(int uid) { return ArrayUtils.contains(mTempWhitelistedAppIds, UserHandle.getAppId(uid)) - || ArrayUtils.contains(mPowerWhitelistedAppIds, UserHandle.getAppId(uid)); + || ArrayUtils.contains(mPowerWhitelistedUserAppIds, UserHandle.getAppId(uid)); } boolean canRunJobLocked(int uid) { - return !mEnableSwitch || mForegroundUids.get(uid) || isWhitelistedLocked(uid); + return mForegroundUids.get(uid) || isWhitelistedLocked(uid); } private final class AppOpsWatcher extends IAppOpsCallback.Stub { diff --git a/services/tests/servicestests/src/com/android/server/job/BackgroundRestrictionsTest.java b/services/tests/servicestests/src/com/android/server/job/BackgroundRestrictionsTest.java index a1d8198b27774..afe432b96f859 100644 --- a/services/tests/servicestests/src/com/android/server/job/BackgroundRestrictionsTest.java +++ b/services/tests/servicestests/src/com/android/server/job/BackgroundRestrictionsTest.java @@ -116,7 +116,6 @@ public class BackgroundRestrictionsTest { intentFilter.addAction(ACTION_JOB_STARTED); intentFilter.addAction(ACTION_JOB_STOPPED); mContext.registerReceiver(mJobStateChangeReceiver, intentFilter); - setGlobalSwitch(true); setAppOpsModeAllowed(true); setPowerWhiteListed(false); } @@ -131,16 +130,6 @@ public class BackgroundRestrictionsTest { assertTrue("Job did not start after scheduling", awaitJobStart(DEFAULT_WAIT_TIMEOUT)); } - @Test - public void testGlobalSwitch() throws Exception { - setGlobalSwitch(false); // Job should not stop now. - scheduleAndAssertJobStarted(); - setAppOpsModeAllowed(false); - mIActivityManager.makePackageIdle(TEST_APP_PACKAGE, UserHandle.USER_CURRENT); - assertFalse("Job stopped even when feature switch is off", - awaitJobStop(DEFAULT_WAIT_TIMEOUT)); - } - @Test public void testPowerWhiteList() throws Exception { scheduleAndAssertJobStarted(); @@ -163,16 +152,10 @@ public class BackgroundRestrictionsTest { cancelJobsIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); mContext.startActivity(cancelJobsIntent); mContext.unregisterReceiver(mJobStateChangeReceiver); - setGlobalSwitch(false); setAppOpsModeAllowed(true); setPowerWhiteListed(false); } - private void setGlobalSwitch(boolean enabled) { - Settings.Global.putString(mContext.getContentResolver(), - Settings.Global.JOB_SCHEDULER_CONSTANTS, "bg_jobs_restricted=" + enabled); - } - private void setPowerWhiteListed(boolean whitelist) throws RemoteException { if (whitelist) { mDeviceIdleController.addPowerSaveWhitelistApp(TEST_APP_PACKAGE);