| Index: chrome/android/java/src/org/chromium/chrome/browser/sync/ChromiumSyncAdapter.java
|
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/sync/ChromiumSyncAdapter.java b/chrome/android/java/src/org/chromium/chrome/browser/sync/ChromiumSyncAdapter.java
|
| index 869f8057822f2fa4f40c2b5b6c50d43e18a99398..571fe018b8dfadc04308758b83b79bca1bd0e13d 100644
|
| --- a/chrome/android/java/src/org/chromium/chrome/browser/sync/ChromiumSyncAdapter.java
|
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/sync/ChromiumSyncAdapter.java
|
| @@ -15,6 +15,7 @@ import android.os.Handler;
|
| import android.util.Log;
|
|
|
| import com.google.common.annotations.VisibleForTesting;
|
| +import com.google.protos.ipc.invalidation.Types;
|
|
|
| import org.chromium.base.ThreadUtils;
|
| import org.chromium.content.browser.BrowserStartupController;
|
| @@ -30,6 +31,8 @@ public abstract class ChromiumSyncAdapter extends AbstractThreadedSyncAdapter {
|
| // TODO(nyquist) Make these fields package protected once downstream sync adapter tests are
|
| // removed.
|
| @VisibleForTesting
|
| + public static final String INVALIDATION_OBJECT_SOURCE_KEY = "objectSource";
|
| + @VisibleForTesting
|
| public static final String INVALIDATION_OBJECT_ID_KEY = "objectId";
|
| @VisibleForTesting
|
| public static final String INVALIDATION_VERSION_KEY = "version";
|
| @@ -124,6 +127,7 @@ public abstract class ChromiumSyncAdapter extends AbstractThreadedSyncAdapter {
|
| final Context context, final Account acct, Bundle extras,
|
| final SyncResult syncResult, final Semaphore semaphore) {
|
| final boolean syncAllTypes = extras.getString(INVALIDATION_OBJECT_ID_KEY) == null;
|
| + final int objectSource = syncAllTypes ? 0 : extras.getInt(INVALIDATION_OBJECT_SOURCE_KEY);
|
| final String objectId = syncAllTypes ? "" : extras.getString(INVALIDATION_OBJECT_ID_KEY);
|
| final long version = syncAllTypes ? 0 : extras.getLong(INVALIDATION_VERSION_KEY);
|
| final String payload = syncAllTypes ? "" : extras.getString(INVALIDATION_PAYLOAD_KEY);
|
| @@ -136,7 +140,16 @@ public abstract class ChromiumSyncAdapter extends AbstractThreadedSyncAdapter {
|
| Log.v(TAG, "Received sync tickle for all types.");
|
| requestSyncForAllTypes();
|
| } else {
|
| - Log.v(TAG, "Received sync tickle for " + objectId + ".");
|
| + // Invalidations persisted before objectSource was added should be assumed to be
|
| + // for Sync objects. TODO(stepco): Remove this check once all persisted
|
| + // invalidations can be expected to have the objectSource.
|
| + int resolvedSource = objectSource;
|
| + if (resolvedSource == 0) {
|
| + resolvedSource = Types.ObjectSource.Type.CHROME_SYNC.getNumber();
|
| + }
|
| + Log.v(TAG, "Received sync tickle for " + resolvedSource + " " + objectId + ".");
|
| + requestSync(resolvedSource, objectId, version, payload);
|
| + // Call legacy requestSync. See comment on the method.
|
| requestSync(objectId, version, payload);
|
| }
|
| semaphore.release();
|
| @@ -153,10 +166,17 @@ public abstract class ChromiumSyncAdapter extends AbstractThreadedSyncAdapter {
|
| };
|
| }
|
|
|
| + /**
|
| + * Legacy requestSync method present to retain compatibility with a test which overrides it.
|
| + * TODO(stepco): Remove this method once the dependent test is updated to override the new
|
| + * requestSync method.
|
| + */
|
| + public void requestSync(String objectId, long version, String payload) {}
|
| +
|
| @VisibleForTesting
|
| - public void requestSync(String objectId, long version, String payload) {
|
| + public void requestSync(int objectSource, String objectId, long version, String payload) {
|
| ProfileSyncService.get(mApplication)
|
| - .requestSyncFromNativeChrome(objectId, version, payload);
|
| + .requestSyncFromNativeChrome(objectSource, objectId, version, payload);
|
| }
|
|
|
| @VisibleForTesting
|
|
|