| 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 | 
|  |