Loading apex/jobscheduler/service/java/com/android/server/job/JobConcurrencyManager.java +17 −14 Original line number Original line Diff line number Diff line Loading @@ -509,9 +509,8 @@ class JobConcurrencyManager { public void dumpProtoLocked(ProtoOutputStream proto, long tag, long now, long nowRealtime) { public void dumpProtoLocked(ProtoOutputStream proto, long tag, long now, long nowRealtime) { final long token = proto.start(tag); final long token = proto.start(tag); proto.write(JobConcurrencyManagerProto.CURRENT_INTERACTIVE, proto.write(JobConcurrencyManagerProto.CURRENT_INTERACTIVE_STATE, mCurrentInteractiveState); mCurrentInteractiveState); proto.write(JobConcurrencyManagerProto.EFFECTIVE_INTERACTIVE_STATE, proto.write(JobConcurrencyManagerProto.EFFECTIVE_INTERACTIVE, mEffectiveInteractiveState); mEffectiveInteractiveState); proto.write(JobConcurrencyManagerProto.TIME_SINCE_LAST_SCREEN_ON_MS, proto.write(JobConcurrencyManagerProto.TIME_SINCE_LAST_SCREEN_ON_MS, Loading @@ -521,8 +520,9 @@ class JobConcurrencyManager { mJobCountTracker.dumpProto(proto, JobConcurrencyManagerProto.JOB_COUNT_TRACKER); mJobCountTracker.dumpProto(proto, JobConcurrencyManagerProto.JOB_COUNT_TRACKER); proto.write(JobConcurrencyManagerProto.MEMORY_TRIM_LEVEL, proto.write(JobConcurrencyManagerProto.MEMORY_TRIM_LEVEL, mLastMemoryTrimLevel); mLastMemoryTrimLevel); mStatLogger.dumpProto(proto, JobConcurrencyManagerProto.STATS); proto.end(token); proto.end(token); } } Loading Loading @@ -676,19 +676,14 @@ class JobConcurrencyManager { + " Res BG: %d" + " Res BG: %d" + " Starting: %d / %d (%d)" + " Starting: %d / %d (%d)" + " Total: %d%s / %d%s (%d%s)", + " Total: %d%s / %d%s (%d%s)", mConfigNumMaxTotalJobs, mConfigNumMaxTotalJobs, mConfigNumMinBgJobs, mConfigNumMaxBgJobs, mConfigNumMinBgJobs, mConfigNumMaxBgJobs, mNumRunningFgJobs, mNumRunningBgJobs, mNumRunningFgJobs, mNumRunningBgJobs, mNumRunningFgJobs + mNumRunningBgJobs, mNumRunningFgJobs + mNumRunningBgJobs, mNumPendingFgJobs, mNumPendingBgJobs, mNumPendingFgJobs, mNumPendingBgJobs, mNumPendingFgJobs + mNumPendingBgJobs, mNumPendingFgJobs + mNumPendingBgJobs, mNumActualMaxFgJobs, (totalFg <= mConfigNumMaxTotalJobs) ? "" : "*", mNumActualMaxFgJobs, (totalFg <= mConfigNumMaxTotalJobs) ? "" : "*", mNumActualMaxBgJobs, (totalBg <= mConfigNumMaxBgJobs) ? "" : "*", mNumActualMaxBgJobs, (totalBg <= mConfigNumMaxBgJobs) ? "" : "*", mNumActualMaxFgJobs + mNumActualMaxBgJobs, mNumActualMaxFgJobs + mNumActualMaxBgJobs, (mNumActualMaxFgJobs + mNumActualMaxBgJobs <= mConfigNumMaxTotalJobs) (mNumActualMaxFgJobs + mNumActualMaxBgJobs <= mConfigNumMaxTotalJobs) ? "" : "*", ? "" : "*", Loading Loading @@ -716,6 +711,14 @@ class JobConcurrencyManager { proto.write(JobCountTrackerProto.NUM_PENDING_FG_JOBS, mNumPendingFgJobs); proto.write(JobCountTrackerProto.NUM_PENDING_FG_JOBS, mNumPendingFgJobs); proto.write(JobCountTrackerProto.NUM_PENDING_BG_JOBS, mNumPendingBgJobs); proto.write(JobCountTrackerProto.NUM_PENDING_BG_JOBS, mNumPendingBgJobs); proto.write(JobCountTrackerProto.NUM_ACTUAL_MAX_FG_JOBS, mNumActualMaxFgJobs); proto.write(JobCountTrackerProto.NUM_ACTUAL_MAX_BG_JOBS, mNumActualMaxBgJobs); proto.write(JobCountTrackerProto.NUM_RESERVED_FOR_BG, mNumReservedForBg); proto.write(JobCountTrackerProto.NUM_STARTING_FG_JOBS, mNumStartingFgJobs); proto.write(JobCountTrackerProto.NUM_STARTING_BG_JOBS, mNumStartingBgJobs); proto.end(token); proto.end(token); } } } } Loading apex/jobscheduler/service/java/com/android/server/job/JobSchedulerService.java +15 −22 Original line number Original line Diff line number Diff line Loading @@ -3011,6 +3011,8 @@ public class JobSchedulerService extends com.android.server.SystemService pw.print(job.isReady()); pw.print(job.isReady()); pw.print(" user="); pw.print(" user="); pw.print(areUsersStartedLocked(job)); pw.print(areUsersStartedLocked(job)); pw.print(" !thermal="); pw.print(!isJobThermalConstrainedLocked(job)); pw.print(" !pending="); pw.print(" !pending="); pw.print(!mPendingJobs.contains(job)); pw.print(!mPendingJobs.contains(job)); pw.print(" !active="); pw.print(" !active="); Loading @@ -3018,15 +3020,7 @@ public class JobSchedulerService extends com.android.server.SystemService pw.print(" !backingup="); pw.print(" !backingup="); pw.print(!(mBackingUpUids.indexOfKey(job.getSourceUid()) >= 0)); pw.print(!(mBackingUpUids.indexOfKey(job.getSourceUid()) >= 0)); pw.print(" comp="); pw.print(" comp="); boolean componentPresent = false; pw.print(isComponentUsable(job)); try { componentPresent = (AppGlobals.getPackageManager().getServiceInfo( job.getServiceComponent(), PackageManager.MATCH_DEBUG_TRIAGED_MISSING, job.getUserId()) != null); } catch (RemoteException e) { } pw.print(componentPresent); pw.println(")"); pw.println(")"); } } } else { } else { Loading Loading @@ -3177,27 +3171,24 @@ public class JobSchedulerService extends com.android.server.SystemService job.dump(proto, JobSchedulerServiceDumpProto.RegisteredJob.DUMP, true, nowElapsed); job.dump(proto, JobSchedulerServiceDumpProto.RegisteredJob.DUMP, true, nowElapsed); // isReadyToBeExecuted proto.write( JobSchedulerServiceDumpProto.RegisteredJob.IS_JOB_READY_TO_BE_EXECUTED, isReadyToBeExecutedLocked(job)); proto.write(JobSchedulerServiceDumpProto.RegisteredJob.IS_JOB_READY, proto.write(JobSchedulerServiceDumpProto.RegisteredJob.IS_JOB_READY, job.isReady()); job.isReady()); proto.write(JobSchedulerServiceDumpProto.RegisteredJob.IS_USER_STARTED, proto.write(JobSchedulerServiceDumpProto.RegisteredJob.ARE_USERS_STARTED, areUsersStartedLocked(job)); areUsersStartedLocked(job)); proto.write( JobSchedulerServiceDumpProto.RegisteredJob.IS_JOB_THERMAL_CONSTRAINED, isJobThermalConstrainedLocked(job)); proto.write(JobSchedulerServiceDumpProto.RegisteredJob.IS_JOB_PENDING, proto.write(JobSchedulerServiceDumpProto.RegisteredJob.IS_JOB_PENDING, mPendingJobs.contains(job)); mPendingJobs.contains(job)); proto.write(JobSchedulerServiceDumpProto.RegisteredJob.IS_JOB_CURRENTLY_ACTIVE, proto.write(JobSchedulerServiceDumpProto.RegisteredJob.IS_JOB_CURRENTLY_ACTIVE, isCurrentlyActiveLocked(job)); isCurrentlyActiveLocked(job)); proto.write(JobSchedulerServiceDumpProto.RegisteredJob.IS_UID_BACKING_UP, proto.write(JobSchedulerServiceDumpProto.RegisteredJob.IS_UID_BACKING_UP, mBackingUpUids.indexOfKey(job.getSourceUid()) >= 0); mBackingUpUids.indexOfKey(job.getSourceUid()) >= 0); boolean componentPresent = false; proto.write(JobSchedulerServiceDumpProto.RegisteredJob.IS_COMPONENT_USABLE, try { isComponentUsable(job)); componentPresent = (AppGlobals.getPackageManager().getServiceInfo( job.getServiceComponent(), PackageManager.MATCH_DEBUG_TRIAGED_MISSING, job.getUserId()) != null); } catch (RemoteException e) { } proto.write(JobSchedulerServiceDumpProto.RegisteredJob.IS_COMPONENT_PRESENT, componentPresent); proto.end(rjToken); proto.end(rjToken); } } Loading Loading @@ -3234,7 +3225,7 @@ public class JobSchedulerService extends com.android.server.SystemService job.writeToShortProto(proto, PendingJob.INFO); job.writeToShortProto(proto, PendingJob.INFO); job.dump(proto, PendingJob.DUMP, false, nowElapsed); job.dump(proto, PendingJob.DUMP, false, nowElapsed); proto.write(PendingJob.EVALUATED_PRIORITY, evaluateJobPriorityLocked(job)); proto.write(PendingJob.EVALUATED_PRIORITY, evaluateJobPriorityLocked(job)); proto.write(PendingJob.ENQUEUED_DURATION_MS, nowUptime - job.madePending); proto.write(PendingJob.PENDING_DURATION_MS, nowUptime - job.madePending); proto.end(pjToken); proto.end(pjToken); } } Loading Loading @@ -3283,6 +3274,8 @@ public class JobSchedulerService extends com.android.server.SystemService } } mConcurrencyManager.dumpProtoLocked(proto, mConcurrencyManager.dumpProtoLocked(proto, JobSchedulerServiceDumpProto.CONCURRENCY_MANAGER, now, nowElapsed); JobSchedulerServiceDumpProto.CONCURRENCY_MANAGER, now, nowElapsed); mJobs.getPersistStats().writeToProto(proto, JobSchedulerServiceDumpProto.PERSIST_STATS); } } proto.flush(); proto.flush(); Loading apex/jobscheduler/service/java/com/android/server/job/controllers/BackgroundJobsController.java +6 −11 Original line number Original line Diff line number Diff line Loading @@ -115,32 +115,27 @@ public final class BackgroundJobsController extends StateController { final long mToken = proto.start(StateControllerProto.BACKGROUND); final long mToken = proto.start(StateControllerProto.BACKGROUND); mAppStateTracker.dumpProto(proto, mAppStateTracker.dumpProto(proto, StateControllerProto.BackgroundJobsController.FORCE_APP_STANDBY_TRACKER); StateControllerProto.BackgroundJobsController.APP_STATE_TRACKER); mService.getJobStore().forEachJob(predicate, (jobStatus) -> { mService.getJobStore().forEachJob(predicate, (jobStatus) -> { final long jsToken = final long jsToken = proto.start(StateControllerProto.BackgroundJobsController.TRACKED_JOBS); proto.start(StateControllerProto.BackgroundJobsController.TRACKED_JOBS); jobStatus.writeToShortProto(proto, jobStatus.writeToShortProto(proto, TrackedJob.INFO); TrackedJob.INFO); final int sourceUid = jobStatus.getSourceUid(); final int sourceUid = jobStatus.getSourceUid(); proto.write(TrackedJob.SOURCE_UID, sourceUid); proto.write(TrackedJob.SOURCE_UID, sourceUid); final String sourcePkg = jobStatus.getSourcePackageName(); final String sourcePkg = jobStatus.getSourcePackageName(); proto.write(TrackedJob.SOURCE_PACKAGE_NAME, sourcePkg); proto.write(TrackedJob.SOURCE_PACKAGE_NAME, sourcePkg); proto.write(TrackedJob.IS_IN_FOREGROUND, proto.write(TrackedJob.IS_IN_FOREGROUND, mAppStateTracker.isUidActive(sourceUid)); mAppStateTracker.isUidActive(sourceUid)); proto.write(TrackedJob.IS_WHITELISTED, proto.write(TrackedJob.IS_WHITELISTED, mAppStateTracker.isUidPowerSaveWhitelisted(sourceUid) || mAppStateTracker.isUidPowerSaveWhitelisted(sourceUid) || mAppStateTracker.isUidTempPowerSaveWhitelisted(sourceUid)); mAppStateTracker.isUidTempPowerSaveWhitelisted(sourceUid)); proto.write( proto.write(TrackedJob.CAN_RUN_ANY_IN_BACKGROUND, TrackedJob.CAN_RUN_ANY_IN_BACKGROUND, mAppStateTracker.isRunAnyInBackgroundAppOpsAllowed(sourceUid, sourcePkg)); mAppStateTracker.isRunAnyInBackgroundAppOpsAllowed( sourceUid, sourcePkg)); proto.write( proto.write(TrackedJob.ARE_CONSTRAINTS_SATISFIED, TrackedJob.ARE_CONSTRAINTS_SATISFIED, (jobStatus.satisfiedConstraints & (jobStatus.satisfiedConstraints & JobStatus.CONSTRAINT_BACKGROUND_NOT_RESTRICTED) != 0); JobStatus.CONSTRAINT_BACKGROUND_NOT_RESTRICTED) != 0); Loading apex/jobscheduler/service/java/com/android/server/job/controllers/ConnectivityController.java +12 −0 Original line number Original line Diff line number Diff line Loading @@ -631,6 +631,18 @@ public final class ConnectivityController extends StateController implements final long token = proto.start(fieldId); final long token = proto.start(fieldId); final long mToken = proto.start(StateControllerProto.CONNECTIVITY); final long mToken = proto.start(StateControllerProto.CONNECTIVITY); for (int i = 0; i < mRequestedWhitelistJobs.size(); i++) { proto.write( StateControllerProto.ConnectivityController.REQUESTED_STANDBY_EXCEPTION_UIDS, mRequestedWhitelistJobs.keyAt(i)); } for (int i = 0; i < mAvailableNetworks.size(); i++) { Network network = mAvailableNetworks.valueAt(i); if (network != null) { network.writeToProto(proto, StateControllerProto.ConnectivityController.AVAILABLE_NETWORKS); } } for (int i = 0; i < mTrackedJobs.size(); i++) { for (int i = 0; i < mTrackedJobs.size(); i++) { final ArraySet<JobStatus> jobs = mTrackedJobs.valueAt(i); final ArraySet<JobStatus> jobs = mTrackedJobs.valueAt(i); for (int j = 0; j < jobs.size(); j++) { for (int j = 0; j < jobs.size(); j++) { Loading apex/jobscheduler/service/java/com/android/server/job/controllers/DeviceIdleJobsController.java +1 −2 Original line number Original line Diff line number Diff line Loading @@ -269,8 +269,7 @@ public final class DeviceIdleJobsController extends StateController { proto.write(TrackedJob.SOURCE_UID, jobStatus.getSourceUid()); proto.write(TrackedJob.SOURCE_UID, jobStatus.getSourceUid()); proto.write(TrackedJob.SOURCE_PACKAGE_NAME, jobStatus.getSourcePackageName()); proto.write(TrackedJob.SOURCE_PACKAGE_NAME, jobStatus.getSourcePackageName()); proto.write(TrackedJob.ARE_CONSTRAINTS_SATISFIED, proto.write(TrackedJob.ARE_CONSTRAINTS_SATISFIED, (jobStatus.satisfiedConstraints & (jobStatus.satisfiedConstraints & JobStatus.CONSTRAINT_DEVICE_NOT_DOZING) != 0); JobStatus.CONSTRAINT_DEVICE_NOT_DOZING) != 0); proto.write(TrackedJob.IS_DOZE_WHITELISTED, jobStatus.dozeWhitelisted); proto.write(TrackedJob.IS_DOZE_WHITELISTED, jobStatus.dozeWhitelisted); proto.write(TrackedJob.IS_ALLOWED_IN_DOZE, mAllowInIdleJobs.contains(jobStatus)); proto.write(TrackedJob.IS_ALLOWED_IN_DOZE, mAllowInIdleJobs.contains(jobStatus)); Loading Loading
apex/jobscheduler/service/java/com/android/server/job/JobConcurrencyManager.java +17 −14 Original line number Original line Diff line number Diff line Loading @@ -509,9 +509,8 @@ class JobConcurrencyManager { public void dumpProtoLocked(ProtoOutputStream proto, long tag, long now, long nowRealtime) { public void dumpProtoLocked(ProtoOutputStream proto, long tag, long now, long nowRealtime) { final long token = proto.start(tag); final long token = proto.start(tag); proto.write(JobConcurrencyManagerProto.CURRENT_INTERACTIVE, proto.write(JobConcurrencyManagerProto.CURRENT_INTERACTIVE_STATE, mCurrentInteractiveState); mCurrentInteractiveState); proto.write(JobConcurrencyManagerProto.EFFECTIVE_INTERACTIVE_STATE, proto.write(JobConcurrencyManagerProto.EFFECTIVE_INTERACTIVE, mEffectiveInteractiveState); mEffectiveInteractiveState); proto.write(JobConcurrencyManagerProto.TIME_SINCE_LAST_SCREEN_ON_MS, proto.write(JobConcurrencyManagerProto.TIME_SINCE_LAST_SCREEN_ON_MS, Loading @@ -521,8 +520,9 @@ class JobConcurrencyManager { mJobCountTracker.dumpProto(proto, JobConcurrencyManagerProto.JOB_COUNT_TRACKER); mJobCountTracker.dumpProto(proto, JobConcurrencyManagerProto.JOB_COUNT_TRACKER); proto.write(JobConcurrencyManagerProto.MEMORY_TRIM_LEVEL, proto.write(JobConcurrencyManagerProto.MEMORY_TRIM_LEVEL, mLastMemoryTrimLevel); mLastMemoryTrimLevel); mStatLogger.dumpProto(proto, JobConcurrencyManagerProto.STATS); proto.end(token); proto.end(token); } } Loading Loading @@ -676,19 +676,14 @@ class JobConcurrencyManager { + " Res BG: %d" + " Res BG: %d" + " Starting: %d / %d (%d)" + " Starting: %d / %d (%d)" + " Total: %d%s / %d%s (%d%s)", + " Total: %d%s / %d%s (%d%s)", mConfigNumMaxTotalJobs, mConfigNumMaxTotalJobs, mConfigNumMinBgJobs, mConfigNumMaxBgJobs, mConfigNumMinBgJobs, mConfigNumMaxBgJobs, mNumRunningFgJobs, mNumRunningBgJobs, mNumRunningFgJobs, mNumRunningBgJobs, mNumRunningFgJobs + mNumRunningBgJobs, mNumRunningFgJobs + mNumRunningBgJobs, mNumPendingFgJobs, mNumPendingBgJobs, mNumPendingFgJobs, mNumPendingBgJobs, mNumPendingFgJobs + mNumPendingBgJobs, mNumPendingFgJobs + mNumPendingBgJobs, mNumActualMaxFgJobs, (totalFg <= mConfigNumMaxTotalJobs) ? "" : "*", mNumActualMaxFgJobs, (totalFg <= mConfigNumMaxTotalJobs) ? "" : "*", mNumActualMaxBgJobs, (totalBg <= mConfigNumMaxBgJobs) ? "" : "*", mNumActualMaxBgJobs, (totalBg <= mConfigNumMaxBgJobs) ? "" : "*", mNumActualMaxFgJobs + mNumActualMaxBgJobs, mNumActualMaxFgJobs + mNumActualMaxBgJobs, (mNumActualMaxFgJobs + mNumActualMaxBgJobs <= mConfigNumMaxTotalJobs) (mNumActualMaxFgJobs + mNumActualMaxBgJobs <= mConfigNumMaxTotalJobs) ? "" : "*", ? "" : "*", Loading Loading @@ -716,6 +711,14 @@ class JobConcurrencyManager { proto.write(JobCountTrackerProto.NUM_PENDING_FG_JOBS, mNumPendingFgJobs); proto.write(JobCountTrackerProto.NUM_PENDING_FG_JOBS, mNumPendingFgJobs); proto.write(JobCountTrackerProto.NUM_PENDING_BG_JOBS, mNumPendingBgJobs); proto.write(JobCountTrackerProto.NUM_PENDING_BG_JOBS, mNumPendingBgJobs); proto.write(JobCountTrackerProto.NUM_ACTUAL_MAX_FG_JOBS, mNumActualMaxFgJobs); proto.write(JobCountTrackerProto.NUM_ACTUAL_MAX_BG_JOBS, mNumActualMaxBgJobs); proto.write(JobCountTrackerProto.NUM_RESERVED_FOR_BG, mNumReservedForBg); proto.write(JobCountTrackerProto.NUM_STARTING_FG_JOBS, mNumStartingFgJobs); proto.write(JobCountTrackerProto.NUM_STARTING_BG_JOBS, mNumStartingBgJobs); proto.end(token); proto.end(token); } } } } Loading
apex/jobscheduler/service/java/com/android/server/job/JobSchedulerService.java +15 −22 Original line number Original line Diff line number Diff line Loading @@ -3011,6 +3011,8 @@ public class JobSchedulerService extends com.android.server.SystemService pw.print(job.isReady()); pw.print(job.isReady()); pw.print(" user="); pw.print(" user="); pw.print(areUsersStartedLocked(job)); pw.print(areUsersStartedLocked(job)); pw.print(" !thermal="); pw.print(!isJobThermalConstrainedLocked(job)); pw.print(" !pending="); pw.print(" !pending="); pw.print(!mPendingJobs.contains(job)); pw.print(!mPendingJobs.contains(job)); pw.print(" !active="); pw.print(" !active="); Loading @@ -3018,15 +3020,7 @@ public class JobSchedulerService extends com.android.server.SystemService pw.print(" !backingup="); pw.print(" !backingup="); pw.print(!(mBackingUpUids.indexOfKey(job.getSourceUid()) >= 0)); pw.print(!(mBackingUpUids.indexOfKey(job.getSourceUid()) >= 0)); pw.print(" comp="); pw.print(" comp="); boolean componentPresent = false; pw.print(isComponentUsable(job)); try { componentPresent = (AppGlobals.getPackageManager().getServiceInfo( job.getServiceComponent(), PackageManager.MATCH_DEBUG_TRIAGED_MISSING, job.getUserId()) != null); } catch (RemoteException e) { } pw.print(componentPresent); pw.println(")"); pw.println(")"); } } } else { } else { Loading Loading @@ -3177,27 +3171,24 @@ public class JobSchedulerService extends com.android.server.SystemService job.dump(proto, JobSchedulerServiceDumpProto.RegisteredJob.DUMP, true, nowElapsed); job.dump(proto, JobSchedulerServiceDumpProto.RegisteredJob.DUMP, true, nowElapsed); // isReadyToBeExecuted proto.write( JobSchedulerServiceDumpProto.RegisteredJob.IS_JOB_READY_TO_BE_EXECUTED, isReadyToBeExecutedLocked(job)); proto.write(JobSchedulerServiceDumpProto.RegisteredJob.IS_JOB_READY, proto.write(JobSchedulerServiceDumpProto.RegisteredJob.IS_JOB_READY, job.isReady()); job.isReady()); proto.write(JobSchedulerServiceDumpProto.RegisteredJob.IS_USER_STARTED, proto.write(JobSchedulerServiceDumpProto.RegisteredJob.ARE_USERS_STARTED, areUsersStartedLocked(job)); areUsersStartedLocked(job)); proto.write( JobSchedulerServiceDumpProto.RegisteredJob.IS_JOB_THERMAL_CONSTRAINED, isJobThermalConstrainedLocked(job)); proto.write(JobSchedulerServiceDumpProto.RegisteredJob.IS_JOB_PENDING, proto.write(JobSchedulerServiceDumpProto.RegisteredJob.IS_JOB_PENDING, mPendingJobs.contains(job)); mPendingJobs.contains(job)); proto.write(JobSchedulerServiceDumpProto.RegisteredJob.IS_JOB_CURRENTLY_ACTIVE, proto.write(JobSchedulerServiceDumpProto.RegisteredJob.IS_JOB_CURRENTLY_ACTIVE, isCurrentlyActiveLocked(job)); isCurrentlyActiveLocked(job)); proto.write(JobSchedulerServiceDumpProto.RegisteredJob.IS_UID_BACKING_UP, proto.write(JobSchedulerServiceDumpProto.RegisteredJob.IS_UID_BACKING_UP, mBackingUpUids.indexOfKey(job.getSourceUid()) >= 0); mBackingUpUids.indexOfKey(job.getSourceUid()) >= 0); boolean componentPresent = false; proto.write(JobSchedulerServiceDumpProto.RegisteredJob.IS_COMPONENT_USABLE, try { isComponentUsable(job)); componentPresent = (AppGlobals.getPackageManager().getServiceInfo( job.getServiceComponent(), PackageManager.MATCH_DEBUG_TRIAGED_MISSING, job.getUserId()) != null); } catch (RemoteException e) { } proto.write(JobSchedulerServiceDumpProto.RegisteredJob.IS_COMPONENT_PRESENT, componentPresent); proto.end(rjToken); proto.end(rjToken); } } Loading Loading @@ -3234,7 +3225,7 @@ public class JobSchedulerService extends com.android.server.SystemService job.writeToShortProto(proto, PendingJob.INFO); job.writeToShortProto(proto, PendingJob.INFO); job.dump(proto, PendingJob.DUMP, false, nowElapsed); job.dump(proto, PendingJob.DUMP, false, nowElapsed); proto.write(PendingJob.EVALUATED_PRIORITY, evaluateJobPriorityLocked(job)); proto.write(PendingJob.EVALUATED_PRIORITY, evaluateJobPriorityLocked(job)); proto.write(PendingJob.ENQUEUED_DURATION_MS, nowUptime - job.madePending); proto.write(PendingJob.PENDING_DURATION_MS, nowUptime - job.madePending); proto.end(pjToken); proto.end(pjToken); } } Loading Loading @@ -3283,6 +3274,8 @@ public class JobSchedulerService extends com.android.server.SystemService } } mConcurrencyManager.dumpProtoLocked(proto, mConcurrencyManager.dumpProtoLocked(proto, JobSchedulerServiceDumpProto.CONCURRENCY_MANAGER, now, nowElapsed); JobSchedulerServiceDumpProto.CONCURRENCY_MANAGER, now, nowElapsed); mJobs.getPersistStats().writeToProto(proto, JobSchedulerServiceDumpProto.PERSIST_STATS); } } proto.flush(); proto.flush(); Loading
apex/jobscheduler/service/java/com/android/server/job/controllers/BackgroundJobsController.java +6 −11 Original line number Original line Diff line number Diff line Loading @@ -115,32 +115,27 @@ public final class BackgroundJobsController extends StateController { final long mToken = proto.start(StateControllerProto.BACKGROUND); final long mToken = proto.start(StateControllerProto.BACKGROUND); mAppStateTracker.dumpProto(proto, mAppStateTracker.dumpProto(proto, StateControllerProto.BackgroundJobsController.FORCE_APP_STANDBY_TRACKER); StateControllerProto.BackgroundJobsController.APP_STATE_TRACKER); mService.getJobStore().forEachJob(predicate, (jobStatus) -> { mService.getJobStore().forEachJob(predicate, (jobStatus) -> { final long jsToken = final long jsToken = proto.start(StateControllerProto.BackgroundJobsController.TRACKED_JOBS); proto.start(StateControllerProto.BackgroundJobsController.TRACKED_JOBS); jobStatus.writeToShortProto(proto, jobStatus.writeToShortProto(proto, TrackedJob.INFO); TrackedJob.INFO); final int sourceUid = jobStatus.getSourceUid(); final int sourceUid = jobStatus.getSourceUid(); proto.write(TrackedJob.SOURCE_UID, sourceUid); proto.write(TrackedJob.SOURCE_UID, sourceUid); final String sourcePkg = jobStatus.getSourcePackageName(); final String sourcePkg = jobStatus.getSourcePackageName(); proto.write(TrackedJob.SOURCE_PACKAGE_NAME, sourcePkg); proto.write(TrackedJob.SOURCE_PACKAGE_NAME, sourcePkg); proto.write(TrackedJob.IS_IN_FOREGROUND, proto.write(TrackedJob.IS_IN_FOREGROUND, mAppStateTracker.isUidActive(sourceUid)); mAppStateTracker.isUidActive(sourceUid)); proto.write(TrackedJob.IS_WHITELISTED, proto.write(TrackedJob.IS_WHITELISTED, mAppStateTracker.isUidPowerSaveWhitelisted(sourceUid) || mAppStateTracker.isUidPowerSaveWhitelisted(sourceUid) || mAppStateTracker.isUidTempPowerSaveWhitelisted(sourceUid)); mAppStateTracker.isUidTempPowerSaveWhitelisted(sourceUid)); proto.write( proto.write(TrackedJob.CAN_RUN_ANY_IN_BACKGROUND, TrackedJob.CAN_RUN_ANY_IN_BACKGROUND, mAppStateTracker.isRunAnyInBackgroundAppOpsAllowed(sourceUid, sourcePkg)); mAppStateTracker.isRunAnyInBackgroundAppOpsAllowed( sourceUid, sourcePkg)); proto.write( proto.write(TrackedJob.ARE_CONSTRAINTS_SATISFIED, TrackedJob.ARE_CONSTRAINTS_SATISFIED, (jobStatus.satisfiedConstraints & (jobStatus.satisfiedConstraints & JobStatus.CONSTRAINT_BACKGROUND_NOT_RESTRICTED) != 0); JobStatus.CONSTRAINT_BACKGROUND_NOT_RESTRICTED) != 0); Loading
apex/jobscheduler/service/java/com/android/server/job/controllers/ConnectivityController.java +12 −0 Original line number Original line Diff line number Diff line Loading @@ -631,6 +631,18 @@ public final class ConnectivityController extends StateController implements final long token = proto.start(fieldId); final long token = proto.start(fieldId); final long mToken = proto.start(StateControllerProto.CONNECTIVITY); final long mToken = proto.start(StateControllerProto.CONNECTIVITY); for (int i = 0; i < mRequestedWhitelistJobs.size(); i++) { proto.write( StateControllerProto.ConnectivityController.REQUESTED_STANDBY_EXCEPTION_UIDS, mRequestedWhitelistJobs.keyAt(i)); } for (int i = 0; i < mAvailableNetworks.size(); i++) { Network network = mAvailableNetworks.valueAt(i); if (network != null) { network.writeToProto(proto, StateControllerProto.ConnectivityController.AVAILABLE_NETWORKS); } } for (int i = 0; i < mTrackedJobs.size(); i++) { for (int i = 0; i < mTrackedJobs.size(); i++) { final ArraySet<JobStatus> jobs = mTrackedJobs.valueAt(i); final ArraySet<JobStatus> jobs = mTrackedJobs.valueAt(i); for (int j = 0; j < jobs.size(); j++) { for (int j = 0; j < jobs.size(); j++) { Loading
apex/jobscheduler/service/java/com/android/server/job/controllers/DeviceIdleJobsController.java +1 −2 Original line number Original line Diff line number Diff line Loading @@ -269,8 +269,7 @@ public final class DeviceIdleJobsController extends StateController { proto.write(TrackedJob.SOURCE_UID, jobStatus.getSourceUid()); proto.write(TrackedJob.SOURCE_UID, jobStatus.getSourceUid()); proto.write(TrackedJob.SOURCE_PACKAGE_NAME, jobStatus.getSourcePackageName()); proto.write(TrackedJob.SOURCE_PACKAGE_NAME, jobStatus.getSourcePackageName()); proto.write(TrackedJob.ARE_CONSTRAINTS_SATISFIED, proto.write(TrackedJob.ARE_CONSTRAINTS_SATISFIED, (jobStatus.satisfiedConstraints & (jobStatus.satisfiedConstraints & JobStatus.CONSTRAINT_DEVICE_NOT_DOZING) != 0); JobStatus.CONSTRAINT_DEVICE_NOT_DOZING) != 0); proto.write(TrackedJob.IS_DOZE_WHITELISTED, jobStatus.dozeWhitelisted); proto.write(TrackedJob.IS_DOZE_WHITELISTED, jobStatus.dozeWhitelisted); proto.write(TrackedJob.IS_ALLOWED_IN_DOZE, mAllowInIdleJobs.contains(jobStatus)); proto.write(TrackedJob.IS_ALLOWED_IN_DOZE, mAllowInIdleJobs.contains(jobStatus)); Loading