| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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/net/gaia/token_service.h" | 5 #include "chrome/browser/net/gaia/token_service.h" |
| 6 | 6 |
| 7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
| 8 #include "base/string_util.h" | 8 #include "base/string_util.h" |
| 9 #include "chrome/browser/profiles/profile.h" | 9 #include "chrome/browser/profiles/profile.h" |
| 10 #include "chrome/common/chrome_notification_types.h" |
| 10 #include "chrome/common/chrome_switches.h" | 11 #include "chrome/common/chrome_switches.h" |
| 11 #include "chrome/common/net/gaia/gaia_auth_fetcher.h" | 12 #include "chrome/common/net/gaia/gaia_auth_fetcher.h" |
| 12 #include "chrome/common/net/gaia/gaia_constants.h" | 13 #include "chrome/common/net/gaia/gaia_constants.h" |
| 13 #include "content/browser/browser_thread.h" | 14 #include "content/browser/browser_thread.h" |
| 14 #include "content/common/notification_service.h" | 15 #include "content/common/notification_service.h" |
| 15 #include "net/url_request/url_request_context_getter.h" | 16 #include "net/url_request/url_request_context_getter.h" |
| 16 | 17 |
| 17 // Unfortunately kNumServices must be defined in the .h. | 18 // Unfortunately kNumServices must be defined in the .h. |
| 18 // TODO(chron): Sync doesn't use the TalkToken anymore so we can stop | 19 // TODO(chron): Sync doesn't use the TalkToken anymore so we can stop |
| 19 // requesting it. | 20 // requesting it. |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 59 std::string value = cmd_line->GetSwitchValueASCII(switches::kSetToken); | 60 std::string value = cmd_line->GetSwitchValueASCII(switches::kSetToken); |
| 60 int separator = value.find(':'); | 61 int separator = value.find(':'); |
| 61 std::string service = value.substr(0, separator); | 62 std::string service = value.substr(0, separator); |
| 62 std::string token = value.substr(separator + 1); | 63 std::string token = value.substr(separator + 1); |
| 63 token_map_[service] = token; | 64 token_map_[service] = token; |
| 64 SaveAuthTokenToDB(service, token); | 65 SaveAuthTokenToDB(service, token); |
| 65 } | 66 } |
| 66 #endif | 67 #endif |
| 67 | 68 |
| 68 registrar_.Add(this, | 69 registrar_.Add(this, |
| 69 NotificationType::TOKEN_UPDATED, | 70 chrome::NOTIFICATION_TOKEN_UPDATED, |
| 70 NotificationService::AllSources()); | 71 NotificationService::AllSources()); |
| 71 } | 72 } |
| 72 | 73 |
| 73 void TokenService::ResetCredentialsInMemory() { | 74 void TokenService::ResetCredentialsInMemory() { |
| 74 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); | 75 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| 75 | 76 |
| 76 // Terminate any running fetchers. Callbacks will not return. | 77 // Terminate any running fetchers. Callbacks will not return. |
| 77 for (int i = 0; i < kNumServices; i++) { | 78 for (int i = 0; i < kNumServices; i++) { |
| 78 fetchers_[i].reset(); | 79 fetchers_[i].reset(); |
| 79 } | 80 } |
| (...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 160 // It can fire once from the DB read, and then once from the initial | 161 // It can fire once from the DB read, and then once from the initial |
| 161 // fetcher. Future fetches can cause more notification firings. | 162 // fetcher. Future fetches can cause more notification firings. |
| 162 // The DB read will not however fire a notification if the fetcher | 163 // The DB read will not however fire a notification if the fetcher |
| 163 // returned first. So it's always safe to use the latest notification. | 164 // returned first. So it's always safe to use the latest notification. |
| 164 void TokenService::FireTokenAvailableNotification( | 165 void TokenService::FireTokenAvailableNotification( |
| 165 const std::string& service, | 166 const std::string& service, |
| 166 const std::string& auth_token) { | 167 const std::string& auth_token) { |
| 167 | 168 |
| 168 TokenAvailableDetails details(service, auth_token); | 169 TokenAvailableDetails details(service, auth_token); |
| 169 NotificationService::current()->Notify( | 170 NotificationService::current()->Notify( |
| 170 NotificationType::TOKEN_AVAILABLE, | 171 chrome::NOTIFICATION_TOKEN_AVAILABLE, |
| 171 Source<TokenService>(this), | 172 Source<TokenService>(this), |
| 172 Details<const TokenAvailableDetails>(&details)); | 173 Details<const TokenAvailableDetails>(&details)); |
| 173 } | 174 } |
| 174 | 175 |
| 175 void TokenService::FireTokenRequestFailedNotification( | 176 void TokenService::FireTokenRequestFailedNotification( |
| 176 const std::string& service, | 177 const std::string& service, |
| 177 const GoogleServiceAuthError& error) { | 178 const GoogleServiceAuthError& error) { |
| 178 | 179 |
| 179 TokenRequestFailedDetails details(service, error); | 180 TokenRequestFailedDetails details(service, error); |
| 180 NotificationService::current()->Notify( | 181 NotificationService::current()->Notify( |
| 181 NotificationType::TOKEN_REQUEST_FAILED, | 182 chrome::NOTIFICATION_TOKEN_REQUEST_FAILED, |
| 182 Source<TokenService>(this), | 183 Source<TokenService>(this), |
| 183 Details<const TokenRequestFailedDetails>(&details)); | 184 Details<const TokenRequestFailedDetails>(&details)); |
| 184 } | 185 } |
| 185 | 186 |
| 186 void TokenService::IssueAuthTokenForTest(const std::string& service, | 187 void TokenService::IssueAuthTokenForTest(const std::string& service, |
| 187 const std::string& auth_token) { | 188 const std::string& auth_token) { |
| 188 token_map_[service] = auth_token; | 189 token_map_[service] = auth_token; |
| 189 FireTokenAvailableNotification(service, auth_token); | 190 FireTokenAvailableNotification(service, auth_token); |
| 190 } | 191 } |
| 191 | 192 |
| (...skipping 23 matching lines...) Expand all Loading... |
| 215 // load any tokens at all from the DB. | 216 // load any tokens at all from the DB. |
| 216 if (result) { | 217 if (result) { |
| 217 DCHECK(result->GetType() == TOKEN_RESULT); | 218 DCHECK(result->GetType() == TOKEN_RESULT); |
| 218 const WDResult<std::map<std::string, std::string> > * token_result = | 219 const WDResult<std::map<std::string, std::string> > * token_result = |
| 219 static_cast<const WDResult<std::map<std::string, std::string> > * > ( | 220 static_cast<const WDResult<std::map<std::string, std::string> > * > ( |
| 220 result); | 221 result); |
| 221 LoadTokensIntoMemory(token_result->GetValue(), &token_map_); | 222 LoadTokensIntoMemory(token_result->GetValue(), &token_map_); |
| 222 } | 223 } |
| 223 | 224 |
| 224 NotificationService::current()->Notify( | 225 NotificationService::current()->Notify( |
| 225 NotificationType::TOKEN_LOADING_FINISHED, | 226 chrome::NOTIFICATION_TOKEN_LOADING_FINISHED, |
| 226 Source<TokenService>(this), | 227 Source<TokenService>(this), |
| 227 NotificationService::NoDetails()); | 228 NotificationService::NoDetails()); |
| 228 } | 229 } |
| 229 | 230 |
| 230 // Load tokens from the db_token map into the in memory token map. | 231 // Load tokens from the db_token map into the in memory token map. |
| 231 void TokenService::LoadTokensIntoMemory( | 232 void TokenService::LoadTokensIntoMemory( |
| 232 const std::map<std::string, std::string>& db_tokens, | 233 const std::map<std::string, std::string>& db_tokens, |
| 233 std::map<std::string, std::string>* in_memory_tokens) { | 234 std::map<std::string, std::string>* in_memory_tokens) { |
| 234 | 235 |
| 235 for (int i = 0; i < kNumServices; i++) { | 236 for (int i = 0; i < kNumServices; i++) { |
| (...skipping 11 matching lines...) Expand all Loading... |
| 247 if (!db_token.empty()) { | 248 if (!db_token.empty()) { |
| 248 VLOG(1) << "Loading " << kServices[i] << "token from DB: " << db_token; | 249 VLOG(1) << "Loading " << kServices[i] << "token from DB: " << db_token; |
| 249 (*in_memory_tokens)[kServices[i]] = db_token; | 250 (*in_memory_tokens)[kServices[i]] = db_token; |
| 250 FireTokenAvailableNotification(kServices[i], db_token); | 251 FireTokenAvailableNotification(kServices[i], db_token); |
| 251 // Failures are only for network errors. | 252 // Failures are only for network errors. |
| 252 } | 253 } |
| 253 } | 254 } |
| 254 } | 255 } |
| 255 } | 256 } |
| 256 | 257 |
| 257 void TokenService::Observe(NotificationType type, | 258 void TokenService::Observe(int type, |
| 258 const NotificationSource& source, | 259 const NotificationSource& source, |
| 259 const NotificationDetails& details) { | 260 const NotificationDetails& details) { |
| 260 DCHECK(type == NotificationType::TOKEN_UPDATED); | 261 DCHECK(type == chrome::NOTIFICATION_TOKEN_UPDATED); |
| 261 TokenAvailableDetails* tok_details = | 262 TokenAvailableDetails* tok_details = |
| 262 Details<TokenAvailableDetails>(details).ptr(); | 263 Details<TokenAvailableDetails>(details).ptr(); |
| 263 OnIssueAuthTokenSuccess(tok_details->service(), tok_details->token()); | 264 OnIssueAuthTokenSuccess(tok_details->service(), tok_details->token()); |
| 264 } | 265 } |
| OLD | NEW |