Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(79)

Side by Side Diff: chrome/browser/extensions/webstore_install_helper.cc

Issue 931993002: Make image_decoder a Leaky LazyInstance (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix user_image_loader Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/extensions/webstore_install_helper.h" 5 #include "chrome/browser/extensions/webstore_install_helper.h"
6 6
7 #include <string> 7 #include <string>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/values.h" 10 #include "base/values.h"
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
87 87
88 void WebstoreInstallHelper::OnURLFetchComplete( 88 void WebstoreInstallHelper::OnURLFetchComplete(
89 const net::URLFetcher* source) { 89 const net::URLFetcher* source) {
90 CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 90 CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
91 CHECK(source == url_fetcher_.get()); 91 CHECK(source == url_fetcher_.get());
92 int response_code = 92 int response_code =
93 source->GetStatus().is_success() ? source->GetResponseCode() : 0; 93 source->GetStatus().is_success() ? source->GetResponseCode() : 0;
94 if (!source->GetStatus().is_success() || 94 if (!source->GetStatus().is_success() ||
95 response_code / 100 == 4 || response_code / 100 == 5) { 95 response_code / 100 == 4 || response_code / 100 == 5) {
96 BrowserThread::PostTask( 96 BrowserThread::PostTask(
97 BrowserThread::IO, 97 BrowserThread::IO, FROM_HERE,
98 FROM_HERE, 98 base::Bind(&WebstoreInstallHelper::OnDecodeImageFailed, this,
99 base::Bind(&WebstoreInstallHelper::OnDecodeImageFailed, this)); 99 chromeutility::DUMMY_IMAGE_DELEGATE_ID));
100 } else { 100 } else {
101 std::string response_data; 101 std::string response_data;
102 source->GetResponseAsString(&response_data); 102 source->GetResponseAsString(&response_data);
103 fetched_icon_data_.insert(fetched_icon_data_.begin(), 103 fetched_icon_data_.insert(fetched_icon_data_.begin(),
104 response_data.begin(), 104 response_data.begin(),
105 response_data.end()); 105 response_data.end());
106 BrowserThread::PostTask( 106 BrowserThread::PostTask(
107 BrowserThread::IO, 107 BrowserThread::IO,
108 FROM_HERE, 108 FROM_HERE,
109 base::Bind(&WebstoreInstallHelper::StartFetchedImageDecode, this)); 109 base::Bind(&WebstoreInstallHelper::StartFetchedImageDecode, this));
110 } 110 }
111 url_fetcher_.reset(); 111 url_fetcher_.reset();
112 } 112 }
113 113
114 void WebstoreInstallHelper::StartFetchedImageDecode() { 114 void WebstoreInstallHelper::StartFetchedImageDecode() {
115 CHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 115 CHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
116 CHECK(utility_host_.get()); 116 CHECK(utility_host_.get());
117 utility_host_->Send(new ChromeUtilityMsg_DecodeImage(fetched_icon_data_, 117 utility_host_->Send(new ChromeUtilityMsg_DecodeImage(
118 false)); 118 fetched_icon_data_, false, chromeutility::DUMMY_IMAGE_DELEGATE_ID));
119 } 119 }
120 120
121 121
122 bool WebstoreInstallHelper::OnMessageReceived(const IPC::Message& message) { 122 bool WebstoreInstallHelper::OnMessageReceived(const IPC::Message& message) {
123 bool handled = true; 123 bool handled = true;
124 IPC_BEGIN_MESSAGE_MAP(WebstoreInstallHelper, message) 124 IPC_BEGIN_MESSAGE_MAP(WebstoreInstallHelper, message)
125 IPC_MESSAGE_HANDLER(ChromeUtilityHostMsg_DecodeImage_Succeeded, 125 IPC_MESSAGE_HANDLER(ChromeUtilityHostMsg_DecodeImage_Succeeded,
126 OnDecodeImageSucceeded) 126 OnDecodeImageSucceeded)
127 IPC_MESSAGE_HANDLER(ChromeUtilityHostMsg_DecodeImage_Failed, 127 IPC_MESSAGE_HANDLER(ChromeUtilityHostMsg_DecodeImage_Failed,
128 OnDecodeImageFailed) 128 OnDecodeImageFailed)
129 IPC_MESSAGE_HANDLER(ChromeUtilityHostMsg_ParseJSON_Succeeded, 129 IPC_MESSAGE_HANDLER(ChromeUtilityHostMsg_ParseJSON_Succeeded,
130 OnJSONParseSucceeded) 130 OnJSONParseSucceeded)
131 IPC_MESSAGE_HANDLER(ChromeUtilityHostMsg_ParseJSON_Failed, 131 IPC_MESSAGE_HANDLER(ChromeUtilityHostMsg_ParseJSON_Failed,
132 OnJSONParseFailed) 132 OnJSONParseFailed)
133 IPC_MESSAGE_UNHANDLED(handled = false) 133 IPC_MESSAGE_UNHANDLED(handled = false)
134 IPC_END_MESSAGE_MAP() 134 IPC_END_MESSAGE_MAP()
135 return handled; 135 return handled;
136 } 136 }
137 137
138
139 void WebstoreInstallHelper::OnDecodeImageSucceeded( 138 void WebstoreInstallHelper::OnDecodeImageSucceeded(
140 const SkBitmap& decoded_image) { 139 const SkBitmap& decoded_image,
140 int id) {
141 CHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 141 CHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
142 icon_ = decoded_image; 142 icon_ = decoded_image;
143 icon_decode_complete_ = true; 143 icon_decode_complete_ = true;
144 ReportResultsIfComplete(); 144 ReportResultsIfComplete();
145 } 145 }
146 146
147 void WebstoreInstallHelper::OnDecodeImageFailed() { 147 void WebstoreInstallHelper::OnDecodeImageFailed(int id) {
148 CHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 148 CHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
149 icon_decode_complete_ = true; 149 icon_decode_complete_ = true;
150 error_ = kImageDecodeError; 150 error_ = kImageDecodeError;
151 parse_error_ = Delegate::ICON_ERROR; 151 parse_error_ = Delegate::ICON_ERROR;
152 ReportResultsIfComplete(); 152 ReportResultsIfComplete();
153 } 153 }
154 154
155 void WebstoreInstallHelper::OnJSONParseSucceeded( 155 void WebstoreInstallHelper::OnJSONParseSucceeded(
156 const base::ListValue& wrapper) { 156 const base::ListValue& wrapper) {
157 CHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 157 CHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
196 196
197 void WebstoreInstallHelper::ReportResultFromUIThread() { 197 void WebstoreInstallHelper::ReportResultFromUIThread() {
198 CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 198 CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
199 if (error_.empty() && parsed_manifest_) 199 if (error_.empty() && parsed_manifest_)
200 delegate_->OnWebstoreParseSuccess(id_, icon_, parsed_manifest_.release()); 200 delegate_->OnWebstoreParseSuccess(id_, icon_, parsed_manifest_.release());
201 else 201 else
202 delegate_->OnWebstoreParseFailure(id_, parse_error_, error_); 202 delegate_->OnWebstoreParseFailure(id_, parse_error_, error_);
203 } 203 }
204 204
205 } // namespace extensions 205 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698