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()));
   }
 }