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

Commit cece452c authored by Shreyas Basarge's avatar Shreyas Basarge Committed by android-build-merger
Browse files

Merge "Add defaultPeriodic to every authority" into nyc-dev

am: e4f490cc

* commit 'e4f490cc':
  Add defaultPeriodic to every authority
parents 94cf50d1 e4f490cc
Loading
Loading
Loading
Loading
+38 −0
Original line number Diff line number Diff line
@@ -453,10 +453,48 @@ public class SyncManager {
                        }
                    }
                }
                ensureDefaultPeriodicSyncsH();
            }
        });
    }

    private void ensureDefaultPeriodicSyncsH() {

        long defaultPeriod = SyncStorageEngine.DEFAULT_POLL_FREQUENCY_SECONDS;
        long defaultFlex = SyncStorageEngine.calculateDefaultFlexTime(defaultPeriod);

        List<AuthorityInfo> authorities = mSyncStorageEngine.getAllAuthorities();
        List<SyncOperation> syncs = getAllPendingSyncsFromCache();
        for (AuthorityInfo authority: authorities) {
            boolean foundPeriodicSync = false;
            for (SyncOperation op: syncs) {
                if (op.isPeriodic && authority.target.matchesSpec(op.target)) {
                    foundPeriodicSync = true;
                    break;
                }
            }
            if (!foundPeriodicSync) {
                EndPoint target = authority.target;
                final RegisteredServicesCache.ServiceInfo<SyncAdapterType>
                        syncAdapterInfo = mSyncAdapters.getServiceInfo(
                        SyncAdapterType.newKey(
                                target.provider, target.account.type),
                        target.userId);
                if (syncAdapterInfo == null) {
                    continue;
                }
                scheduleSyncOperationH(
                    new SyncOperation(target, syncAdapterInfo.uid,
                            syncAdapterInfo.componentName.getPackageName(),
                            SyncOperation.REASON_PERIODIC, SyncStorageEngine.SOURCE_PERIODIC,
                            new Bundle(), syncAdapterInfo.type.allowParallelSyncs(),
                            true /* periodic */, SyncOperation.NO_JOB_ID, defaultPeriod * 1000L,
                            defaultFlex * 1000L)
                );
            }
        }
    }

    private synchronized void verifyJobScheduler() {
        if (mJobScheduler != null) {
            return;
+11 −1
Original line number Diff line number Diff line
@@ -80,7 +80,7 @@ public class SyncStorageEngine extends Handler {
    private static final String XML_TAG_LISTEN_FOR_TICKLES = "listenForTickles";

    /** Default time for a periodic sync. */
    private static final long DEFAULT_POLL_FREQUENCY_SECONDS = 60 * 60 * 24; // One day
    static final long DEFAULT_POLL_FREQUENCY_SECONDS = 60 * 60 * 24; // One day

    /** Percentage of period that is flex by default, if no flexMillis is set. */
    private static final double DEFAULT_FLEX_PERCENT_SYNC = 0.04;
@@ -857,6 +857,16 @@ public class SyncStorageEngine extends Handler {
        }
    }

    List<AuthorityInfo> getAllAuthorities() {
        List<AuthorityInfo> authorities = new ArrayList<AuthorityInfo>();
        synchronized (mAuthorities) {
            for (int i = 0; i < mAuthorities.size(); i++) {
                authorities.add(mAuthorities.valueAt(i));
            }
        }
        return authorities;
    }

    /**
     * Returns true if there is currently a sync operation being actively processed for the given
     * target.