Chromium Code Reviews| 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( |