diff options
| author | 2018-12-15 01:44:29 +0000 | |
|---|---|---|
| committer | 2018-12-15 01:44:29 +0000 | |
| commit | d14452bb64530be852b167a8172892dac38dcf6d (patch) | |
| tree | 73942abab72cabba810e01dc2402dd8aa7e3046c | |
| parent | 72ea8b20a43405ad0b91edf774e03124e2d22f73 (diff) | |
| parent | 8bd5edc4d60558443d9bf8464392f0af0ff10c42 (diff) | |
Merge "Checking a job's source user id to determine readiness."
| -rw-r--r-- | services/core/java/com/android/server/job/JobSchedulerService.java | 24 |
1 files changed, 17 insertions, 7 deletions
diff --git a/services/core/java/com/android/server/job/JobSchedulerService.java b/services/core/java/com/android/server/job/JobSchedulerService.java index 1325f049e737..f86cbfa933ba 100644 --- a/services/core/java/com/android/server/job/JobSchedulerService.java +++ b/services/core/java/com/android/server/job/JobSchedulerService.java @@ -954,7 +954,9 @@ public class JobSchedulerService extends com.android.server.SystemService @Override public void onStartUser(int userHandle) { - mStartedUsers = ArrayUtils.appendInt(mStartedUsers, userHandle); + synchronized (mLock) { + mStartedUsers = ArrayUtils.appendInt(mStartedUsers, userHandle); + } // Let's kick any outstanding jobs for this user. mHandler.obtainMessage(MSG_CHECK_JOB).sendToTarget(); } @@ -967,7 +969,9 @@ public class JobSchedulerService extends com.android.server.SystemService @Override public void onStopUser(int userHandle) { - mStartedUsers = ArrayUtils.removeInt(mStartedUsers, userHandle); + synchronized (mLock) { + mStartedUsers = ArrayUtils.removeInt(mStartedUsers, userHandle); + } } /** @@ -2150,8 +2154,7 @@ public class JobSchedulerService extends com.android.server.SystemService final boolean jobExists = mJobs.containsJob(job); - final int userId = job.getUserId(); - final boolean userStarted = ArrayUtils.contains(mStartedUsers, userId); + final boolean userStarted = areUsersStartedLocked(job); if (DEBUG) { Slog.v(TAG, "isReadyToBeExecutedLocked: " + job.toShortString() @@ -2239,7 +2242,7 @@ public class JobSchedulerService extends com.android.server.SystemService try { componentPresent = (AppGlobals.getPackageManager().getServiceInfo( job.getServiceComponent(), PackageManager.MATCH_DEBUG_TRIAGED_MISSING, - userId) != null); + job.getUserId()) != null); } catch (RemoteException e) { throw e.rethrowAsRuntimeException(); } @@ -3052,6 +3055,13 @@ public class JobSchedulerService extends com.android.server.SystemService printed = true; pw.println("user-stopped"); } + if (!ArrayUtils.contains(mStartedUsers, js.getSourceUserId())) { + if (printed) { + pw.print(" "); + } + printed = true; + pw.println("source-user-stopped"); + } if (mBackingUpUids.indexOfKey(js.getSourceUid()) >= 0) { if (printed) { pw.print(" "); @@ -3203,7 +3213,7 @@ public class JobSchedulerService extends com.android.server.SystemService pw.print(" (job="); pw.print(job.isReady()); pw.print(" user="); - pw.print(ArrayUtils.contains(mStartedUsers, job.getUserId())); + pw.print(areUsersStartedLocked(job)); pw.print(" !pending="); pw.print(!mPendingJobs.contains(job)); pw.print(" !active="); @@ -3373,7 +3383,7 @@ public class JobSchedulerService extends com.android.server.SystemService proto.write(JobSchedulerServiceDumpProto.RegisteredJob.IS_JOB_READY, job.isReady()); proto.write(JobSchedulerServiceDumpProto.RegisteredJob.IS_USER_STARTED, - ArrayUtils.contains(mStartedUsers, job.getUserId())); + areUsersStartedLocked(job)); proto.write(JobSchedulerServiceDumpProto.RegisteredJob.IS_JOB_PENDING, mPendingJobs.contains(job)); proto.write(JobSchedulerServiceDumpProto.RegisteredJob.IS_JOB_CURRENTLY_ACTIVE, |