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 3// found in the LICENSE file. 4 5#include "chrome/browser/chromeos/login/image_downloader.h" 6 7#include <vector> 8 9#include "base/logging.h" 10#include "base/message_loop.h" 11#include "base/string_util.h" 12#include "base/stringprintf.h" 13#include "content/browser/browser_thread.h" 14#include "chrome/browser/profiles/profile_manager.h" 15#include "chrome/common/net/url_fetcher.h" 16 17namespace chromeos { 18 19namespace { 20 21// Template for optional authorization header. 22const char kAuthorizationHeader[] = "Authorization: GoogleLogin auth=%s"; 23 24} // namespace 25 26ImageDownloader::ImageDownloader(ImageDecoder::Delegate* delegate, 27 const GURL& image_url, 28 const std::string& auth_token) 29 : delegate_(delegate) { 30 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 31 image_fetcher_.reset(new URLFetcher(GURL(image_url), URLFetcher::GET, this)); 32 image_fetcher_->set_request_context( 33 ProfileManager::GetDefaultProfile()->GetRequestContext()); 34 if (!auth_token.empty()) { 35 image_fetcher_->set_extra_request_headers( 36 base::StringPrintf(kAuthorizationHeader, auth_token.c_str())); 37 } 38 image_fetcher_->Start(); 39} 40 41void ImageDownloader::OnURLFetchComplete(const URLFetcher* source, 42 const GURL& url, 43 const net::URLRequestStatus& status, 44 int response_code, 45 const ResponseCookies& cookies, 46 const std::string& data) { 47 DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 48 if (response_code != 200) { 49 LOG(ERROR) << "Response code is " << response_code; 50 LOG(ERROR) << "Url is " << url.spec(); 51 LOG(ERROR) << "Data is " << data; 52 MessageLoop::current()->DeleteSoon(FROM_HERE, this); 53 return; 54 } 55 56 VLOG(1) << "Decoding the image..."; 57 scoped_refptr<ImageDecoder> image_decoder = new ImageDecoder(delegate_, data); 58 image_decoder->Start(); 59 MessageLoop::current()->DeleteSoon(FROM_HERE, this); 60} 61 62} // namespace chromeos 63