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
diff --git a/services/core/java/com/android/server/content/ContentService.java b/services/core/java/com/android/server/content/ContentService.java
index 1b2ccd7..9220aa3 100644
--- a/services/core/java/com/android/server/content/ContentService.java
+++ b/services/core/java/com/android/server/content/ContentService.java
@@ -22,6 +22,7 @@
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 @@
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 @@
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 @@
"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();