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