OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/managed_mode/managed_user_refresh_token_fetcher.h" | 5 #include "chrome/browser/managed_mode/managed_user_refresh_token_fetcher.h" |
6 | 6 |
7 #include "base/callback.h" | 7 #include "base/callback.h" |
8 #include "base/json/json_reader.h" | 8 #include "base/json/json_reader.h" |
9 #include "base/logging.h" | 9 #include "base/logging.h" |
10 #include "base/strings/string16.h" | 10 #include "base/strings/string16.h" |
11 #include "base/strings/stringprintf.h" | 11 #include "base/strings/stringprintf.h" |
12 #include "base/strings/utf_string_conversions.h" | 12 #include "base/strings/utf_string_conversions.h" |
13 #include "base/values.h" | 13 #include "base/values.h" |
14 #include "chrome/browser/signin/oauth2_token_service.h" | 14 #include "chrome/browser/signin/oauth2_token_service.h" |
| 15 #include "google_apis/gaia/gaia_constants.h" |
15 #include "google_apis/gaia/gaia_oauth_client.h" | 16 #include "google_apis/gaia/gaia_oauth_client.h" |
16 #include "google_apis/gaia/gaia_urls.h" | 17 #include "google_apis/gaia/gaia_urls.h" |
17 #include "google_apis/gaia/google_service_auth_error.h" | 18 #include "google_apis/gaia/google_service_auth_error.h" |
18 #include "google_apis/gaia/oauth2_api_call_flow.h" | 19 #include "google_apis/gaia/oauth2_api_call_flow.h" |
19 #include "net/base/escape.h" | 20 #include "net/base/escape.h" |
20 #include "net/base/load_flags.h" | 21 #include "net/base/load_flags.h" |
21 #include "net/base/net_errors.h" | 22 #include "net/base/net_errors.h" |
22 #include "net/http/http_status_code.h" | 23 #include "net/http/http_status_code.h" |
23 #include "net/url_request/url_fetcher.h" | 24 #include "net/url_request/url_fetcher.h" |
24 #include "net/url_request/url_request_status.h" | 25 #include "net/url_request/url_request_status.h" |
25 | 26 |
26 using base::Time; | 27 using base::Time; |
27 using gaia::GaiaOAuthClient; | 28 using gaia::GaiaOAuthClient; |
| 29 using GaiaConstants::kChromeSyncManagedOAuth2Scope; |
28 using net::URLFetcher; | 30 using net::URLFetcher; |
29 using net::URLFetcherDelegate; | 31 using net::URLFetcherDelegate; |
30 using net::URLRequestContextGetter; | 32 using net::URLRequestContextGetter; |
31 | 33 |
32 namespace { | 34 namespace { |
33 | 35 |
34 const int kNumRetries = 1; | 36 const int kNumRetries = 1; |
35 | 37 |
36 static const char kChromeSyncManagedScope[] = | |
37 "https://www.googleapis.com/auth/chromesync_playpen"; | |
38 | |
39 static const char kIssueTokenBodyFormat[] = | 38 static const char kIssueTokenBodyFormat[] = |
40 "client_id=%s" | 39 "client_id=%s" |
41 "&scope=%s" | 40 "&scope=%s" |
42 "&response_type=code" | 41 "&response_type=code" |
43 "&profile_id=%s" | 42 "&profile_id=%s" |
44 "&profile_name=%s" | 43 "&profile_name=%s" |
45 "&device_name=%s"; | 44 "&device_name=%s"; |
46 | 45 |
47 static const char kAuthorizationHeaderFormat[] = | 46 static const char kAuthorizationHeaderFormat[] = |
48 "Authorization: Bearer %s"; | 47 "Authorization: Bearer %s"; |
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
154 url_fetcher_->SetLoadFlags(net::LOAD_DO_NOT_SEND_COOKIES | | 153 url_fetcher_->SetLoadFlags(net::LOAD_DO_NOT_SEND_COOKIES | |
155 net::LOAD_DO_NOT_SAVE_COOKIES); | 154 net::LOAD_DO_NOT_SAVE_COOKIES); |
156 url_fetcher_->SetAutomaticallyRetryOnNetworkChanges(kNumRetries); | 155 url_fetcher_->SetAutomaticallyRetryOnNetworkChanges(kNumRetries); |
157 url_fetcher_->AddExtraRequestHeader( | 156 url_fetcher_->AddExtraRequestHeader( |
158 base::StringPrintf(kAuthorizationHeaderFormat, access_token.c_str())); | 157 base::StringPrintf(kAuthorizationHeaderFormat, access_token.c_str())); |
159 | 158 |
160 std::string body = base::StringPrintf( | 159 std::string body = base::StringPrintf( |
161 kIssueTokenBodyFormat, | 160 kIssueTokenBodyFormat, |
162 net::EscapeUrlEncodedData( | 161 net::EscapeUrlEncodedData( |
163 GaiaUrls::GetInstance()->oauth2_chrome_client_id(), true).c_str(), | 162 GaiaUrls::GetInstance()->oauth2_chrome_client_id(), true).c_str(), |
164 net::EscapeUrlEncodedData(kChromeSyncManagedScope, true).c_str(), | 163 net::EscapeUrlEncodedData(kChromeSyncManagedOAuth2Scope, true).c_str(), |
165 net::EscapeUrlEncodedData(managed_user_id_, true).c_str(), | 164 net::EscapeUrlEncodedData(managed_user_id_, true).c_str(), |
166 net::EscapeUrlEncodedData(UTF16ToUTF8(name_), true).c_str(), | 165 net::EscapeUrlEncodedData(UTF16ToUTF8(name_), true).c_str(), |
167 net::EscapeUrlEncodedData(device_name_, true).c_str()); | 166 net::EscapeUrlEncodedData(device_name_, true).c_str()); |
168 url_fetcher_->SetUploadData("application/x-www-form-urlencoded", body); | 167 url_fetcher_->SetUploadData("application/x-www-form-urlencoded", body); |
169 | 168 |
170 url_fetcher_->Start(); | 169 url_fetcher_->Start(); |
171 } | 170 } |
172 | 171 |
173 void ManagedUserRefreshTokenFetcherImpl::OnGetTokenFailure( | 172 void ManagedUserRefreshTokenFetcherImpl::OnGetTokenFailure( |
174 const OAuth2TokenService::Request* request, | 173 const OAuth2TokenService::Request* request, |
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
276 // static | 275 // static |
277 scoped_ptr<ManagedUserRefreshTokenFetcher> | 276 scoped_ptr<ManagedUserRefreshTokenFetcher> |
278 ManagedUserRefreshTokenFetcher::Create(OAuth2TokenService* oauth2_token_service, | 277 ManagedUserRefreshTokenFetcher::Create(OAuth2TokenService* oauth2_token_service, |
279 URLRequestContextGetter* context) { | 278 URLRequestContextGetter* context) { |
280 scoped_ptr<ManagedUserRefreshTokenFetcher> fetcher( | 279 scoped_ptr<ManagedUserRefreshTokenFetcher> fetcher( |
281 new ManagedUserRefreshTokenFetcherImpl(oauth2_token_service, context)); | 280 new ManagedUserRefreshTokenFetcherImpl(oauth2_token_service, context)); |
282 return fetcher.Pass(); | 281 return fetcher.Pass(); |
283 } | 282 } |
284 | 283 |
285 ManagedUserRefreshTokenFetcher::~ManagedUserRefreshTokenFetcher() {} | 284 ManagedUserRefreshTokenFetcher::~ManagedUserRefreshTokenFetcher() {} |
OLD | NEW |