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

Commit 3b840e37 authored by Shreyas Basarge's avatar Shreyas Basarge
Browse files

Update SyncManager min period to match JobScheduler

Use JobScheduler's minimum period in SyncManager.
Syncs will respect JobScheduler's min period anyway,
this change ensures that dumpsys of both services
show the same period.

Bug: 29253834
Change-Id: I0cd7f85da56af967963573a048c3a71436ed9c5b
parent 82f2df61
Loading
Loading
Loading
Loading
+15 −10
Original line number Diff line number Diff line
@@ -22,6 +22,7 @@ import android.annotation.Nullable;
import android.app.ActivityManager;
import android.app.ActivityManagerNative;
import android.app.AppOpsManager;
import android.app.job.JobInfo;
import android.content.BroadcastReceiver;
import android.content.ComponentName;
import android.content.ContentProvider;
@@ -512,6 +513,16 @@ public final class ContentService extends IContentService.Stub {
        syncAsUser(request, UserHandle.getCallingUserId());
    }

    private long clampPeriod(long period) {
        long minPeriod = JobInfo.getMinPeriodMillis() / 1000;
        if (period < minPeriod) {
            Slog.w(TAG, "Requested poll frequency of " + period
                    + " seconds being rounded up to " + minPeriod + "s.");
            period = minPeriod;
        }
        return period;
    }

    /**
     * If the user id supplied is different to the calling user, the caller must hold the
     * INTERACT_ACROSS_USERS_FULL permission.
@@ -539,11 +550,8 @@ public final class ContentService extends IContentService.Stub {
                SyncStorageEngine.EndPoint info;
                info = new SyncStorageEngine.EndPoint(
                        request.getAccount(), request.getProvider(), userId);
                if (runAtTime < 3600) {
                    Slog.w(TAG, "Requested poll frequency of " + runAtTime
                            + " seconds being rounded up to 1 hour.");
                    runAtTime = 3600;
                }

                runAtTime = clampPeriod(runAtTime);
                // Schedule periodic sync.
                getSyncManager().updateOrAddPeriodicSync(info, runAtTime,
                        flextime, extras);
@@ -761,11 +769,8 @@ public final class ContentService extends IContentService.Stub {
                "no permission to write the sync settings");

        int userId = UserHandle.getCallingUserId();
        if (pollFrequency < 3600) {
            Slog.w(TAG, "Requested poll frequency of " + pollFrequency
                    + " seconds being rounded up to 1 hour.");
            pollFrequency = 3600;
        }

        pollFrequency = clampPeriod(pollFrequency);
        long defaultFlex = SyncStorageEngine.calculateDefaultFlexTime(pollFrequency);

        long identityToken = clearCallingIdentity();