Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit fce729cd authored by Kweku Adams's avatar Kweku Adams Committed by Automerger Merge Worker
Browse files

Merge "Handle out-of-ej-quota case." into sc-dev am: 6c0d7e0e am: 7f1f8cb9

Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/14455520

Change-Id: I2b6650f5f16186b6f3c2496e0d55176c9c5d06ab
parents b82c6271 7f1f8cb9
Loading
Loading
Loading
Loading
+19 −1
Original line number Diff line number Diff line
@@ -1659,13 +1659,31 @@ public class SyncManager {
        final UsageStatsManagerInternal usmi =
                LocalServices.getService(UsageStatsManagerInternal.class);
        if (usmi != null) {
            // This method name is unfortunate. It elevates apps to a higher bucket, so it ideally
            // should be called before we attempt to schedule the job (especially as EJ).
            usmi.reportSyncScheduled(syncOperation.owningPackage,
                    UserHandle.getUserId(syncOperation.owningUid),
                    syncOperation.isAppStandbyExempted());
        }

        getJobScheduler().scheduleAsPackage(b.build(), syncOperation.owningPackage,
        final JobInfo ji = b.build();
        int result = getJobScheduler().scheduleAsPackage(ji, syncOperation.owningPackage,
                syncOperation.target.userId, syncOperation.wakeLockName());
        if (result == JobScheduler.RESULT_FAILURE && ji.isExpedited()) {
            if (isLoggable) {
                Slog.i(TAG, "Failed to schedule EJ for " + syncOperation.owningPackage
                        + ". Downgrading to regular");
            }
            syncOperation.scheduleEjAsRegularJob = true;
            b.setExpedited(false).setExtras(syncOperation.toJobInfoExtras());
            result = getJobScheduler().scheduleAsPackage(b.build(), syncOperation.owningPackage,
                    syncOperation.target.userId, syncOperation.wakeLockName());
        }
        if (result == JobScheduler.RESULT_FAILURE) {
            Slog.e(TAG, "Failed to schedule job for " + syncOperation.owningPackage);
            // TODO: notify AppStandbyController that the sync isn't actually scheduled so the
            // bucket doesn't stay elevated
        }
    }

    /**