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 <stddef.h> | 7 #include <stddef.h> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/bind_helpers.h" | 10 #include "base/bind_helpers.h" |
| 11 #include "base/memory/ptr_util.h" |
11 #include "base/memory/ref_counted_memory.h" | 12 #include "base/memory/ref_counted_memory.h" |
12 #include "base/stl_util.h" | |
13 #include "base/strings/string_number_conversions.h" | 13 #include "base/strings/string_number_conversions.h" |
14 #include "base/strings/string_split.h" | 14 #include "base/strings/string_split.h" |
15 #include "base/strings/string_util.h" | 15 #include "base/strings/string_util.h" |
16 #include "base/strings/stringprintf.h" | 16 #include "base/strings/stringprintf.h" |
17 #include "base/threading/thread.h" | 17 #include "base/threading/thread.h" |
18 #include "chrome/browser/extensions/extension_service.h" | 18 #include "chrome/browser/extensions/extension_service.h" |
19 #include "chrome/browser/favicon/favicon_service_factory.h" | 19 #include "chrome/browser/favicon/favicon_service_factory.h" |
20 #include "chrome/browser/profiles/profile.h" | 20 #include "chrome/browser/profiles/profile.h" |
21 #include "chrome/common/extensions/extension_constants.h" | 21 #include "chrome/common/extensions/extension_constants.h" |
22 #include "chrome/common/extensions/manifest_handlers/app_launch_info.h" | 22 #include "chrome/common/extensions/manifest_handlers/app_launch_info.h" |
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
138 request->extension.get(), request->size, request->match); | 138 request->extension.get(), request->size, request->match); |
139 | 139 |
140 if (icon.relative_path().empty()) { | 140 if (icon.relative_path().empty()) { |
141 LoadIconFailed(next_id); | 141 LoadIconFailed(next_id); |
142 } else { | 142 } else { |
143 LoadExtensionImage(icon, next_id); | 143 LoadExtensionImage(icon, next_id); |
144 } | 144 } |
145 } | 145 } |
146 | 146 |
147 ExtensionIconSource::~ExtensionIconSource() { | 147 ExtensionIconSource::~ExtensionIconSource() { |
148 // Clean up all the temporary data we're holding for requests. | |
149 base::STLDeleteValues(&request_map_); | |
150 } | 148 } |
151 | 149 |
152 const SkBitmap* ExtensionIconSource::GetDefaultAppImage() { | 150 const SkBitmap* ExtensionIconSource::GetDefaultAppImage() { |
153 if (!default_app_data_.get()) | 151 if (!default_app_data_.get()) |
154 default_app_data_.reset(LoadImageByResourceId(IDR_APP_DEFAULT_ICON)); | 152 default_app_data_.reset(LoadImageByResourceId(IDR_APP_DEFAULT_ICON)); |
155 | 153 |
156 return default_app_data_.get(); | 154 return default_app_data_.get(); |
157 } | 155 } |
158 | 156 |
159 const SkBitmap* ExtensionIconSource::GetDefaultExtensionImage() { | 157 const SkBitmap* ExtensionIconSource::GetDefaultExtensionImage() { |
(...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
317 return true; | 315 return true; |
318 } | 316 } |
319 | 317 |
320 void ExtensionIconSource::SetData( | 318 void ExtensionIconSource::SetData( |
321 int request_id, | 319 int request_id, |
322 const content::URLDataSource::GotDataCallback& callback, | 320 const content::URLDataSource::GotDataCallback& callback, |
323 const Extension* extension, | 321 const Extension* extension, |
324 bool grayscale, | 322 bool grayscale, |
325 int size, | 323 int size, |
326 ExtensionIconSet::MatchType match) { | 324 ExtensionIconSet::MatchType match) { |
327 ExtensionIconRequest* request = new ExtensionIconRequest(); | 325 std::unique_ptr<ExtensionIconRequest> request = |
| 326 base::MakeUnique<ExtensionIconRequest>(); |
328 request->callback = callback; | 327 request->callback = callback; |
329 request->extension = extension; | 328 request->extension = extension; |
330 request->grayscale = grayscale; | 329 request->grayscale = grayscale; |
331 request->size = size; | 330 request->size = size; |
332 request->match = match; | 331 request->match = match; |
333 request_map_[request_id] = request; | 332 request_map_[request_id] = std::move(request); |
334 } | 333 } |
335 | 334 |
336 ExtensionIconSource::ExtensionIconRequest* ExtensionIconSource::GetData( | 335 ExtensionIconSource::ExtensionIconRequest* ExtensionIconSource::GetData( |
337 int request_id) { | 336 int request_id) { |
338 return request_map_[request_id]; | 337 return request_map_[request_id].get(); |
339 } | 338 } |
340 | 339 |
341 void ExtensionIconSource::ClearData(int request_id) { | 340 void ExtensionIconSource::ClearData(int request_id) { |
342 std::map<int, ExtensionIconRequest*>::iterator i = | 341 request_map_.erase(request_id); |
343 request_map_.find(request_id); | |
344 if (i == request_map_.end()) | |
345 return; | |
346 | |
347 delete i->second; | |
348 request_map_.erase(i); | |
349 } | 342 } |
350 | 343 |
351 } // namespace extensions | 344 } // namespace extensions |
OLD | NEW |