| OLD | NEW |
| 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/supervised_user/legacy/supervised_user_refresh_token_fe
tcher.h" | 5 #include "chrome/browser/supervised_user/legacy/supervised_user_refresh_token_fe
tcher.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/stringprintf.h" | 10 #include "base/strings/stringprintf.h" |
| 11 #include "base/values.h" | 11 #include "base/values.h" |
| 12 #include "components/user_manager/user_id.h" |
| 12 #include "google_apis/gaia/gaia_constants.h" | 13 #include "google_apis/gaia/gaia_constants.h" |
| 13 #include "google_apis/gaia/gaia_oauth_client.h" | 14 #include "google_apis/gaia/gaia_oauth_client.h" |
| 14 #include "google_apis/gaia/gaia_urls.h" | 15 #include "google_apis/gaia/gaia_urls.h" |
| 15 #include "google_apis/gaia/google_service_auth_error.h" | 16 #include "google_apis/gaia/google_service_auth_error.h" |
| 16 #include "google_apis/gaia/oauth2_api_call_flow.h" | 17 #include "google_apis/gaia/oauth2_api_call_flow.h" |
| 17 #include "google_apis/gaia/oauth2_token_service.h" | 18 #include "google_apis/gaia/oauth2_token_service.h" |
| 18 #include "net/base/escape.h" | 19 #include "net/base/escape.h" |
| 19 #include "net/base/load_flags.h" | 20 #include "net/base/load_flags.h" |
| 20 #include "net/base/net_errors.h" | 21 #include "net/base/net_errors.h" |
| 21 #include "net/http/http_status_code.h" | 22 #include "net/http/http_status_code.h" |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 56 public GaiaOAuthClient::Delegate { | 57 public GaiaOAuthClient::Delegate { |
| 57 public: | 58 public: |
| 58 SupervisedUserRefreshTokenFetcherImpl( | 59 SupervisedUserRefreshTokenFetcherImpl( |
| 59 OAuth2TokenService* oauth2_token_service, | 60 OAuth2TokenService* oauth2_token_service, |
| 60 const std::string& account_id, | 61 const std::string& account_id, |
| 61 const std::string& device_id, | 62 const std::string& device_id, |
| 62 URLRequestContextGetter* context); | 63 URLRequestContextGetter* context); |
| 63 ~SupervisedUserRefreshTokenFetcherImpl() override; | 64 ~SupervisedUserRefreshTokenFetcherImpl() override; |
| 64 | 65 |
| 65 // SupervisedUserRefreshTokenFetcher implementation: | 66 // SupervisedUserRefreshTokenFetcher implementation: |
| 66 void Start(const std::string& supervised_user_id, | 67 void Start(const user_manager::UserID& supervised_user_id, |
| 67 const std::string& device_name, | 68 const std::string& device_name, |
| 68 const TokenCallback& callback) override; | 69 const TokenCallback& callback) override; |
| 69 | 70 |
| 70 protected: | 71 protected: |
| 71 // OAuth2TokenService::Consumer implementation: | 72 // OAuth2TokenService::Consumer implementation: |
| 72 void OnGetTokenSuccess(const OAuth2TokenService::Request* request, | 73 void OnGetTokenSuccess(const OAuth2TokenService::Request* request, |
| 73 const std::string& access_token, | 74 const std::string& access_token, |
| 74 const Time& expiration_time) override; | 75 const Time& expiration_time) override; |
| 75 void OnGetTokenFailure(const OAuth2TokenService::Request* request, | 76 void OnGetTokenFailure(const OAuth2TokenService::Request* request, |
| 76 const GoogleServiceAuthError& error) override; | 77 const GoogleServiceAuthError& error) override; |
| (...skipping 17 matching lines...) Expand all Loading... |
| 94 | 95 |
| 95 void DispatchNetworkError(int error_code); | 96 void DispatchNetworkError(int error_code); |
| 96 void DispatchGoogleServiceAuthError(const GoogleServiceAuthError& error, | 97 void DispatchGoogleServiceAuthError(const GoogleServiceAuthError& error, |
| 97 const std::string& token); | 98 const std::string& token); |
| 98 OAuth2TokenService* oauth2_token_service_; | 99 OAuth2TokenService* oauth2_token_service_; |
| 99 std::string account_id_; | 100 std::string account_id_; |
| 100 std::string device_id_; | 101 std::string device_id_; |
| 101 URLRequestContextGetter* context_; | 102 URLRequestContextGetter* context_; |
| 102 | 103 |
| 103 std::string device_name_; | 104 std::string device_name_; |
| 104 std::string supervised_user_id_; | 105 user_manager::UserID supervised_user_id_; |
| 105 TokenCallback callback_; | 106 TokenCallback callback_; |
| 106 | 107 |
| 107 scoped_ptr<OAuth2TokenService::Request> access_token_request_; | 108 scoped_ptr<OAuth2TokenService::Request> access_token_request_; |
| 108 std::string access_token_; | 109 std::string access_token_; |
| 109 bool access_token_expired_; | 110 bool access_token_expired_; |
| 110 scoped_ptr<URLFetcher> url_fetcher_; | 111 scoped_ptr<URLFetcher> url_fetcher_; |
| 111 scoped_ptr<GaiaOAuthClient> gaia_oauth_client_; | 112 scoped_ptr<GaiaOAuthClient> gaia_oauth_client_; |
| 112 }; | 113 }; |
| 113 | 114 |
| 114 SupervisedUserRefreshTokenFetcherImpl::SupervisedUserRefreshTokenFetcherImpl( | 115 SupervisedUserRefreshTokenFetcherImpl::SupervisedUserRefreshTokenFetcherImpl( |
| 115 OAuth2TokenService* oauth2_token_service, | 116 OAuth2TokenService* oauth2_token_service, |
| 116 const std::string& account_id, | 117 const std::string& account_id, |
| 117 const std::string& device_id, | 118 const std::string& device_id, |
| 118 URLRequestContextGetter* context) | 119 URLRequestContextGetter* context) |
| 119 : OAuth2TokenService::Consumer("supervised_user"), | 120 : OAuth2TokenService::Consumer("supervised_user"), |
| 120 oauth2_token_service_(oauth2_token_service), | 121 oauth2_token_service_(oauth2_token_service), |
| 121 account_id_(account_id), | 122 account_id_(account_id), |
| 122 device_id_(device_id), | 123 device_id_(device_id), |
| 123 context_(context), | 124 context_(context), |
| 125 supervised_user_id_(std::string(), std::string()), |
| 124 access_token_expired_(false) {} | 126 access_token_expired_(false) {} |
| 125 | 127 |
| 126 SupervisedUserRefreshTokenFetcherImpl:: | 128 SupervisedUserRefreshTokenFetcherImpl:: |
| 127 ~SupervisedUserRefreshTokenFetcherImpl() {} | 129 ~SupervisedUserRefreshTokenFetcherImpl() {} |
| 128 | 130 |
| 129 void SupervisedUserRefreshTokenFetcherImpl::Start( | 131 void SupervisedUserRefreshTokenFetcherImpl::Start( |
| 130 const std::string& supervised_user_id, | 132 const user_manager::UserID& supervised_user_id, |
| 131 const std::string& device_name, | 133 const std::string& device_name, |
| 132 const TokenCallback& callback) { | 134 const TokenCallback& callback) { |
| 133 DCHECK(callback_.is_null()); | 135 DCHECK(callback_.is_null()); |
| 134 supervised_user_id_ = supervised_user_id; | 136 supervised_user_id_ = supervised_user_id; |
| 135 device_name_ = device_name; | 137 device_name_ = device_name; |
| 136 callback_ = callback; | 138 callback_ = callback; |
| 137 StartFetching(); | 139 StartFetching(); |
| 138 } | 140 } |
| 139 | 141 |
| 140 void SupervisedUserRefreshTokenFetcherImpl::StartFetching() { | 142 void SupervisedUserRefreshTokenFetcherImpl::StartFetching() { |
| (...skipping 22 matching lines...) Expand all Loading... |
| 163 net::LOAD_DO_NOT_SAVE_COOKIES); | 165 net::LOAD_DO_NOT_SAVE_COOKIES); |
| 164 url_fetcher_->SetAutomaticallyRetryOnNetworkChanges(kNumRetries); | 166 url_fetcher_->SetAutomaticallyRetryOnNetworkChanges(kNumRetries); |
| 165 url_fetcher_->AddExtraRequestHeader( | 167 url_fetcher_->AddExtraRequestHeader( |
| 166 base::StringPrintf(kAuthorizationHeaderFormat, access_token.c_str())); | 168 base::StringPrintf(kAuthorizationHeaderFormat, access_token.c_str())); |
| 167 | 169 |
| 168 std::string body = base::StringPrintf( | 170 std::string body = base::StringPrintf( |
| 169 kIssueTokenBodyFormat, | 171 kIssueTokenBodyFormat, |
| 170 net::EscapeUrlEncodedData( | 172 net::EscapeUrlEncodedData( |
| 171 GaiaUrls::GetInstance()->oauth2_chrome_client_id(), true).c_str(), | 173 GaiaUrls::GetInstance()->oauth2_chrome_client_id(), true).c_str(), |
| 172 net::EscapeUrlEncodedData(kChromeSyncSupervisedOAuth2Scope, true).c_str(), | 174 net::EscapeUrlEncodedData(kChromeSyncSupervisedOAuth2Scope, true).c_str(), |
| 173 net::EscapeUrlEncodedData(supervised_user_id_, true).c_str(), | 175 net::EscapeUrlEncodedData(supervised_user_id_.GetUserEmail(), true).c_str(
), |
| 174 net::EscapeUrlEncodedData(device_name_, true).c_str()); | 176 net::EscapeUrlEncodedData(device_name_, true).c_str()); |
| 175 if (!device_id_.empty()) { | 177 if (!device_id_.empty()) { |
| 176 body.append(base::StringPrintf( | 178 body.append(base::StringPrintf( |
| 177 kIssueTokenBodyFormatDeviceIdAddendum, | 179 kIssueTokenBodyFormatDeviceIdAddendum, |
| 178 net::EscapeUrlEncodedData(device_id_, true).c_str())); | 180 net::EscapeUrlEncodedData(device_id_, true).c_str())); |
| 179 } | 181 } |
| 180 url_fetcher_->SetUploadData("application/x-www-form-urlencoded", body); | 182 url_fetcher_->SetUploadData("application/x-www-form-urlencoded", body); |
| 181 | 183 |
| 182 url_fetcher_->Start(); | 184 url_fetcher_->Start(); |
| 183 } | 185 } |
| (...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 294 URLRequestContextGetter* context) { | 296 URLRequestContextGetter* context) { |
| 295 scoped_ptr<SupervisedUserRefreshTokenFetcher> fetcher( | 297 scoped_ptr<SupervisedUserRefreshTokenFetcher> fetcher( |
| 296 new SupervisedUserRefreshTokenFetcherImpl(oauth2_token_service, | 298 new SupervisedUserRefreshTokenFetcherImpl(oauth2_token_service, |
| 297 account_id, | 299 account_id, |
| 298 device_id, | 300 device_id, |
| 299 context)); | 301 context)); |
| 300 return fetcher.Pass(); | 302 return fetcher.Pass(); |
| 301 } | 303 } |
| 302 | 304 |
| 303 SupervisedUserRefreshTokenFetcher::~SupervisedUserRefreshTokenFetcher() {} | 305 SupervisedUserRefreshTokenFetcher::~SupervisedUserRefreshTokenFetcher() {} |
| OLD | NEW |