| 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(
|
|
|