Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(55)

Side by Side Diff: chrome/browser/extensions/api/identity/identity_api.cc

Issue 23382008: Making OAuth2TokenService multi-login aware, updating callers, minor fixes (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebasing to include the update to ProfileSyncService: r224220 Created 7 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/extensions/api/identity/identity_api.h" 5 #include "chrome/browser/extensions/api/identity/identity_api.h"
6 6
7 #include <set> 7 #include <set>
8 #include <string> 8 #include <string>
9 #include <utility> 9 #include <utility>
10 #include <vector> 10 #include <vector>
(...skipping 201 matching lines...) Expand 10 before | Expand all | Expand 10 after
212 if (type == IdentityMintRequestQueue::MINT_TYPE_NONINTERACTIVE) { 212 if (type == IdentityMintRequestQueue::MINT_TYPE_NONINTERACTIVE) {
213 switch (cache_status) { 213 switch (cache_status) {
214 case IdentityTokenCacheValue::CACHE_STATUS_NOTFOUND: 214 case IdentityTokenCacheValue::CACHE_STATUS_NOTFOUND:
215 #if defined(OS_CHROMEOS) 215 #if defined(OS_CHROMEOS)
216 // Always force minting token for ChromeOS kiosk app. 216 // Always force minting token for ChromeOS kiosk app.
217 if (chromeos::UserManager::Get()->IsLoggedInAsKioskApp()) { 217 if (chromeos::UserManager::Get()->IsLoggedInAsKioskApp()) {
218 if (g_browser_process->browser_policy_connector()-> 218 if (g_browser_process->browser_policy_connector()->
219 IsEnterpriseManaged()) { 219 IsEnterpriseManaged()) {
220 OAuth2TokenService::ScopeSet scope_set(oauth2_info.scopes.begin(), 220 OAuth2TokenService::ScopeSet scope_set(oauth2_info.scopes.begin(),
221 oauth2_info.scopes.end()); 221 oauth2_info.scopes.end());
222 chromeos::DeviceOAuth2TokenService* token_service =
223 chromeos::DeviceOAuth2TokenServiceFactory::Get();
222 device_token_request_ = 224 device_token_request_ =
223 chromeos::DeviceOAuth2TokenServiceFactory::Get()->StartRequest( 225 token_service->StartRequest(token_service->GetRobotAccountId(),
224 scope_set, this); 226 scope_set,
227 this);
225 } else { 228 } else {
226 gaia_mint_token_mode_ = OAuth2MintTokenFlow::MODE_MINT_TOKEN_FORCE; 229 gaia_mint_token_mode_ = OAuth2MintTokenFlow::MODE_MINT_TOKEN_FORCE;
227 StartLoginAccessTokenRequest(); 230 StartLoginAccessTokenRequest();
228 } 231 }
229 return; 232 return;
230 } 233 }
231 #endif 234 #endif
232 235
233 if (oauth2_info.auto_approve) 236 if (oauth2_info.auto_approve)
234 // oauth2_info.auto_approve is protected by a whitelist in 237 // oauth2_info.auto_approve is protected by a whitelist in
(...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after
417 void IdentityGetAuthTokenFunction::StartLoginAccessTokenRequest() { 420 void IdentityGetAuthTokenFunction::StartLoginAccessTokenRequest() {
418 ProfileOAuth2TokenService* service = 421 ProfileOAuth2TokenService* service =
419 ProfileOAuth2TokenServiceFactory::GetForProfile(profile()); 422 ProfileOAuth2TokenServiceFactory::GetForProfile(profile());
420 #if defined(OS_CHROMEOS) 423 #if defined(OS_CHROMEOS)
421 if (chrome::IsRunningInForcedAppMode()) { 424 if (chrome::IsRunningInForcedAppMode()) {
422 std::string app_client_id; 425 std::string app_client_id;
423 std::string app_client_secret; 426 std::string app_client_secret;
424 if (chromeos::UserManager::Get()->GetAppModeChromeClientOAuthInfo( 427 if (chromeos::UserManager::Get()->GetAppModeChromeClientOAuthInfo(
425 &app_client_id, &app_client_secret)) { 428 &app_client_id, &app_client_secret)) {
426 login_token_request_ = 429 login_token_request_ =
427 service->StartRequestForClient(app_client_id, 430 service->StartRequestForClient(service->GetPrimaryAccountId(),
431 app_client_id,
428 app_client_secret, 432 app_client_secret,
429 OAuth2TokenService::ScopeSet(), 433 OAuth2TokenService::ScopeSet(),
430 this); 434 this);
431 return; 435 return;
432 } 436 }
433 } 437 }
434 #endif 438 #endif
435 login_token_request_ = service->StartRequest(OAuth2TokenService::ScopeSet(), 439 login_token_request_ = service->StartRequest(
436 this); 440 service->GetPrimaryAccountId(), OAuth2TokenService::ScopeSet(), this);
437 } 441 }
438 442
439 void IdentityGetAuthTokenFunction::StartGaiaRequest( 443 void IdentityGetAuthTokenFunction::StartGaiaRequest(
440 const std::string& login_access_token) { 444 const std::string& login_access_token) {
441 DCHECK(!login_access_token.empty()); 445 DCHECK(!login_access_token.empty());
442 mint_token_flow_.reset(CreateMintTokenFlow(login_access_token)); 446 mint_token_flow_.reset(CreateMintTokenFlow(login_access_token));
443 mint_token_flow_->Start(); 447 mint_token_flow_->Start();
444 } 448 }
445 449
446 void IdentityGetAuthTokenFunction::ShowLoginPopup() { 450 void IdentityGetAuthTokenFunction::ShowLoginPopup() {
(...skipping 23 matching lines...) Expand all
470 OAuth2MintTokenFlow::Parameters( 474 OAuth2MintTokenFlow::Parameters(
471 login_access_token, 475 login_access_token,
472 GetExtension()->id(), 476 GetExtension()->id(),
473 oauth2_client_id_, 477 oauth2_client_id_,
474 oauth2_info.scopes, 478 oauth2_info.scopes,
475 gaia_mint_token_mode_)); 479 gaia_mint_token_mode_));
476 return mint_token_flow; 480 return mint_token_flow;
477 } 481 }
478 482
479 bool IdentityGetAuthTokenFunction::HasLoginToken() const { 483 bool IdentityGetAuthTokenFunction::HasLoginToken() const {
480 return ProfileOAuth2TokenServiceFactory::GetForProfile(profile())-> 484 ProfileOAuth2TokenService* token_service =
481 RefreshTokenIsAvailable(); 485 ProfileOAuth2TokenServiceFactory::GetForProfile(profile());
486 return token_service->RefreshTokenIsAvailable(
487 token_service->GetPrimaryAccountId());
482 } 488 }
483 489
484 std::string IdentityGetAuthTokenFunction::MapOAuth2ErrorToDescription( 490 std::string IdentityGetAuthTokenFunction::MapOAuth2ErrorToDescription(
485 const std::string& error) { 491 const std::string& error) {
486 const char kOAuth2ErrorAccessDenied[] = "access_denied"; 492 const char kOAuth2ErrorAccessDenied[] = "access_denied";
487 const char kOAuth2ErrorInvalidScope[] = "invalid_scope"; 493 const char kOAuth2ErrorInvalidScope[] = "invalid_scope";
488 494
489 if (error == kOAuth2ErrorAccessDenied) 495 if (error == kOAuth2ErrorAccessDenied)
490 return std::string(identity_constants::kUserRejected); 496 return std::string(identity_constants::kUserRejected);
491 else if (error == kOAuth2ErrorInvalidScope) 497 else if (error == kOAuth2ErrorInvalidScope)
(...skipping 276 matching lines...) Expand 10 before | Expand all | Expand 10 after
768 const IdentityAPI::TokenCacheKey& rhs) const { 774 const IdentityAPI::TokenCacheKey& rhs) const {
769 if (extension_id < rhs.extension_id) 775 if (extension_id < rhs.extension_id)
770 return true; 776 return true;
771 else if (rhs.extension_id < extension_id) 777 else if (rhs.extension_id < extension_id)
772 return false; 778 return false;
773 779
774 return scopes < rhs.scopes; 780 return scopes < rhs.scopes;
775 } 781 }
776 782
777 } // namespace extensions 783 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698