OLD | NEW |
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/ui/webui/extensions/extension_icon_source.h" | 5 #include "chrome/browser/ui/webui/extensions/extension_icon_source.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/bind_helpers.h" | 8 #include "base/bind_helpers.h" |
9 #include "base/memory/ref_counted_memory.h" | 9 #include "base/memory/ref_counted_memory.h" |
10 #include "base/stl_util.h" | 10 #include "base/stl_util.h" |
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
128 } else { | 128 } else { |
129 LoadExtensionImage(icon, request_id); | 129 LoadExtensionImage(icon, request_id); |
130 } | 130 } |
131 } | 131 } |
132 | 132 |
133 ExtensionIconSource::~ExtensionIconSource() { | 133 ExtensionIconSource::~ExtensionIconSource() { |
134 // Clean up all the temporary data we're holding for requests. | 134 // Clean up all the temporary data we're holding for requests. |
135 STLDeleteValues(&request_map_); | 135 STLDeleteValues(&request_map_); |
136 } | 136 } |
137 | 137 |
138 const SkBitmap* ExtensionIconSource::GetWebStoreImage() { | |
139 if (!web_store_icon_data_.get()) | |
140 web_store_icon_data_.reset(LoadImageByResourceId(IDR_WEBSTORE_ICON)); | |
141 | |
142 return web_store_icon_data_.get(); | |
143 } | |
144 | |
145 const SkBitmap* ExtensionIconSource::GetDefaultAppImage() { | 138 const SkBitmap* ExtensionIconSource::GetDefaultAppImage() { |
146 if (!default_app_data_.get()) | 139 if (!default_app_data_.get()) |
147 default_app_data_.reset(LoadImageByResourceId(IDR_APP_DEFAULT_ICON)); | 140 default_app_data_.reset(LoadImageByResourceId(IDR_APP_DEFAULT_ICON)); |
148 | 141 |
149 return default_app_data_.get(); | 142 return default_app_data_.get(); |
150 } | 143 } |
151 | 144 |
152 const SkBitmap* ExtensionIconSource::GetDefaultExtensionImage() { | 145 const SkBitmap* ExtensionIconSource::GetDefaultExtensionImage() { |
153 if (!default_extension_data_.get()) { | 146 if (!default_extension_data_.get()) { |
154 default_extension_data_.reset( | 147 default_extension_data_.reset( |
(...skipping 12 matching lines...) Expand all Loading... |
167 bitmap = *image; | 160 bitmap = *image; |
168 | 161 |
169 ClearData(request_id); | 162 ClearData(request_id); |
170 SendResponse(request_id, BitmapToMemory(&bitmap)); | 163 SendResponse(request_id, BitmapToMemory(&bitmap)); |
171 } | 164 } |
172 | 165 |
173 void ExtensionIconSource::LoadDefaultImage(int request_id) { | 166 void ExtensionIconSource::LoadDefaultImage(int request_id) { |
174 ExtensionIconRequest* request = GetData(request_id); | 167 ExtensionIconRequest* request = GetData(request_id); |
175 const SkBitmap* default_image = NULL; | 168 const SkBitmap* default_image = NULL; |
176 | 169 |
177 if (request->extension->id() == extension_misc::kWebStoreAppId) | 170 if (request->extension->is_app()) |
178 default_image = GetWebStoreImage(); | |
179 else if (request->extension->is_app()) | |
180 default_image = GetDefaultAppImage(); | 171 default_image = GetDefaultAppImage(); |
181 else | 172 else |
182 default_image = GetDefaultExtensionImage(); | 173 default_image = GetDefaultExtensionImage(); |
183 | 174 |
184 SkBitmap resized_image(skia::ImageOperations::Resize( | 175 SkBitmap resized_image(skia::ImageOperations::Resize( |
185 *default_image, skia::ImageOperations::RESIZE_LANCZOS3, | 176 *default_image, skia::ImageOperations::RESIZE_LANCZOS3, |
186 request->size, request->size)); | 177 request->size, request->size)); |
187 | 178 |
188 // There are cases where Resize returns an empty bitmap, for example if you | 179 // There are cases where Resize returns an empty bitmap, for example if you |
189 // ask for an image too large. In this case it is better to return the default | 180 // ask for an image too large. In this case it is better to return the default |
(...skipping 156 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
346 | 337 |
347 void ExtensionIconSource::ClearData(int request_id) { | 338 void ExtensionIconSource::ClearData(int request_id) { |
348 std::map<int, ExtensionIconRequest*>::iterator i = | 339 std::map<int, ExtensionIconRequest*>::iterator i = |
349 request_map_.find(request_id); | 340 request_map_.find(request_id); |
350 if (i == request_map_.end()) | 341 if (i == request_map_.end()) |
351 return; | 342 return; |
352 | 343 |
353 delete i->second; | 344 delete i->second; |
354 request_map_.erase(i); | 345 request_map_.erase(i); |
355 } | 346 } |
OLD | NEW |