| Index: chrome/browser/signin/profile_oauth2_token_service.cc
|
| diff --git a/chrome/browser/signin/profile_oauth2_token_service.cc b/chrome/browser/signin/profile_oauth2_token_service.cc
|
| index b09138700815f64c9b1ea75d525b5220d74b2540..993d2a618280cc2a750eb35cc132a009d47a7473 100644
|
| --- a/chrome/browser/signin/profile_oauth2_token_service.cc
|
| +++ b/chrome/browser/signin/profile_oauth2_token_service.cc
|
| @@ -25,6 +25,10 @@
|
| #include "google_apis/gaia/google_service_auth_error.h"
|
| #include "net/url_request/url_request_context_getter.h"
|
|
|
| +#if defined(ENABLE_MANAGED_USERS)
|
| +#include "chrome/browser/managed_mode/managed_user_constants.h"
|
| +#endif
|
| +
|
| namespace {
|
|
|
| const char kAccountIdPrefix[] = "AccountId-";
|
| @@ -154,7 +158,7 @@ void ProfileOAuth2TokenService::Observe(
|
| int type,
|
| const content::NotificationSource& source,
|
| const content::NotificationDetails& details) {
|
| - const std::string& account_id = GetPrimaryAccountId();
|
| + std::string account_id = GetPrimaryAccountId();
|
| switch (type) {
|
| case chrome::NOTIFICATION_TOKEN_AVAILABLE: {
|
| TokenService::TokenAvailableDetails* tok_details =
|
| @@ -165,6 +169,7 @@ void ProfileOAuth2TokenService::Observe(
|
| // upgrade steps invoked by Initialize.
|
| // TODO(fgorski): Refresh token received that way is not persisted in
|
| // the token DB.
|
| + account_id = GetAccountIdForMigratingRefreshToken();
|
| CancelRequestsForAccount(account_id);
|
| ClearCacheForAccount(account_id);
|
| refresh_tokens_[account_id].reset(
|
| @@ -209,9 +214,6 @@ void ProfileOAuth2TokenService::Observe(
|
| }
|
|
|
| std::string ProfileOAuth2TokenService::GetPrimaryAccountId() {
|
| - if (profile_->IsManaged())
|
| - return std::string("SupervisedUser");
|
| -
|
| SigninManagerBase* signin_manager =
|
| SigninManagerFactory::GetForProfileIfExists(profile_);
|
| // TODO(fgorski): DCHECK(signin_manager) here - it may require update to test
|
| @@ -323,6 +325,17 @@ void ProfileOAuth2TokenService::LoadCredentials() {
|
| web_data_service_request_ = token_web_data->GetAllTokens(this);
|
| }
|
|
|
| +std::string ProfileOAuth2TokenService::GetAccountIdForMigratingRefreshToken() {
|
| +#if defined(ENABLE_MANAGED_USERS)
|
| + // TODO(bauerb): Make sure that only services that can deal with supervised
|
| + // users see the supervised user token.
|
| + if (profile_->IsManaged())
|
| + return managed_users::kManagedUserPseudoEmail;
|
| +#endif
|
| +
|
| + return GetPrimaryAccountId();
|
| +}
|
| +
|
| void ProfileOAuth2TokenService::OnWebDataServiceRequestDone(
|
| WebDataServiceBase::Handle handle,
|
| const WDTypedResult* result) {
|
| @@ -368,9 +381,11 @@ void ProfileOAuth2TokenService::LoadAllCredentialsIntoMemory(
|
| }
|
| }
|
|
|
| - if (!old_login_token.empty() &&
|
| - refresh_tokens_.count(GetPrimaryAccountId()) == 0) {
|
| - UpdateCredentials(GetPrimaryAccountId(), old_login_token);
|
| + if (!old_login_token.empty()) {
|
| + std::string account_id = GetAccountIdForMigratingRefreshToken();
|
| +
|
| + if (refresh_tokens_.count(account_id) == 0)
|
| + UpdateCredentials(account_id, old_login_token);
|
| }
|
|
|
| FireRefreshTokensLoaded();
|
|
|