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

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: Rename instance_ to image_decoder_instance_ for mac linker Created 5 years, 10 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 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
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,
98 FROM_HERE, 98 FROM_HERE,
99 base::Bind(&WebstoreInstallHelper::OnDecodeImageFailed, this)); 99 base::Bind(&WebstoreInstallHelper::OnDecodeImageFailed, this,
100 chromeutility::DUMMY_IMAGE_DELEGATE_ID));
100 } else { 101 } else {
101 std::string response_data; 102 std::string response_data;
102 source->GetResponseAsString(&response_data); 103 source->GetResponseAsString(&response_data);
103 fetched_icon_data_.insert(fetched_icon_data_.begin(), 104 fetched_icon_data_.insert(fetched_icon_data_.begin(),
104 response_data.begin(), 105 response_data.begin(),
105 response_data.end()); 106 response_data.end());
106 BrowserThread::PostTask( 107 BrowserThread::PostTask(
107 BrowserThread::IO, 108 BrowserThread::IO,
108 FROM_HERE, 109 FROM_HERE,
109 base::Bind(&WebstoreInstallHelper::StartFetchedImageDecode, this)); 110 base::Bind(&WebstoreInstallHelper::StartFetchedImageDecode, this));
110 } 111 }
111 url_fetcher_.reset(); 112 url_fetcher_.reset();
112 } 113 }
113 114
114 void WebstoreInstallHelper::StartFetchedImageDecode() { 115 void WebstoreInstallHelper::StartFetchedImageDecode() {
115 CHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 116 CHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
116 CHECK(utility_host_.get()); 117 CHECK(utility_host_.get());
117 utility_host_->Send(new ChromeUtilityMsg_DecodeImage(fetched_icon_data_, 118 utility_host_->Send(new ChromeUtilityMsg_DecodeImage(
118 false)); 119 fetched_icon_data_, false,
120 chromeutility::DUMMY_IMAGE_DELEGATE_ID));
dcheng 2015/02/27 16:47:17 Should this/can this be cleaned up to use ImageDec
Theresa 2015/03/04 03:10:06 I think it should be, but it may be a little trick
119 } 121 }
120 122
121 123
122 bool WebstoreInstallHelper::OnMessageReceived(const IPC::Message& message) { 124 bool WebstoreInstallHelper::OnMessageReceived(const IPC::Message& message) {
123 bool handled = true; 125 bool handled = true;
124 IPC_BEGIN_MESSAGE_MAP(WebstoreInstallHelper, message) 126 IPC_BEGIN_MESSAGE_MAP(WebstoreInstallHelper, message)
125 IPC_MESSAGE_HANDLER(ChromeUtilityHostMsg_DecodeImage_Succeeded, 127 IPC_MESSAGE_HANDLER(ChromeUtilityHostMsg_DecodeImage_Succeeded,
126 OnDecodeImageSucceeded) 128 OnDecodeImageSucceeded)
127 IPC_MESSAGE_HANDLER(ChromeUtilityHostMsg_DecodeImage_Failed, 129 IPC_MESSAGE_HANDLER(ChromeUtilityHostMsg_DecodeImage_Failed,
128 OnDecodeImageFailed) 130 OnDecodeImageFailed)
129 IPC_MESSAGE_HANDLER(ChromeUtilityHostMsg_ParseJSON_Succeeded, 131 IPC_MESSAGE_HANDLER(ChromeUtilityHostMsg_ParseJSON_Succeeded,
130 OnJSONParseSucceeded) 132 OnJSONParseSucceeded)
131 IPC_MESSAGE_HANDLER(ChromeUtilityHostMsg_ParseJSON_Failed, 133 IPC_MESSAGE_HANDLER(ChromeUtilityHostMsg_ParseJSON_Failed,
132 OnJSONParseFailed) 134 OnJSONParseFailed)
133 IPC_MESSAGE_UNHANDLED(handled = false) 135 IPC_MESSAGE_UNHANDLED(handled = false)
134 IPC_END_MESSAGE_MAP() 136 IPC_END_MESSAGE_MAP()
135 return handled; 137 return handled;
136 } 138 }
137 139
138 140
139 void WebstoreInstallHelper::OnDecodeImageSucceeded( 141 void WebstoreInstallHelper::OnDecodeImageSucceeded(
140 const SkBitmap& decoded_image) { 142 const SkBitmap& decoded_image, int id) {
141 CHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 143 CHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
142 icon_ = decoded_image; 144 icon_ = decoded_image;
143 icon_decode_complete_ = true; 145 icon_decode_complete_ = true;
144 ReportResultsIfComplete(); 146 ReportResultsIfComplete();
145 } 147 }
146 148
147 void WebstoreInstallHelper::OnDecodeImageFailed() { 149 void WebstoreInstallHelper::OnDecodeImageFailed(int id) {
148 CHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 150 CHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
149 icon_decode_complete_ = true; 151 icon_decode_complete_ = true;
150 error_ = kImageDecodeError; 152 error_ = kImageDecodeError;
151 parse_error_ = Delegate::ICON_ERROR; 153 parse_error_ = Delegate::ICON_ERROR;
152 ReportResultsIfComplete(); 154 ReportResultsIfComplete();
153 } 155 }
154 156
155 void WebstoreInstallHelper::OnJSONParseSucceeded( 157 void WebstoreInstallHelper::OnJSONParseSucceeded(
156 const base::ListValue& wrapper) { 158 const base::ListValue& wrapper) {
157 CHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); 159 CHECK(BrowserThread::CurrentlyOn(BrowserThread::IO));
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
196 198
197 void WebstoreInstallHelper::ReportResultFromUIThread() { 199 void WebstoreInstallHelper::ReportResultFromUIThread() {
198 CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 200 CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
199 if (error_.empty() && parsed_manifest_) 201 if (error_.empty() && parsed_manifest_)
200 delegate_->OnWebstoreParseSuccess(id_, icon_, parsed_manifest_.release()); 202 delegate_->OnWebstoreParseSuccess(id_, icon_, parsed_manifest_.release());
201 else 203 else
202 delegate_->OnWebstoreParseFailure(id_, parse_error_, error_); 204 delegate_->OnWebstoreParseFailure(id_, parse_error_, error_);
203 } 205 }
204 206
205 } // namespace extensions 207 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698