Make ImageLoader's callbacks Once, not Repeating
These ImageLoaderFooBarCallback typedef's were previously
base::Callback, neither explicitly a base::OnceCallback or a
base::RepeatingCallback. Presumably these typedef's were first defined
before there was a base::OnceCB vs base::RepeatingCB distinction.
The general motivation for this commit is that base/callback.h says that
it intends to flip the type alias of base::CB to be base::OnceCB instead
of base::RepeatingCB.
The specific motivation for this commit is to be able to call
ImageLoader::LoadImagesAsync as part of a Mojo IPC call chain. The
mechanism for Mojo method calls to return something is a base::OnceCB.
You can easily use a base::OnceCB to call another base::RepeatingCB
(once), but doing vice versa is trickier, especially if the base::OnceCB
expects to be std::move'd around but base::BindRepeating expects to copy
its arguments.
A very specific motivation is to make the app_icon_factory.h API more
consistent, with its functions all taking the same type of callback, a
base::OnceCB.
Change-Id: Iec560709d97be22e92ccd17a27bad39eab597c6f
Reviewed-on: https://chromium-review.googlesource.com/c/1348875
Reviewed-by: Devlin <[email protected]>
Reviewed-by: Scott Violet <[email protected]>
Reviewed-by: Drew Wilson <[email protected]>
Reviewed-by: Dominick Ng <[email protected]>
Commit-Queue: Nigel Tao <[email protected]>
Cr-Commit-Position: refs/heads/master@{#611973}
diff --git a/chrome/browser/extensions/api/developer_private/extension_info_generator.cc b/chrome/browser/extensions/api/developer_private/extension_info_generator.cc
index 2aa1faf..d8261a6 100644
--- a/chrome/browser/extensions/api/developer_private/extension_info_generator.cc
+++ b/chrome/browser/extensions/api/developer_private/extension_info_generator.cc
@@ -721,8 +721,8 @@
gfx::Size max_size(128, 128);
image_loader_->LoadImageAsync(
&extension, icon, max_size,
- base::Bind(&ExtensionInfoGenerator::OnImageLoaded,
- weak_factory_.GetWeakPtr(), base::Passed(&info)));
+ base::BindOnce(&ExtensionInfoGenerator::OnImageLoaded,
+ weak_factory_.GetWeakPtr(), std::move(info)));
}
}
diff --git a/chrome/browser/extensions/extension_disabled_ui.cc b/chrome/browser/extensions/extension_disabled_ui.cc
index 9b48e12..108ac21 100644
--- a/chrome/browser/extensions/extension_disabled_ui.cc
+++ b/chrome/browser/extensions/extension_disabled_ui.cc
@@ -385,13 +385,10 @@
extension, kIconSize, ExtensionIconSet::MATCH_BIGGER);
gfx::Size size(kIconSize, kIconSize);
ImageLoader::Get(service->profile())
- ->LoadImageAsync(extension,
- image,
- size,
- base::Bind(&AddExtensionDisabledErrorWithIcon,
- service->AsWeakPtr(),
- extension->id(),
- is_remote_install));
+ ->LoadImageAsync(extension, image, size,
+ base::BindOnce(&AddExtensionDisabledErrorWithIcon,
+ service->AsWeakPtr(), extension->id(),
+ is_remote_install));
}
} // namespace extensions
diff --git a/chrome/browser/extensions/extension_icon_manager.cc b/chrome/browser/extensions/extension_icon_manager.cc
index b035350..46a603e7 100644
--- a/chrome/browser/extensions/extension_icon_manager.cc
+++ b/chrome/browser/extensions/extension_icon_manager.cc
@@ -39,8 +39,8 @@
extensions::ImageLoader* loader = extensions::ImageLoader::Get(context);
loader->LoadImageAtEveryScaleFactorAsync(
extension, gfx::Size(gfx::kFaviconSize, gfx::kFaviconSize),
- base::Bind(&ExtensionIconManager::OnImageLoaded,
- weak_ptr_factory_.GetWeakPtr(), extension->id()));
+ base::BindOnce(&ExtensionIconManager::OnImageLoaded,
+ weak_ptr_factory_.GetWeakPtr(), extension->id()));
}
gfx::Image ExtensionIconManager::GetIcon(const std::string& extension_id) {
diff --git a/chrome/browser/extensions/extension_install_prompt.cc b/chrome/browser/extensions/extension_install_prompt.cc
index 8694f7c..4ac6bdc 100644
--- a/chrome/browser/extensions/extension_install_prompt.cc
+++ b/chrome/browser/extensions/extension_install_prompt.cc
@@ -634,11 +634,9 @@
extensions::ImageLoader::ImageRepresentation::NEVER_RESIZE,
gfx::Size(),
ui::SCALE_FACTOR_100P));
- loader->LoadImagesAsync(
- extension_,
- images_list,
- base::Bind(&ExtensionInstallPrompt::OnImageLoaded,
- weak_factory_.GetWeakPtr()));
+ loader->LoadImagesAsync(extension_, images_list,
+ base::BindOnce(&ExtensionInstallPrompt::OnImageLoaded,
+ weak_factory_.GetWeakPtr()));
}
void ExtensionInstallPrompt::ShowConfirmation() {
diff --git a/chrome/browser/extensions/extension_install_prompt_unittest.cc b/chrome/browser/extensions/extension_install_prompt_unittest.cc
index bc649303..a270256 100644
--- a/chrome/browser/extensions/extension_install_prompt_unittest.cc
+++ b/chrome/browser/extensions/extension_install_prompt_unittest.cc
@@ -175,7 +175,7 @@
ImageLoader::Get(browser_context())
->LoadImagesAsync(
extension, image_rep,
- base::Bind(&SetImage, &image, image_loop.QuitClosure()));
+ base::BindOnce(&SetImage, &image, image_loop.QuitClosure()));
image_loop.Run();
ASSERT_FALSE(image.IsEmpty());
std::unique_ptr<content::WebContents> web_contents(
diff --git a/chrome/browser/extensions/extension_storage_monitor.cc b/chrome/browser/extensions/extension_storage_monitor.cc
index 4d2666f2..66b3028 100644
--- a/chrome/browser/extensions/extension_storage_monitor.cc
+++ b/chrome/browser/extensions/extension_storage_monitor.cc
@@ -386,8 +386,9 @@
extension, kIconSize, ExtensionIconSet::MATCH_BIGGER);
ImageLoader::Get(profile_)->LoadImageAsync(
extension, resource, gfx::Size(kIconSize, kIconSize),
- base::Bind(&ExtensionStorageMonitor::OnImageLoaded,
- weak_ptr_factory_.GetWeakPtr(), extension_id, current_usage));
+ base::BindOnce(&ExtensionStorageMonitor::OnImageLoaded,
+ weak_ptr_factory_.GetWeakPtr(), extension_id,
+ current_usage));
}
void ExtensionStorageMonitor::OnImageLoaded(const std::string& extension_id,
diff --git a/chrome/browser/extensions/extension_web_ui.cc b/chrome/browser/extensions/extension_web_ui.cc
index f34b7e97..dcdbe01 100644
--- a/chrome/browser/extensions/extension_web_ui.cc
+++ b/chrome/browser/extensions/extension_web_ui.cc
@@ -566,6 +566,7 @@
// LoadImagesAsync actually can run callback synchronously. We want to force
// async.
extensions::ImageLoader::Get(profile)->LoadImagesAsync(
- extension, info_list, base::Bind(&RunFaviconCallbackAsync, callback));
+ extension, info_list,
+ base::BindOnce(&RunFaviconCallbackAsync, callback));
}
}
diff --git a/chrome/browser/extensions/tab_helper.cc b/chrome/browser/extensions/tab_helper.cc
index 3968d51..f66106c 100644
--- a/chrome/browser/extensions/tab_helper.cc
+++ b/chrome/browser/extensions/tab_helper.cc
@@ -366,8 +366,8 @@
ExtensionIconSet::MATCH_BIGGER),
gfx::Size(extension_misc::EXTENSION_ICON_SMALL,
extension_misc::EXTENSION_ICON_SMALL),
- base::Bind(&TabHelper::OnImageLoaded,
- image_loader_ptr_factory_.GetWeakPtr()));
+ base::BindOnce(&TabHelper::OnImageLoaded,
+ image_loader_ptr_factory_.GetWeakPtr()));
}
}