buffet: Multiple listeners of add/remove new command.

Replace CommandDispatchInterface with callbacks.
Lists of callbacks in CommandQueue.

BUG=brillo:697
TEST=FEATURE=test emerge-gizmo buffet

Change-Id: I3c164c8c7c2cb098b896aa8d5c9a99d856b05172
Reviewed-on: https://chromium-review.googlesource.com/270350
Commit-Queue: Vitaly Buka <vitalybuka@chromium.org>
Tested-by: Vitaly Buka <vitalybuka@chromium.org>
Reviewed-by: Alex Vakulenko <avakulenko@chromium.org>
diff --git a/buffet/commands/command_manager.cc b/buffet/commands/command_manager.cc
index de2125b..cbaaeca 100644
--- a/buffet/commands/command_manager.cc
+++ b/buffet/commands/command_manager.cc
@@ -16,18 +16,16 @@
 
 namespace buffet {
 
-CommandManager::CommandManager() {
-  command_queue_.SetCommandDispachInterface(&command_dispatcher_);
+CommandManager::CommandManager()
+    : CommandManager(base::WeakPtr<ExportedObjectManager>{}) {
 }
 
 CommandManager::CommandManager(
     const base::WeakPtr<ExportedObjectManager>& object_manager)
-    : command_dispatcher_(object_manager->GetBus(), object_manager.get()) {
-  command_queue_.SetCommandDispachInterface(&command_dispatcher_);
-}
-
-CommandManager::CommandManager(CommandDispachInterface* dispatch_interface) {
-  command_queue_.SetCommandDispachInterface(dispatch_interface);
+    : command_dispatcher_(object_manager) {
+  command_queue_.AddOnCommandAddedCallback(
+      base::Bind(&DBusCommandDispacher::OnCommandAdded,
+                 base::Unretained(&command_dispatcher_)));
 }
 
 const CommandDictionary& CommandManager::GetCommandDictionary() const {