Index: chrome/browser/extensions/webstore_install_helper.cc |
diff --git a/chrome/browser/extensions/webstore_install_helper.cc b/chrome/browser/extensions/webstore_install_helper.cc |
index dff9f35ff5a72683aa287048d45b0d0c8b29d0ae..c1413f0cc2a813ce8cebf1a377d5e95474e72ebb 100644 |
--- a/chrome/browser/extensions/webstore_install_helper.cc |
+++ b/chrome/browser/extensions/webstore_install_helper.cc |
@@ -8,14 +8,13 @@ |
#include "base/bind.h" |
#include "base/values.h" |
+#include "chrome/browser/bitmap_fetcher/bitmap_fetcher.h" |
#include "chrome/common/chrome_utility_messages.h" |
#include "chrome/common/extensions/chrome_utility_extensions_messages.h" |
#include "content/public/browser/browser_thread.h" |
#include "content/public/browser/utility_process_host.h" |
#include "net/base/load_flags.h" |
-#include "net/url_request/url_fetcher.h" |
-#include "net/url_request/url_request_context_getter.h" |
-#include "net/url_request/url_request_status.h" |
+#include "net/url_request/url_request.h" |
using content::BrowserThread; |
using content::UtilityProcessHost; |
@@ -34,10 +33,7 @@ WebstoreInstallHelper::WebstoreInstallHelper( |
const std::string& manifest, |
const GURL& icon_url, |
net::URLRequestContextGetter* context_getter) |
- : ImageRequest( |
- content::BrowserThread::GetMessageLoopProxyForThread( |
- content::BrowserThread::IO)), |
- delegate_(delegate), |
+ : delegate_(delegate), |
id_(id), |
manifest_(manifest), |
icon_url_(icon_url), |
@@ -52,25 +48,20 @@ WebstoreInstallHelper::~WebstoreInstallHelper() {} |
void WebstoreInstallHelper::Start() { |
CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
- if (icon_url_.is_empty()) |
+ if (icon_url_.is_empty()) { |
icon_decode_complete_ = true; |
+ } else { |
+ icon_fetcher_.reset(new chrome::BitmapFetcher(icon_url_, this)); |
+ icon_fetcher_->Start( |
+ context_getter_, std::string(), |
+ net::URLRequest::CLEAR_REFERRER_ON_TRANSITION_FROM_SECURE_TO_INSECURE, |
+ net::LOAD_DO_NOT_SAVE_COOKIES | net::LOAD_DO_NOT_SEND_COOKIES); |
+ } |
BrowserThread::PostTask( |
BrowserThread::IO, |
FROM_HERE, |
base::Bind(&WebstoreInstallHelper::StartWorkOnIOThread, this)); |
- |
- if (!icon_url_.is_empty()) { |
- CHECK(context_getter_); |
- url_fetcher_.reset(net::URLFetcher::Create( |
- icon_url_, net::URLFetcher::GET, this)); |
- url_fetcher_->SetRequestContext(context_getter_); |
- url_fetcher_->SetLoadFlags(net::LOAD_DO_NOT_SAVE_COOKIES | |
- net::LOAD_DO_NOT_SEND_COOKIES); |
- |
- url_fetcher_->Start(); |
- // We'll get called back in OnURLFetchComplete. |
- } |
} |
void WebstoreInstallHelper::StartWorkOnIOThread() { |
@@ -82,26 +73,6 @@ void WebstoreInstallHelper::StartWorkOnIOThread() { |
utility_host_->Send(new ChromeUtilityMsg_ParseJSON(manifest_)); |
} |
-void WebstoreInstallHelper::OnURLFetchComplete( |
- const net::URLFetcher* source) { |
- CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
- CHECK(source == url_fetcher_.get()); |
- int response_code = |
- source->GetStatus().is_success() ? source->GetResponseCode() : 0; |
- if (!source->GetStatus().is_success() || |
- response_code / 100 == 4 || response_code / 100 == 5) { |
- BrowserThread::PostTask( |
- BrowserThread::IO, FROM_HERE, |
- base::Bind(&WebstoreInstallHelper::OnDecodeImageFailed, this)); |
- } else { |
- std::string response_data; |
- source->GetResponseAsString(&response_data); |
- |
- ImageDecoder::Start(this, response_data); |
- } |
- url_fetcher_.reset(); |
-} |
- |
bool WebstoreInstallHelper::OnMessageReceived(const IPC::Message& message) { |
bool handled = true; |
IPC_BEGIN_MESSAGE_MAP(WebstoreInstallHelper, message) |
@@ -114,19 +85,21 @@ bool WebstoreInstallHelper::OnMessageReceived(const IPC::Message& message) { |
return handled; |
} |
-void WebstoreInstallHelper::OnImageDecoded(const SkBitmap& decoded_image) { |
- CHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
- icon_ = decoded_image; |
- icon_decode_complete_ = true; |
- ReportResultsIfComplete(); |
-} |
- |
-void WebstoreInstallHelper::OnDecodeImageFailed() { |
- CHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
+void WebstoreInstallHelper::OnFetchComplete(const GURL& url, |
+ const SkBitmap* image) { |
+ CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
+ if (image) |
+ icon_ = *image; |
icon_decode_complete_ = true; |
- error_ = kImageDecodeError; |
- parse_error_ = Delegate::ICON_ERROR; |
- ReportResultsIfComplete(); |
+ if (icon_.empty()) { |
+ error_ = kImageDecodeError; |
+ parse_error_ = Delegate::ICON_ERROR; |
+ } |
+ icon_fetcher_.reset(); |
+ BrowserThread::PostTask( |
+ BrowserThread::IO, |
+ FROM_HERE, |
+ base::Bind(&WebstoreInstallHelper::ReportResultsIfComplete, this)); |
} |
void WebstoreInstallHelper::OnJSONParseSucceeded( |