Allow base::DoNothing() to handle any argument list.

This changes the form of DoNothing() from a simple no-arg function to a class
that produces callbacks via templated operator().  This allows callers to
replace base::Bind(&base::DoNothing) with base::DoNothing() for a small
boilerplate reduction; more importantly, it allows using DoNothing() to replace
existing no-op functions/lambdas that took more than zero args, and thus had to
be manually declared.  This removes dozens of such functions and around 600 LOC
total.

In a few places, DoNothing() can't be used directly, and this change also adds
explicit callback-generating Once<>() and Repeatedly<>() members that will
produce a callback with a specific signature.

BUG=811554
TEST=none

Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.android:android_optional_gpu_tests_rel;master.tryserver.chromium.linux:linux_mojo;master.tryserver.chromium.linux:linux_optional_gpu_tests_rel;master.tryserver.chromium.linux:linux_vr;master.tryserver.chromium.mac:ios-simulator-cronet;master.tryserver.chromium.mac:ios-simulator-full-configs;master.tryserver.chromium.mac:mac_optional_gpu_tests_rel;master.tryserver.chromium.win:win_optional_gpu_tests_rel
Change-Id: I37f87b35c6c079a6a8c03ff18ec3a54e1237f126
Reviewed-on: https://chromium-review.googlesource.com/903416
Commit-Queue: Peter Kasting <[email protected]>
Reviewed-by: Jochen Eisinger <[email protected]>
Reviewed-by: Gabriel Charette <[email protected]>
Cr-Commit-Position: refs/heads/master@{#538953}
diff --git a/dbus/test_service.cc b/dbus/test_service.cc
index 624495de..e4a236c6 100644
--- a/dbus/test_service.cc
+++ b/dbus/test_service.cc
@@ -10,6 +10,7 @@
 #include <vector>
 
 #include "base/bind.h"
+#include "base/bind_helpers.h"
 #include "base/guid.h"
 #include "base/message_loop/message_loop.h"
 #include "base/run_loop.h"
@@ -23,13 +24,6 @@
 #include "dbus/object_path.h"
 #include "dbus/property.h"
 
-namespace {
-
-void EmptyCallback(bool /* success */) {
-}
-
-}  // namespace
-
 namespace dbus {
 
 // Echo, SlowEcho, AsyncEcho, BrokenMethod, GetAll, Get, Set, PerformAction,
@@ -116,11 +110,9 @@
   MessageWriter writer(&signal);
   writer.AppendString(message);
 
-  bus_->RequestOwnership(service_name_,
-                         request_ownership_options_,
+  bus_->RequestOwnership(service_name_, request_ownership_options_,
                          base::Bind(&TestService::OnOwnership,
-                                    base::Unretained(this),
-                                    base::Bind(&EmptyCallback)));
+                                    base::Unretained(this), base::DoNothing()));
 
   // Use "/" just like dbus-send does.
   ExportedObject* root_object = bus_->GetExportedObject(ObjectPath("/"));
@@ -189,11 +181,10 @@
   if (num_exported_methods_ == kNumMethodsToExport) {
     // As documented in exported_object.h, the service name should be
     // requested after all methods are exposed.
-    bus_->RequestOwnership(service_name_,
-                           request_ownership_options_,
-                           base::Bind(&TestService::OnOwnership,
-                                      base::Unretained(this),
-                                      base::Bind(&EmptyCallback)));
+    bus_->RequestOwnership(
+        service_name_, request_ownership_options_,
+        base::Bind(&TestService::OnOwnership, base::Unretained(this),
+                   base::DoNothing()));
   }
 }