Merge "Rename JobStatus.shouldTreatAsUserInitiated for consistency."
This commit is contained in:
committed by
Android (Google) Code Review
commit
eda6de13aa
@@ -1114,7 +1114,7 @@ class JobConcurrencyManager {
|
||||
// reasonably concurrency behavior.
|
||||
return job.lastEvaluatedBias == JobInfo.BIAS_TOP_APP
|
||||
// TODO(): include BAL state for user-initiated jobs
|
||||
&& (job.shouldTreatAsExpeditedJob() || job.shouldTreatAsUserInitiated());
|
||||
&& (job.shouldTreatAsExpeditedJob() || job.shouldTreatAsUserInitiatedJob());
|
||||
}
|
||||
|
||||
@GuardedBy("mLock")
|
||||
|
||||
@@ -2851,7 +2851,7 @@ public class JobSchedulerService extends com.android.server.SystemService
|
||||
}
|
||||
|
||||
final boolean shouldForceBatchJob;
|
||||
if (job.shouldTreatAsExpeditedJob() || job.shouldTreatAsUserInitiated()) {
|
||||
if (job.shouldTreatAsExpeditedJob() || job.shouldTreatAsUserInitiatedJob()) {
|
||||
// Never batch expedited or user-initiated jobs, even for RESTRICTED apps.
|
||||
shouldForceBatchJob = false;
|
||||
} else if (job.getEffectiveStandbyBucket() == RESTRICTED_INDEX) {
|
||||
@@ -3176,7 +3176,7 @@ public class JobSchedulerService extends com.android.server.SystemService
|
||||
synchronized (mLock) {
|
||||
final boolean shouldTreatAsDataTransfer = job.getJob().isDataTransfer()
|
||||
&& checkRunLongJobsPermission(job.getSourceUid(), job.getSourcePackageName());
|
||||
if (job.shouldTreatAsUserInitiated()) {
|
||||
if (job.shouldTreatAsUserInitiatedJob()) {
|
||||
if (shouldTreatAsDataTransfer) {
|
||||
final long estimatedTransferTimeMs =
|
||||
mConnectivityController.getEstimatedTransferTimeMs(job);
|
||||
@@ -3215,13 +3215,13 @@ public class JobSchedulerService extends com.android.server.SystemService
|
||||
synchronized (mLock) {
|
||||
final boolean allowLongerJob;
|
||||
final boolean isDataTransfer = job.getJob().isDataTransfer();
|
||||
if (isDataTransfer || job.shouldTreatAsUserInitiated()) {
|
||||
if (isDataTransfer || job.shouldTreatAsUserInitiatedJob()) {
|
||||
allowLongerJob =
|
||||
checkRunLongJobsPermission(job.getSourceUid(), job.getSourcePackageName());
|
||||
} else {
|
||||
allowLongerJob = false;
|
||||
}
|
||||
if (job.shouldTreatAsUserInitiated()) {
|
||||
if (job.shouldTreatAsUserInitiatedJob()) {
|
||||
if (isDataTransfer && allowLongerJob) {
|
||||
return mConstants.RUNTIME_USER_INITIATED_DATA_TRANSFER_LIMIT_MS;
|
||||
}
|
||||
|
||||
@@ -307,7 +307,7 @@ public final class JobServiceContext implements ServiceConnection {
|
||||
mParams = new JobParameters(mRunningCallback, job.getJobId(), ji.getExtras(),
|
||||
ji.getTransientExtras(), ji.getClipData(), ji.getClipGrantFlags(),
|
||||
isDeadlineExpired, job.shouldTreatAsExpeditedJob(),
|
||||
job.shouldTreatAsUserInitiated(), triggeredUris, triggeredAuthorities,
|
||||
job.shouldTreatAsUserInitiatedJob(), triggeredUris, triggeredAuthorities,
|
||||
job.network);
|
||||
mExecutionStartTimeElapsed = sElapsedRealtimeClock.millis();
|
||||
mMinExecutionGuaranteeMillis = mService.getMinJobExecutionGuaranteeMs(job);
|
||||
|
||||
@@ -427,7 +427,7 @@ public final class ConnectivityController extends RestrictingController implemen
|
||||
final UidStats uidStats =
|
||||
getUidStats(jobStatus.getSourceUid(), jobStatus.getSourcePackageName(), true);
|
||||
|
||||
if (jobStatus.shouldTreatAsExpeditedJob() && jobStatus.shouldTreatAsUserInitiated()) {
|
||||
if (jobStatus.shouldTreatAsExpeditedJob() && jobStatus.shouldTreatAsUserInitiatedJob()) {
|
||||
if (!jobStatus.isConstraintSatisfied(JobStatus.CONSTRAINT_CONNECTIVITY)) {
|
||||
// Don't request a direct hole through any of the firewalls. Instead, mark the
|
||||
// constraint as satisfied if the network is available, and the job will get
|
||||
@@ -971,14 +971,14 @@ public final class ConnectivityController extends RestrictingController implemen
|
||||
if (job.shouldTreatAsExpeditedJob() || job.startedAsExpeditedJob) {
|
||||
us.earliestEJEnqueueTime =
|
||||
Math.min(us.earliestEJEnqueueTime, job.enqueueTime);
|
||||
} else if (job.shouldTreatAsUserInitiated()) {
|
||||
} else if (job.shouldTreatAsUserInitiatedJob()) {
|
||||
us.earliestUIJEnqueueTime =
|
||||
Math.min(us.earliestUIJEnqueueTime, job.enqueueTime);
|
||||
}
|
||||
}
|
||||
if (job.shouldTreatAsExpeditedJob() || job.startedAsExpeditedJob) {
|
||||
us.numEJs++;
|
||||
} else if (job.shouldTreatAsUserInitiated()) {
|
||||
} else if (job.shouldTreatAsUserInitiatedJob()) {
|
||||
us.numUIJs++;
|
||||
} else {
|
||||
us.numRegular++;
|
||||
|
||||
@@ -1350,9 +1350,8 @@ public final class JobStatus {
|
||||
* @return true if the job was scheduled as a user-initiated job and it hasn't been downgraded
|
||||
* for any reason.
|
||||
*/
|
||||
public boolean shouldTreatAsUserInitiated() {
|
||||
public boolean shouldTreatAsUserInitiatedJob() {
|
||||
// TODO(248386641): update implementation to handle loss of privilege
|
||||
// and also rename to `shouldTreatAsUserInitiatedJob` for consistency
|
||||
return getJob().isUserInitiated();
|
||||
}
|
||||
|
||||
@@ -1372,7 +1371,7 @@ public final class JobStatus {
|
||||
* @return true if this is a job whose execution should be made visible to the user.
|
||||
*/
|
||||
public boolean isUserVisibleJob() {
|
||||
return shouldTreatAsUserInitiated();
|
||||
return shouldTreatAsUserInitiatedJob();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1383,14 +1382,14 @@ public final class JobStatus {
|
||||
return appHasDozeExemption
|
||||
|| (getFlags() & JobInfo.FLAG_WILL_BE_FOREGROUND) != 0
|
||||
|| ((shouldTreatAsExpeditedJob() || startedAsExpeditedJob)
|
||||
|| shouldTreatAsUserInitiated()
|
||||
|| shouldTreatAsUserInitiatedJob()
|
||||
&& (mDynamicConstraints & CONSTRAINT_DEVICE_NOT_DOZING) == 0);
|
||||
}
|
||||
|
||||
boolean canRunInBatterySaver() {
|
||||
return (getInternalFlags() & INTERNAL_FLAG_HAS_FOREGROUND_EXEMPTION) != 0
|
||||
|| ((shouldTreatAsExpeditedJob() || startedAsExpeditedJob)
|
||||
|| shouldTreatAsUserInitiated()
|
||||
|| shouldTreatAsUserInitiatedJob()
|
||||
&& (mDynamicConstraints & CONSTRAINT_BACKGROUND_NOT_RESTRICTED) == 0);
|
||||
}
|
||||
|
||||
|
||||
@@ -641,7 +641,7 @@ public final class QuotaController extends StateController {
|
||||
mTopStartedJobs.add(jobStatus);
|
||||
// Top jobs won't count towards quota so there's no need to involve the Timer.
|
||||
return;
|
||||
} else if (jobStatus.shouldTreatAsUserInitiated()) {
|
||||
} else if (jobStatus.shouldTreatAsUserInitiatedJob()) {
|
||||
// User-initiated jobs won't count towards quota.
|
||||
return;
|
||||
}
|
||||
@@ -895,7 +895,7 @@ public final class QuotaController extends StateController {
|
||||
// 1. it was started while the app was in the TOP state
|
||||
// 2. the app is currently in the foreground
|
||||
// 3. the app overall is within its quota
|
||||
return jobStatus.shouldTreatAsUserInitiated()
|
||||
return jobStatus.shouldTreatAsUserInitiatedJob()
|
||||
|| isTopStartedJobLocked(jobStatus)
|
||||
|| isUidInForeground(jobStatus.getSourceUid())
|
||||
|| isWithinQuotaLocked(
|
||||
@@ -2120,7 +2120,7 @@ public final class QuotaController extends StateController {
|
||||
}
|
||||
|
||||
void startTrackingJobLocked(@NonNull JobStatus jobStatus) {
|
||||
if (jobStatus.shouldTreatAsUserInitiated()) {
|
||||
if (jobStatus.shouldTreatAsUserInitiatedJob()) {
|
||||
if (DEBUG) {
|
||||
Slog.v(TAG, "Timer ignoring " + jobStatus.toShortString()
|
||||
+ " because it's user-initiated");
|
||||
|
||||
@@ -313,7 +313,7 @@ public class TareController extends StateController {
|
||||
@GuardedBy("mLock")
|
||||
public void maybeStartTrackingJobLocked(JobStatus jobStatus, JobStatus lastJob) {
|
||||
final long nowElapsed = sElapsedRealtimeClock.millis();
|
||||
if (jobStatus.shouldTreatAsUserInitiated()) {
|
||||
if (jobStatus.shouldTreatAsUserInitiatedJob()) {
|
||||
// User-initiated jobs should always be allowed to run.
|
||||
jobStatus.setTareWealthConstraintSatisfied(nowElapsed, true);
|
||||
return;
|
||||
@@ -331,7 +331,7 @@ public class TareController extends StateController {
|
||||
@Override
|
||||
@GuardedBy("mLock")
|
||||
public void prepareForExecutionLocked(JobStatus jobStatus) {
|
||||
if (jobStatus.shouldTreatAsUserInitiated()) {
|
||||
if (jobStatus.shouldTreatAsUserInitiatedJob()) {
|
||||
// TODO(202954395): consider noting execution with the EconomyManager even though it
|
||||
// won't affect this job
|
||||
return;
|
||||
@@ -365,7 +365,7 @@ public class TareController extends StateController {
|
||||
@Override
|
||||
@GuardedBy("mLock")
|
||||
public void unprepareFromExecutionLocked(JobStatus jobStatus) {
|
||||
if (jobStatus.shouldTreatAsUserInitiated()) {
|
||||
if (jobStatus.shouldTreatAsUserInitiatedJob()) {
|
||||
return;
|
||||
}
|
||||
final int userId = jobStatus.getSourceUserId();
|
||||
@@ -397,7 +397,7 @@ public class TareController extends StateController {
|
||||
@Override
|
||||
@GuardedBy("mLock")
|
||||
public void maybeStopTrackingJobLocked(JobStatus jobStatus, JobStatus incomingJob) {
|
||||
if (jobStatus.shouldTreatAsUserInitiated()) {
|
||||
if (jobStatus.shouldTreatAsUserInitiatedJob()) {
|
||||
return;
|
||||
}
|
||||
final int userId = jobStatus.getSourceUserId();
|
||||
@@ -653,7 +653,7 @@ public class TareController extends StateController {
|
||||
if (!mIsEnabled) {
|
||||
return true;
|
||||
}
|
||||
if (jobStatus.shouldTreatAsUserInitiated()) {
|
||||
if (jobStatus.shouldTreatAsUserInitiatedJob()) {
|
||||
// Always allow user-initiated jobs.
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -98,7 +98,7 @@ public class ThermalStatusRestriction extends JobRestriction {
|
||||
// Only let high priority jobs run if:
|
||||
// They are already running and aren't yet in overtime
|
||||
// Don't let any other job run.
|
||||
if (job.shouldTreatAsExpeditedJob() || job.shouldTreatAsUserInitiated()) {
|
||||
if (job.shouldTreatAsExpeditedJob() || job.shouldTreatAsUserInitiatedJob()) {
|
||||
return job.getNumPreviousAttempts() > 0
|
||||
|| (mService.isCurrentlyRunningLocked(job)
|
||||
&& mService.isJobInOvertimeLocked(job));
|
||||
|
||||
@@ -505,27 +505,27 @@ public final class JobConcurrencyManagerTest {
|
||||
assertFalse(mJobConcurrencyManager.hasImmediacyPrivilegeLocked(job));
|
||||
|
||||
doReturn(false).when(job).shouldTreatAsExpeditedJob();
|
||||
doReturn(false).when(job).shouldTreatAsUserInitiated();
|
||||
doReturn(false).when(job).shouldTreatAsUserInitiatedJob();
|
||||
job.lastEvaluatedBias = JobInfo.BIAS_TOP_APP;
|
||||
assertFalse(mJobConcurrencyManager.hasImmediacyPrivilegeLocked(job));
|
||||
|
||||
doReturn(true).when(job).shouldTreatAsExpeditedJob();
|
||||
doReturn(false).when(job).shouldTreatAsUserInitiated();
|
||||
doReturn(false).when(job).shouldTreatAsUserInitiatedJob();
|
||||
job.lastEvaluatedBias = JobInfo.BIAS_DEFAULT;
|
||||
assertFalse(mJobConcurrencyManager.hasImmediacyPrivilegeLocked(job));
|
||||
|
||||
doReturn(false).when(job).shouldTreatAsExpeditedJob();
|
||||
doReturn(true).when(job).shouldTreatAsUserInitiated();
|
||||
doReturn(true).when(job).shouldTreatAsUserInitiatedJob();
|
||||
job.lastEvaluatedBias = JobInfo.BIAS_DEFAULT;
|
||||
assertFalse(mJobConcurrencyManager.hasImmediacyPrivilegeLocked(job));
|
||||
|
||||
doReturn(false).when(job).shouldTreatAsExpeditedJob();
|
||||
doReturn(true).when(job).shouldTreatAsUserInitiated();
|
||||
doReturn(true).when(job).shouldTreatAsUserInitiatedJob();
|
||||
job.lastEvaluatedBias = JobInfo.BIAS_TOP_APP;
|
||||
assertTrue(mJobConcurrencyManager.hasImmediacyPrivilegeLocked(job));
|
||||
|
||||
doReturn(true).when(job).shouldTreatAsExpeditedJob();
|
||||
doReturn(false).when(job).shouldTreatAsUserInitiated();
|
||||
doReturn(false).when(job).shouldTreatAsUserInitiatedJob();
|
||||
job.lastEvaluatedBias = JobInfo.BIAS_TOP_APP;
|
||||
assertTrue(mJobConcurrencyManager.hasImmediacyPrivilegeLocked(job));
|
||||
}
|
||||
|
||||
@@ -249,8 +249,8 @@ public class JobSchedulerServiceTest {
|
||||
when(ejHighDowngraded.shouldTreatAsExpeditedJob()).thenReturn(false);
|
||||
when(jobHigh.shouldTreatAsExpeditedJob()).thenReturn(false);
|
||||
when(jobDef.shouldTreatAsExpeditedJob()).thenReturn(false);
|
||||
when(jobUI.shouldTreatAsUserInitiated()).thenReturn(true);
|
||||
when(jobUIDT.shouldTreatAsUserInitiated()).thenReturn(true);
|
||||
when(jobUI.shouldTreatAsUserInitiatedJob()).thenReturn(true);
|
||||
when(jobUIDT.shouldTreatAsUserInitiatedJob()).thenReturn(true);
|
||||
|
||||
ConnectivityController connectivityController = mService.getConnectivityController();
|
||||
spyOn(connectivityController);
|
||||
@@ -335,8 +335,8 @@ public class JobSchedulerServiceTest {
|
||||
spyOn(jobUI);
|
||||
spyOn(jobUIDT);
|
||||
|
||||
when(jobUI.shouldTreatAsUserInitiated()).thenReturn(true);
|
||||
when(jobUIDT.shouldTreatAsUserInitiated()).thenReturn(true);
|
||||
when(jobUI.shouldTreatAsUserInitiatedJob()).thenReturn(true);
|
||||
when(jobUIDT.shouldTreatAsUserInitiatedJob()).thenReturn(true);
|
||||
|
||||
QuotaController quotaController = mService.getQuotaController();
|
||||
spyOn(quotaController);
|
||||
|
||||
@@ -2179,10 +2179,10 @@ public class QuotaControllerTest {
|
||||
mQuotaController.incrementJobCountLocked(SOURCE_USER_ID, SOURCE_PACKAGE, jobCount);
|
||||
assertFalse(mQuotaController
|
||||
.isWithinQuotaLocked(SOURCE_USER_ID, SOURCE_PACKAGE, WORKING_INDEX));
|
||||
doReturn(false).when(job).shouldTreatAsUserInitiated();
|
||||
doReturn(false).when(job).shouldTreatAsUserInitiatedJob();
|
||||
assertFalse(mQuotaController.isWithinQuotaLocked(job));
|
||||
// User-initiated job should still be allowed.
|
||||
doReturn(true).when(job).shouldTreatAsUserInitiated();
|
||||
doReturn(true).when(job).shouldTreatAsUserInitiatedJob();
|
||||
assertTrue(mQuotaController.isWithinQuotaLocked(job));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -198,10 +198,10 @@ public class ThermalStatusRestrictionTest {
|
||||
when(ejRetried.shouldTreatAsExpeditedJob()).thenReturn(true);
|
||||
when(ejRunning.shouldTreatAsExpeditedJob()).thenReturn(true);
|
||||
when(ejRunningLong.shouldTreatAsExpeditedJob()).thenReturn(true);
|
||||
when(ui.shouldTreatAsUserInitiated()).thenReturn(true);
|
||||
when(uiRetried.shouldTreatAsUserInitiated()).thenReturn(true);
|
||||
when(uiRunning.shouldTreatAsUserInitiated()).thenReturn(true);
|
||||
when(uiRunningLong.shouldTreatAsUserInitiated()).thenReturn(true);
|
||||
when(ui.shouldTreatAsUserInitiatedJob()).thenReturn(true);
|
||||
when(uiRetried.shouldTreatAsUserInitiatedJob()).thenReturn(true);
|
||||
when(uiRunning.shouldTreatAsUserInitiatedJob()).thenReturn(true);
|
||||
when(uiRunningLong.shouldTreatAsUserInitiatedJob()).thenReturn(true);
|
||||
when(ejRetried.getNumPreviousAttempts()).thenReturn(1);
|
||||
when(uiRetried.getNumPreviousAttempts()).thenReturn(2);
|
||||
when(mJobSchedulerService.isCurrentlyRunningLocked(jobLowPriorityRunning)).thenReturn(true);
|
||||
|
||||
Reference in New Issue
Block a user