| Index: chrome/browser/sync/profile_sync_service.cc
|
| ===================================================================
|
| --- chrome/browser/sync/profile_sync_service.cc (revision 138738)
|
| +++ chrome/browser/sync/profile_sync_service.cc (working copy)
|
| @@ -206,8 +206,12 @@
|
| return;
|
| // Don't start the backend if the token service hasn't finished loading tokens
|
| // yet (if the backend is started before the sync token has been loaded,
|
| - // GetCredentials() will return bogus credentials).
|
| - if (IsSyncTokenAvailable() || token_service->TokensLoadedFromDB()) {
|
| + // GetCredentials() will return bogus credentials). On auto_start platforms
|
| + // (like ChromeOS) we don't start sync until tokens are loaded, because the
|
| + // user can be "signed in" on those platforms long before the tokens get
|
| + // loaded, and we don't want to generate spurious auth errors.
|
| + if (IsSyncTokenAvailable() ||
|
| + (!auto_start_enabled_ && token_service->TokensLoadedFromDB())) {
|
| if (HasSyncSetupCompleted() || auto_start_enabled_) {
|
| // If sync setup has completed we always start the backend.
|
| // If autostart is enabled, but we haven't completed sync setup, we try to
|
| @@ -1545,6 +1549,12 @@
|
| // This notification gets fired when TokenService loads the tokens
|
| // from storage.
|
| if (IsSyncEnabledAndLoggedIn()) {
|
| + // Don't start up sync and generate an auth error on auto_start
|
| + // platforms as they have their own way to resolve TokenService errors.
|
| + // (crbug.com/128592).
|
| + if (auto_start_enabled_ && !IsSyncTokenAvailable())
|
| + break;
|
| +
|
| // Initialize the backend if sync is enabled. If the sync token was
|
| // not loaded, GetCredentials() will generate invalid credentials to
|
| // cause the backend to generate an auth error (crbug.com/121755).
|
|
|