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

Unified Diff: chrome/browser/extensions/image_loader.cc

Issue 56833003: Use base::PostTaskAndReplyWithResults() in more places. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase, fix clang error Created 7 years, 1 month 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/extensions/image_loader.cc
diff --git a/chrome/browser/extensions/image_loader.cc b/chrome/browser/extensions/image_loader.cc
index dc6a42a10aebd03f4878ccc4b63f07a7ca921be4..3581fab52cc9f321df7f15c9b73210bda2aeae4e 100644
--- a/chrome/browser/extensions/image_loader.cc
+++ b/chrome/browser/extensions/image_loader.cc
@@ -162,6 +162,44 @@ ImageLoader::LoadResult::LoadResult(
ImageLoader::LoadResult::~LoadResult() {
}
+namespace {
+
+// Need to be after ImageRepresentation and LoadResult are defined.
+std::vector<ImageLoader::LoadResult> LoadImagesOnBlockingPool(
+ const std::vector<ImageLoader::ImageRepresentation>& info_list,
+ const std::vector<SkBitmap>& bitmaps) {
+ DCHECK(BrowserThread::GetBlockingPool()->RunsTasksOnCurrentThread());
+ std::vector<ImageLoader::LoadResult> load_result;
+
+ for (size_t i = 0; i < info_list.size(); ++i) {
+ const ImageLoader::ImageRepresentation& image = info_list[i];
+
+ // If we don't have a path there isn't anything we can do, just skip it.
+ if (image.resource.relative_path().empty())
+ continue;
+
+ SkBitmap bitmap;
+ if (bitmaps[i].isNull())
+ LoadImageOnBlockingPool(image, &bitmap);
+ else
+ bitmap = bitmaps[i];
+
+ // If the image failed to load, skip it.
+ if (bitmap.isNull() || bitmap.empty())
+ continue;
+
+ gfx::Size original_size(bitmap.width(), bitmap.height());
+ bitmap = ResizeIfNeeded(bitmap, image);
+
+ load_result.push_back(
+ ImageLoader::LoadResult(bitmap, original_size, image));
+ }
+
+ return load_result;
+}
+
+} // namespace
+
////////////////////////////////////////////////////////////////////////////////
// ImageLoader
@@ -238,11 +276,10 @@ bool ImageLoader::IsComponentExtensionResource(
return entry != path_to_resource_id.Get().end();
}
-void ImageLoader::LoadImageAsync(
- const Extension* extension,
- const ExtensionResource& resource,
- const gfx::Size& max_size,
- const base::Callback<void(const gfx::Image&)>& callback) {
+void ImageLoader::LoadImageAsync(const Extension* extension,
+ const ExtensionResource& resource,
+ const gfx::Size& max_size,
+ const ImageLoaderCallback& callback) {
std::vector<ImageRepresentation> info_list;
info_list.push_back(ImageRepresentation(
resource,
@@ -255,7 +292,7 @@ void ImageLoader::LoadImageAsync(
void ImageLoader::LoadImagesAsync(
const Extension* extension,
const std::vector<ImageRepresentation>& info_list,
- const base::Callback<void(const gfx::Image&)>& callback) {
+ const ImageLoaderCallback& callback) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
// Loading an image from the cache and loading resources have to happen
@@ -281,55 +318,22 @@ void ImageLoader::LoadImagesAsync(
}
DCHECK(!BrowserThread::GetBlockingPool()->RunsTasksOnCurrentThread());
- std::vector<LoadResult>* load_result = new std::vector<LoadResult>;
- BrowserThread::PostBlockingPoolTaskAndReply(
+ base::PostTaskAndReplyWithResult(
+ BrowserThread::GetBlockingPool(),
FROM_HERE,
- base::Bind(LoadImagesOnBlockingPool, info_list, bitmaps, load_result),
+ base::Bind(LoadImagesOnBlockingPool, info_list, bitmaps),
base::Bind(&ImageLoader::ReplyBack, weak_ptr_factory_.GetWeakPtr(),
- base::Owned(load_result), callback));
-}
-
-// static
-void ImageLoader::LoadImagesOnBlockingPool(
- const std::vector<ImageRepresentation>& info_list,
- const std::vector<SkBitmap>& bitmaps,
- std::vector<LoadResult>* load_result) {
- DCHECK(BrowserThread::GetBlockingPool()->RunsTasksOnCurrentThread());
-
- int i = 0;
- for (std::vector<ImageRepresentation>::const_iterator it = info_list.begin();
- it != info_list.end(); ++it, ++i) {
- // If we don't have a path there isn't anything we can do, just skip it.
- if (it->resource.relative_path().empty())
- continue;
-
- SkBitmap bitmap;
- if (!bitmaps[i].isNull()) {
- bitmap = bitmaps[i];
- } else {
- LoadImageOnBlockingPool(*it, &bitmap);
- }
-
- // If the image failed to load, skip it.
- if (bitmap.isNull() || bitmap.empty())
- continue;
-
- gfx::Size original_size(bitmap.width(), bitmap.height());
- bitmap = ResizeIfNeeded(bitmap, *it);
-
- load_result->push_back(LoadResult(bitmap, original_size, *it));
- }
+ callback));
}
-void ImageLoader::ReplyBack(
- const std::vector<LoadResult>* load_result,
- const base::Callback<void(const gfx::Image&)>& callback) {
+void ImageLoader::ReplyBack(const ImageLoaderCallback& callback,
+ const std::vector<LoadResult>& load_result) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
gfx::ImageSkia image_skia;
- for (std::vector<LoadResult>::const_iterator it = load_result->begin();
- it != load_result->end(); ++it) {
+ for (std::vector<LoadResult>::const_iterator it = load_result.begin();
+ it != load_result.end(); ++it) {
const SkBitmap& bitmap = it->bitmap;
const ImageRepresentation& image_rep = it->image_representation;
« no previous file with comments | « chrome/browser/extensions/image_loader.h ('k') | chrome/browser/ui/webui/extensions/extension_error_handler.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698