OLD | NEW |
---|---|
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 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/chromeos/policy/policy_oauth2_token_fetcher.h" | 5 #include "chrome/browser/chromeos/policy/policy_oauth2_token_fetcher.h" |
6 | 6 |
7 #include <vector> | 7 #include <vector> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/logging.h" | 10 #include "base/logging.h" |
(...skipping 13 matching lines...) Expand all Loading... | |
24 namespace { | 24 namespace { |
25 | 25 |
26 // Max retry count for token fetching requests. | 26 // Max retry count for token fetching requests. |
27 const int kMaxRequestAttemptCount = 5; | 27 const int kMaxRequestAttemptCount = 5; |
28 | 28 |
29 // OAuth token request retry delay in milliseconds. | 29 // OAuth token request retry delay in milliseconds. |
30 const int kRequestRestartDelay = 3000; | 30 const int kRequestRestartDelay = 3000; |
31 | 31 |
32 } // namespace | 32 } // namespace |
33 | 33 |
34 bool PolicyOAuth2TokenFetcher::enable_fake_for_testing_ = false; | |
achuithb
2016/03/03 22:45:00
do we use comment //static here? I think we do?
jdufault
2016/03/04 20:42:47
Done.
| |
35 | |
34 PolicyOAuth2TokenFetcher::PolicyOAuth2TokenFetcher() { | 36 PolicyOAuth2TokenFetcher::PolicyOAuth2TokenFetcher() { |
35 } | 37 } |
36 | 38 |
37 PolicyOAuth2TokenFetcher::~PolicyOAuth2TokenFetcher() { | 39 PolicyOAuth2TokenFetcher::~PolicyOAuth2TokenFetcher() { |
38 } | 40 } |
39 | 41 |
40 void PolicyOAuth2TokenFetcher::StartWithSigninContext( | 42 void PolicyOAuth2TokenFetcher::StartWithSigninContext( |
41 net::URLRequestContextGetter* auth_context_getter, | 43 net::URLRequestContextGetter* auth_context_getter, |
42 net::URLRequestContextGetter* system_context_getter, | 44 net::URLRequestContextGetter* system_context_getter, |
43 const TokenCallback& callback) { | 45 const TokenCallback& callback) { |
44 DCHECK(!refresh_token_fetcher_ && !access_token_fetcher_); | 46 DCHECK(!refresh_token_fetcher_ && !access_token_fetcher_); |
45 | 47 |
46 auth_context_getter_ = auth_context_getter; | 48 auth_context_getter_ = auth_context_getter; |
47 system_context_getter_ = system_context_getter; | 49 system_context_getter_ = system_context_getter; |
48 callback_ = callback; | 50 callback_ = callback; |
51 | |
52 if (enable_fake_for_testing_) { | |
achuithb
2016/03/03 22:45:00
Rather than pollute this class, is it possible to
jdufault
2016/03/03 23:11:04
Sure; I will have to make PolicyOAuth2TokenFetcher
achuithb
2016/03/03 23:23:43
I think that would be cleaner?
achuithb
2016/03/04 19:12:37
Or maybe this is too much work for not much gain.
jdufault
2016/03/04 20:42:47
Done. Also moved the impl header file to the cc fi
| |
53 OnGetTokenSuccess("authcode", | |
54 base::Time::Now() + base::TimeDelta::FromMinutes(5)); | |
55 return; | |
56 } | |
57 | |
49 StartFetchingRefreshToken(); | 58 StartFetchingRefreshToken(); |
50 } | 59 } |
51 | 60 |
52 void PolicyOAuth2TokenFetcher::StartWithAuthCode( | 61 void PolicyOAuth2TokenFetcher::StartWithAuthCode( |
53 const std::string& auth_code, | 62 const std::string& auth_code, |
54 net::URLRequestContextGetter* system_context_getter, | 63 net::URLRequestContextGetter* system_context_getter, |
55 const TokenCallback& callback) { | 64 const TokenCallback& callback) { |
56 DCHECK(!refresh_token_fetcher_ && !access_token_fetcher_); | 65 DCHECK(!refresh_token_fetcher_ && !access_token_fetcher_); |
57 | 66 |
58 auth_code_ = auth_code; | 67 auth_code_ = auth_code; |
59 system_context_getter_ = system_context_getter; | 68 system_context_getter_ = system_context_getter; |
60 callback_ = callback; | 69 callback_ = callback; |
70 | |
71 if (enable_fake_for_testing_) { | |
72 OnGetTokenSuccess("authcode", | |
73 base::Time::Now() + base::TimeDelta::FromMinutes(5)); | |
74 return; | |
75 } | |
76 | |
61 StartFetchingRefreshToken(); | 77 StartFetchingRefreshToken(); |
62 } | 78 } |
63 | 79 |
64 void PolicyOAuth2TokenFetcher::StartWithRefreshToken( | 80 void PolicyOAuth2TokenFetcher::StartWithRefreshToken( |
65 const std::string& oauth2_refresh_token, | 81 const std::string& oauth2_refresh_token, |
66 net::URLRequestContextGetter* system_context_getter, | 82 net::URLRequestContextGetter* system_context_getter, |
67 const TokenCallback& callback) { | 83 const TokenCallback& callback) { |
68 DCHECK(!refresh_token_fetcher_ && !access_token_fetcher_); | 84 DCHECK(!refresh_token_fetcher_ && !access_token_fetcher_); |
69 | 85 |
70 oauth2_refresh_token_ = oauth2_refresh_token; | 86 oauth2_refresh_token_ = oauth2_refresh_token; |
71 system_context_getter_ = system_context_getter; | 87 system_context_getter_ = system_context_getter; |
72 callback_ = callback; | 88 callback_ = callback; |
89 | |
90 if (enable_fake_for_testing_) { | |
91 OnGetTokenSuccess("authcode", | |
92 base::Time::Now() + base::TimeDelta::FromMinutes(5)); | |
93 return; | |
94 } | |
95 | |
73 StartFetchingAccessToken(); | 96 StartFetchingAccessToken(); |
74 } | 97 } |
75 | 98 |
76 void PolicyOAuth2TokenFetcher::StartFetchingRefreshToken() { | 99 void PolicyOAuth2TokenFetcher::StartFetchingRefreshToken() { |
77 if (auth_code_.empty()) { | 100 if (auth_code_.empty()) { |
78 refresh_token_fetcher_.reset(new GaiaAuthFetcher( | 101 refresh_token_fetcher_.reset(new GaiaAuthFetcher( |
79 this, GaiaConstants::kChromeSource, auth_context_getter_.get())); | 102 this, GaiaConstants::kChromeSource, auth_context_getter_.get())); |
80 refresh_token_fetcher_->StartCookieForOAuthLoginTokenExchange( | 103 refresh_token_fetcher_->StartCookieForOAuthLoginTokenExchange( |
81 std::string()); | 104 std::string()); |
82 } else { | 105 } else { |
(...skipping 10 matching lines...) Expand all Loading... | |
93 access_token_fetcher_.reset( | 116 access_token_fetcher_.reset( |
94 new OAuth2AccessTokenFetcherImpl(this, | 117 new OAuth2AccessTokenFetcherImpl(this, |
95 system_context_getter_.get(), | 118 system_context_getter_.get(), |
96 oauth2_refresh_token_)); | 119 oauth2_refresh_token_)); |
97 access_token_fetcher_->Start( | 120 access_token_fetcher_->Start( |
98 GaiaUrls::GetInstance()->oauth2_chrome_client_id(), | 121 GaiaUrls::GetInstance()->oauth2_chrome_client_id(), |
99 GaiaUrls::GetInstance()->oauth2_chrome_client_secret(), | 122 GaiaUrls::GetInstance()->oauth2_chrome_client_secret(), |
100 scopes); | 123 scopes); |
101 } | 124 } |
102 | 125 |
126 void PolicyOAuth2TokenFetcher::EnableFakeForTesting() { | |
127 enable_fake_for_testing_ = true; | |
128 } | |
129 | |
103 void PolicyOAuth2TokenFetcher::OnClientOAuthSuccess( | 130 void PolicyOAuth2TokenFetcher::OnClientOAuthSuccess( |
104 const GaiaAuthConsumer::ClientOAuthResult& oauth2_tokens) { | 131 const GaiaAuthConsumer::ClientOAuthResult& oauth2_tokens) { |
105 VLOG(1) << "OAuth2 tokens for policy fetching succeeded."; | 132 VLOG(1) << "OAuth2 tokens for policy fetching succeeded."; |
106 oauth2_refresh_token_ = oauth2_tokens.refresh_token; | 133 oauth2_refresh_token_ = oauth2_tokens.refresh_token; |
107 retry_count_ = 0; | 134 retry_count_ = 0; |
108 StartFetchingAccessToken(); | 135 StartFetchingAccessToken(); |
109 } | 136 } |
110 | 137 |
111 void PolicyOAuth2TokenFetcher::OnClientOAuthFailure( | 138 void PolicyOAuth2TokenFetcher::OnClientOAuthFailure( |
112 const GoogleServiceAuthError& error) { | 139 const GoogleServiceAuthError& error) { |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
154 } | 181 } |
155 | 182 |
156 void PolicyOAuth2TokenFetcher::ForwardPolicyToken( | 183 void PolicyOAuth2TokenFetcher::ForwardPolicyToken( |
157 const std::string& token, | 184 const std::string& token, |
158 const GoogleServiceAuthError& error) { | 185 const GoogleServiceAuthError& error) { |
159 if (!callback_.is_null()) | 186 if (!callback_.is_null()) |
160 callback_.Run(token, error); | 187 callback_.Run(token, error); |
161 } | 188 } |
162 | 189 |
163 } // namespace policy | 190 } // namespace policy |
OLD | NEW |