Moves command handling from Browser to a new object, BrowserCommandController.

Notes:
. BrowserCommandController now owns the CommandUpdater.
. CommandHandler's ExecuteCommand API was massaged a little so that ExecuteCommand/IsCommandEnabled/SupportsCommand methods are always called on it, rather than the wrapping controller.
. The creation of BCC was performed as a svn cp so that history for the various Exec methods could be easily carried forward.
. Various "CanFoo" methods were extracted from the UpdateFooState() methods and moved to CanFoo(const Browser* browser) in browser_commands.

http://crbug.com/133576
TEST=none
Review URL: https://chromiumcodereview.appspot.com/10677009

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@144597 0039d316-1c4b-4281-b951-d872f2087c98
diff --git a/chrome/browser/command_updater.h b/chrome/browser/command_updater.h
index 80d8350..3478582 100644
--- a/chrome/browser/command_updater.h
+++ b/chrome/browser/command_updater.h
@@ -10,6 +10,8 @@
 #include "base/hash_tables.h"
 #include "webkit/glue/window_open_disposition.h"
 
+class CommandObserver;
+
 ////////////////////////////////////////////////////////////////////////////////
 //
 // CommandUpdater class
@@ -48,28 +50,15 @@
 
   // Performs the action associated with this command ID using CURRENT_TAB
   // disposition.
-  // TODO(beng): get rid of this since it's effectively just a pass-thru and the
-  // call sites would be better off using more well defined delegate interfaces.
-  void ExecuteCommand(int id);
+  // Returns true if the command was executed (i.e. it is supported and is
+  // enabled).
+  bool ExecuteCommand(int id);
 
   // Performs the action associated with this command ID using the given
   // disposition.
-  // TODO(altimofeev): refactor the interface to provide more flexible and
-  // explicit way for passing command specific arguments. See
-  // NotificationDetails class for the possible implementation ideas.
-  void ExecuteCommandWithDisposition(int id, WindowOpenDisposition disposition);
-
-  // An Observer interface implemented by objects that want to be informed when
-  // the state of a particular command ID is modified.
-  class CommandObserver {
-   public:
-    // Notifies the observer that the enabled state has changed for the
-    // specified command id.
-    virtual void EnabledStateChangedForCommand(int id, bool enabled) = 0;
-
-   protected:
-    virtual ~CommandObserver();
-  };
+  // Returns true if the command was executed (i.e. it is supported and is
+  // enabled).
+  bool ExecuteCommandWithDisposition(int id, WindowOpenDisposition disposition);
 
   // Adds an observer to the state of a particular command. If the command does
   // not exist, it is created, initialized to false.