// Copyright (c) 2012 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "chrome/browser/signin/ubertoken_fetcher.h" #include <vector> #include "base/logging.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/signin/profile_oauth2_token_service.h" #include "chrome/browser/signin/profile_oauth2_token_service_factory.h" #include "google_apis/gaia/gaia_auth_fetcher.h" #include "google_apis/gaia/gaia_constants.h" #include "google_apis/gaia/gaia_urls.h" #include "google_apis/gaia/google_service_auth_error.h" UbertokenFetcher::UbertokenFetcher(Profile* profile, UbertokenConsumer* consumer) : profile_(profile), consumer_(consumer) { DCHECK(profile); DCHECK(consumer); } UbertokenFetcher::~UbertokenFetcher() { } void UbertokenFetcher::StartFetchingToken() { ProfileOAuth2TokenService* token_service = ProfileOAuth2TokenServiceFactory::GetForProfile(profile_); StartFetchingToken(token_service->GetPrimaryAccountId()); } void UbertokenFetcher::StartFetchingToken(const std::string& account_id) { OAuth2TokenService::ScopeSet scopes; scopes.insert(GaiaUrls::GetInstance()->oauth1_login_scope()); ProfileOAuth2TokenService* token_service = ProfileOAuth2TokenServiceFactory::GetForProfile(profile_); access_token_request_ = token_service->StartRequest(account_id, scopes, this); } void UbertokenFetcher::OnUberAuthTokenSuccess(const std::string& token) { consumer_->OnUbertokenSuccess(token); } void UbertokenFetcher::OnUberAuthTokenFailure( const GoogleServiceAuthError& error) { consumer_->OnUbertokenFailure(error); } void UbertokenFetcher::OnGetTokenSuccess( const OAuth2TokenService::Request* request, const std::string& access_token, const base::Time& expiration_time) { access_token_request_.reset(); gaia_auth_fetcher_.reset(new GaiaAuthFetcher(this, GaiaConstants::kChromeSource, profile_->GetRequestContext())); gaia_auth_fetcher_->StartTokenFetchForUberAuthExchange(access_token); } void UbertokenFetcher::OnGetTokenFailure( const OAuth2TokenService::Request* request, const GoogleServiceAuthError& error) { access_token_request_.reset(); consumer_->OnUbertokenFailure(error); }