| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/profiles/profile_downloader.h" | 5 #include "chrome/browser/profiles/profile_downloader.h" |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 #include <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "base/json/json_reader.h" | 10 #include "base/json/json_reader.h" |
| 11 #include "base/logging.h" | 11 #include "base/logging.h" |
| 12 #include "base/message_loop.h" | 12 #include "base/message_loop.h" |
| 13 #include "base/string_split.h" | 13 #include "base/string_split.h" |
| 14 #include "base/string_util.h" | 14 #include "base/string_util.h" |
| 15 #include "base/stringprintf.h" | 15 #include "base/stringprintf.h" |
| 16 #include "chrome/browser/profiles/profile.h" | 16 #include "chrome/browser/profiles/profile.h" |
| 17 #include "chrome/browser/profiles/profile_downloader_delegate.h" | 17 #include "chrome/browser/profiles/profile_downloader_delegate.h" |
| 18 #include "chrome/browser/signin/token_service.h" | 18 #include "chrome/browser/signin/token_service.h" |
| 19 #include "chrome/common/chrome_notification_types.h" | 19 #include "chrome/common/chrome_notification_types.h" |
| 20 #include "chrome/common/net/gaia/gaia_constants.h" | 20 #include "chrome/common/net/gaia/gaia_constants.h" |
| 21 #include "chrome/common/net/gaia/gaia_urls.h" | 21 #include "chrome/common/net/gaia/gaia_urls.h" |
| 22 #include "chrome/common/net/gaia/oauth2_access_token_fetcher.h" | 22 #include "chrome/common/net/gaia/oauth2_access_token_fetcher.h" |
| 23 #include "content/public/browser/browser_thread.h" | 23 #include "content/public/browser/browser_thread.h" |
| 24 #include "content/public/browser/notification_details.h" | 24 #include "content/public/browser/notification_details.h" |
| 25 #include "content/public/browser/notification_observer.h" | 25 #include "content/public/browser/notification_observer.h" |
| 26 #include "content/public/browser/notification_registrar.h" | 26 #include "content/public/browser/notification_registrar.h" |
| 27 #include "content/public/browser/notification_source.h" | 27 #include "content/public/browser/notification_source.h" |
| 28 #include "content/public/browser/notification_types.h" | 28 #include "content/public/browser/notification_types.h" |
| 29 #include "content/public/common/content_url_request_user_data.h" |
| 29 #include "content/public/common/url_fetcher.h" | 30 #include "content/public/common/url_fetcher.h" |
| 30 #include "googleurl/src/gurl.h" | 31 #include "googleurl/src/gurl.h" |
| 31 #include "net/base/load_flags.h" | 32 #include "net/base/load_flags.h" |
| 32 #include "skia/ext/image_operations.h" | 33 #include "skia/ext/image_operations.h" |
| 33 | 34 |
| 34 using content::BrowserThread; | 35 using content::BrowserThread; |
| 35 | 36 |
| 36 namespace { | 37 namespace { |
| 37 | 38 |
| 38 // Template for optional authorization header when using an OAuth access token. | 39 // Template for optional authorization header when using an OAuth access token. |
| (...skipping 199 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 238 std::string ProfileDownloader::GetProfilePictureURL() const { | 239 std::string ProfileDownloader::GetProfilePictureURL() const { |
| 239 return picture_url_; | 240 return picture_url_; |
| 240 } | 241 } |
| 241 | 242 |
| 242 void ProfileDownloader::StartFetchingImage() { | 243 void ProfileDownloader::StartFetchingImage() { |
| 243 VLOG(1) << "Fetching user entry with token: " << auth_token_; | 244 VLOG(1) << "Fetching user entry with token: " << auth_token_; |
| 244 user_entry_fetcher_.reset(content::URLFetcher::Create( | 245 user_entry_fetcher_.reset(content::URLFetcher::Create( |
| 245 GURL(kUserEntryURL), content::URLFetcher::GET, this)); | 246 GURL(kUserEntryURL), content::URLFetcher::GET, this)); |
| 246 user_entry_fetcher_->SetRequestContext( | 247 user_entry_fetcher_->SetRequestContext( |
| 247 delegate_->GetBrowserProfile()->GetRequestContext()); | 248 delegate_->GetBrowserProfile()->GetRequestContext()); |
| 249 // TODO(jochen): Do cookie audit. |
| 250 user_entry_fetcher_->SetContentURLRequestUserData( |
| 251 new content::ContentURLRequestUserData()); |
| 248 user_entry_fetcher_->SetLoadFlags(net::LOAD_DO_NOT_SAVE_COOKIES); | 252 user_entry_fetcher_->SetLoadFlags(net::LOAD_DO_NOT_SAVE_COOKIES); |
| 249 if (!auth_token_.empty()) { | 253 if (!auth_token_.empty()) { |
| 250 user_entry_fetcher_->SetExtraRequestHeaders( | 254 user_entry_fetcher_->SetExtraRequestHeaders( |
| 251 base::StringPrintf(kAuthorizationHeader, auth_token_.c_str())); | 255 base::StringPrintf(kAuthorizationHeader, auth_token_.c_str())); |
| 252 } | 256 } |
| 253 user_entry_fetcher_->Start(); | 257 user_entry_fetcher_->Start(); |
| 254 } | 258 } |
| 255 | 259 |
| 256 void ProfileDownloader::StartFetchingOAuth2AccessToken() { | 260 void ProfileDownloader::StartFetchingOAuth2AccessToken() { |
| 257 TokenService* service = delegate_->GetBrowserProfile()->GetTokenService(); | 261 TokenService* service = delegate_->GetBrowserProfile()->GetTokenService(); |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 300 picture_status_ = PICTURE_CACHED; | 304 picture_status_ = PICTURE_CACHED; |
| 301 delegate_->OnDownloadComplete(this, true); | 305 delegate_->OnDownloadComplete(this, true); |
| 302 return; | 306 return; |
| 303 } | 307 } |
| 304 VLOG(1) << "Fetching profile image from " << image_url; | 308 VLOG(1) << "Fetching profile image from " << image_url; |
| 305 picture_url_ = image_url; | 309 picture_url_ = image_url; |
| 306 profile_image_fetcher_.reset(content::URLFetcher::Create( | 310 profile_image_fetcher_.reset(content::URLFetcher::Create( |
| 307 GURL(image_url), content::URLFetcher::GET, this)); | 311 GURL(image_url), content::URLFetcher::GET, this)); |
| 308 profile_image_fetcher_->SetRequestContext( | 312 profile_image_fetcher_->SetRequestContext( |
| 309 delegate_->GetBrowserProfile()->GetRequestContext()); | 313 delegate_->GetBrowserProfile()->GetRequestContext()); |
| 314 // TODO(jochen): Do cookie audit. |
| 315 profile_image_fetcher_->SetContentURLRequestUserData( |
| 316 new content::ContentURLRequestUserData()); |
| 310 profile_image_fetcher_->SetLoadFlags(net::LOAD_DO_NOT_SAVE_COOKIES); | 317 profile_image_fetcher_->SetLoadFlags(net::LOAD_DO_NOT_SAVE_COOKIES); |
| 311 if (!auth_token_.empty()) { | 318 if (!auth_token_.empty()) { |
| 312 profile_image_fetcher_->SetExtraRequestHeaders( | 319 profile_image_fetcher_->SetExtraRequestHeaders( |
| 313 base::StringPrintf(kAuthorizationHeader, auth_token_.c_str())); | 320 base::StringPrintf(kAuthorizationHeader, auth_token_.c_str())); |
| 314 } | 321 } |
| 315 profile_image_fetcher_->Start(); | 322 profile_image_fetcher_->Start(); |
| 316 } else if (source == profile_image_fetcher_.get()) { | 323 } else if (source == profile_image_fetcher_.get()) { |
| 317 VLOG(1) << "Decoding the image..."; | 324 VLOG(1) << "Decoding the image..."; |
| 318 scoped_refptr<ImageDecoder> image_decoder = new ImageDecoder( | 325 scoped_refptr<ImageDecoder> image_decoder = new ImageDecoder( |
| 319 this, data); | 326 this, data); |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 369 void ProfileDownloader::OnGetTokenSuccess(const std::string& access_token) { | 376 void ProfileDownloader::OnGetTokenSuccess(const std::string& access_token) { |
| 370 auth_token_ = access_token; | 377 auth_token_ = access_token; |
| 371 StartFetchingImage(); | 378 StartFetchingImage(); |
| 372 } | 379 } |
| 373 | 380 |
| 374 // Callback for OAuth2AccessTokenFetcher on failure. | 381 // Callback for OAuth2AccessTokenFetcher on failure. |
| 375 void ProfileDownloader::OnGetTokenFailure(const GoogleServiceAuthError& error) { | 382 void ProfileDownloader::OnGetTokenFailure(const GoogleServiceAuthError& error) { |
| 376 LOG(WARNING) << "ProfileDownloader: token request using refresh token failed"; | 383 LOG(WARNING) << "ProfileDownloader: token request using refresh token failed"; |
| 377 delegate_->OnDownloadComplete(this, false); | 384 delegate_->OnDownloadComplete(this, false); |
| 378 } | 385 } |
| OLD | NEW |