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..021f6faf0a4ad6789653ab315772d0c88576d6f6 100644 |
--- a/chrome/browser/extensions/webstore_install_helper.cc |
+++ b/chrome/browser/extensions/webstore_install_helper.cc |
@@ -8,14 +8,11 @@ |
#include "base/bind.h" |
#include "base/values.h" |
+#include "chrome/browser/safe_image_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" |
using content::BrowserThread; |
using content::UtilityProcessHost; |
@@ -34,10 +31,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 +46,19 @@ 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 SafeImageFetcher( |
+ icon_url_, context_getter_, |
+ base::Bind(&WebstoreInstallHelper::OnIconFetched, |
+ base::Unretained(this)))); |
asargent_no_longer_on_chrome
2015/03/26 18:12:50
I don't think you want base::Unretained here, righ
Marc Treib
2015/03/27 11:52:12
Done.
|
+ } |
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 +70,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 +82,17 @@ 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::OnIconFetched(const SkBitmap& icon) { |
+ icon_ = icon; |
icon_decode_complete_ = true; |
- error_ = kImageDecodeError; |
- parse_error_ = Delegate::ICON_ERROR; |
- ReportResultsIfComplete(); |
+ if (icon_.empty()) { |
+ error_ = kImageDecodeError; |
+ parse_error_ = Delegate::ICON_ERROR; |
+ } |
+ BrowserThread::PostTask( |
+ BrowserThread::IO, |
+ FROM_HERE, |
+ base::Bind(&WebstoreInstallHelper::ReportResultsIfComplete, this)); |
} |
void WebstoreInstallHelper::OnJSONParseSucceeded( |