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

Side by Side Diff: chrome/browser/chromeos/login/signin/oauth2_token_fetcher.cc

Issue 382983003: Pass signin_scoped_device_id to refresh token request on ChromeOS (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase Created 6 years, 5 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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/chromeos/login/signin/oauth2_token_fetcher.h" 5 #include "chrome/browser/chromeos/login/signin/oauth2_token_fetcher.h"
6 6
7 #include "base/logging.h" 7 #include "base/logging.h"
8 #include "base/strings/string_util.h" 8 #include "base/strings/string_util.h"
9 #include "chromeos/network/network_handler.h" 9 #include "chromeos/network/network_handler.h"
10 #include "chromeos/network/network_state.h" 10 #include "chromeos/network/network_state.h"
(...skipping 22 matching lines...) Expand all
33 : delegate_(delegate), 33 : delegate_(delegate),
34 auth_fetcher_(this, GaiaConstants::kChromeSource, context_getter), 34 auth_fetcher_(this, GaiaConstants::kChromeSource, context_getter),
35 retry_count_(0) { 35 retry_count_(0) {
36 DCHECK(delegate); 36 DCHECK(delegate);
37 } 37 }
38 38
39 OAuth2TokenFetcher::~OAuth2TokenFetcher() { 39 OAuth2TokenFetcher::~OAuth2TokenFetcher() {
40 } 40 }
41 41
42 void OAuth2TokenFetcher::StartExchangeFromCookies( 42 void OAuth2TokenFetcher::StartExchangeFromCookies(
43 const std::string& session_index) { 43 const std::string& session_index,
44 const std::string& signin_scoped_device_id) {
44 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 45 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
45 session_index_ = session_index; 46 session_index_ = session_index;
47 signin_scoped_device_id_ = signin_scoped_device_id;
46 // Delay the verification if the network is not connected or on a captive 48 // Delay the verification if the network is not connected or on a captive
47 // portal. 49 // portal.
48 const NetworkState* default_network = 50 const NetworkState* default_network =
49 NetworkHandler::Get()->network_state_handler()->DefaultNetwork(); 51 NetworkHandler::Get()->network_state_handler()->DefaultNetwork();
50 if (!default_network || 52 if (!default_network ||
51 default_network->connection_state() == shill::kStatePortal) { 53 default_network->connection_state() == shill::kStatePortal) {
52 // If network is offline, defer the token fetching until online. 54 // If network is offline, defer the token fetching until online.
53 VLOG(1) << "Network is offline. Deferring OAuth2 token fetch."; 55 VLOG(1) << "Network is offline. Deferring OAuth2 token fetch.";
54 BrowserThread::PostDelayedTask( 56 BrowserThread::PostDelayedTask(
55 BrowserThread::UI, 57 BrowserThread::UI,
56 FROM_HERE, 58 FROM_HERE,
57 base::Bind(&OAuth2TokenFetcher::StartExchangeFromCookies, 59 base::Bind(&OAuth2TokenFetcher::StartExchangeFromCookies,
58 AsWeakPtr(), 60 AsWeakPtr(),
59 session_index), 61 session_index,
62 signin_scoped_device_id),
60 base::TimeDelta::FromMilliseconds(kRequestRestartDelay)); 63 base::TimeDelta::FromMilliseconds(kRequestRestartDelay));
61 return; 64 return;
62 } 65 }
63 auth_fetcher_.StartCookieForOAuthLoginTokenExchange(session_index); 66 auth_fetcher_.StartCookieForOAuthLoginTokenExchangeWithDeviceId(
67 session_index, signin_scoped_device_id);
64 } 68 }
65 69
66 void OAuth2TokenFetcher::StartExchangeFromAuthCode( 70 void OAuth2TokenFetcher::StartExchangeFromAuthCode(
67 const std::string& auth_code) { 71 const std::string& auth_code) {
68 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 72 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
69 auth_code_ = auth_code; 73 auth_code_ = auth_code;
70 // Delay the verification if the network is not connected or on a captive 74 // Delay the verification if the network is not connected or on a captive
71 // portal. 75 // portal.
72 const NetworkState* default_network = 76 const NetworkState* default_network =
73 NetworkHandler::Get()->network_state_handler()->DefaultNetwork(); 77 NetworkHandler::Get()->network_state_handler()->DefaultNetwork();
(...skipping 21 matching lines...) Expand all
95 delegate_->OnOAuth2TokensAvailable(oauth_tokens_); 99 delegate_->OnOAuth2TokensAvailable(oauth_tokens_);
96 } 100 }
97 101
98 void OAuth2TokenFetcher::OnClientOAuthFailure( 102 void OAuth2TokenFetcher::OnClientOAuthFailure(
99 const GoogleServiceAuthError& error) { 103 const GoogleServiceAuthError& error) {
100 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 104 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
101 RetryOnError(error, 105 RetryOnError(error,
102 auth_code_.empty() 106 auth_code_.empty()
103 ? base::Bind(&OAuth2TokenFetcher::StartExchangeFromCookies, 107 ? base::Bind(&OAuth2TokenFetcher::StartExchangeFromCookies,
104 AsWeakPtr(), 108 AsWeakPtr(),
105 session_index_) 109 session_index_,
110 signin_scoped_device_id_)
106 : base::Bind(&OAuth2TokenFetcher::StartExchangeFromAuthCode, 111 : base::Bind(&OAuth2TokenFetcher::StartExchangeFromAuthCode,
107 AsWeakPtr(), 112 AsWeakPtr(),
108 auth_code_), 113 auth_code_),
109 base::Bind(&Delegate::OnOAuth2TokensFetchFailed, 114 base::Bind(&Delegate::OnOAuth2TokensFetchFailed,
110 base::Unretained(delegate_))); 115 base::Unretained(delegate_)));
111 } 116 }
112 117
113 void OAuth2TokenFetcher::RetryOnError(const GoogleServiceAuthError& error, 118 void OAuth2TokenFetcher::RetryOnError(const GoogleServiceAuthError& error,
114 const base::Closure& task, 119 const base::Closure& task,
115 const base::Closure& error_handler) { 120 const base::Closure& error_handler) {
116 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 121 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
117 if ((error.state() == GoogleServiceAuthError::CONNECTION_FAILED || 122 if ((error.state() == GoogleServiceAuthError::CONNECTION_FAILED ||
118 error.state() == GoogleServiceAuthError::SERVICE_UNAVAILABLE || 123 error.state() == GoogleServiceAuthError::SERVICE_UNAVAILABLE ||
119 error.state() == GoogleServiceAuthError::REQUEST_CANCELED) && 124 error.state() == GoogleServiceAuthError::REQUEST_CANCELED) &&
120 retry_count_ < kMaxRequestAttemptCount) { 125 retry_count_ < kMaxRequestAttemptCount) {
121 retry_count_++; 126 retry_count_++;
122 BrowserThread::PostDelayedTask( 127 BrowserThread::PostDelayedTask(
123 BrowserThread::UI, FROM_HERE, task, 128 BrowserThread::UI, FROM_HERE, task,
124 base::TimeDelta::FromMilliseconds(kRequestRestartDelay)); 129 base::TimeDelta::FromMilliseconds(kRequestRestartDelay));
125 return; 130 return;
126 } 131 }
127 LOG(ERROR) << "Unrecoverable error or retry count max reached. State: " 132 LOG(ERROR) << "Unrecoverable error or retry count max reached. State: "
128 << error.state() << ", network error: " << error.network_error() 133 << error.state() << ", network error: " << error.network_error()
129 << ", message: " << error.error_message(); 134 << ", message: " << error.error_message();
130 error_handler.Run(); 135 error_handler.Run();
131 } 136 }
132 137
133 } // namespace chromeos 138 } // namespace chromeos
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698