Buffet: Phase 1 of GCD device registration workflow

Implemented the basic device registration workflow in buffet daemon.

Updated buffet_client to perform/test device registration:

Check for device registration:
  buffet_client cr

Getting registered device information:
  buffet_client di

Begin registration (with all default values):
  buffet_client sr

Begin registration with custom parameters:
  buffet_client sr "service_url=http://localhost/buffet&device_kind=coffeePot"

Finalize registration:
  buffet_client fr 4/FsXprlpVsmPw6z7ro7aqU156Eh6V.0ktCYeVc3DwYEnp6UAPFm0GAey3PigI

BUG=chromium:363348
TEST=unit tests passed.

Change-Id: Id8a90b66fbdc366eaa9f62caa82a7cb0abc2e638
Reviewed-on: https://chromium-review.googlesource.com/195082
Tested-by: Alex Vakulenko <avakulenko@chromium.org>
Reviewed-by: Chris Sosa <sosa@chromium.org>
Commit-Queue: Alex Vakulenko <avakulenko@chromium.org>
diff --git a/buffet/manager.h b/buffet/manager.h
index 95d0548..ad66252 100644
--- a/buffet/manager.h
+++ b/buffet/manager.h
@@ -7,11 +7,14 @@
 
 #include <base/basictypes.h>
 #include <base/memory/scoped_ptr.h>
+#include <base/values.h>
 #include <dbus/message.h>
 #include <dbus/object_path.h>
+#include <memory>
 
 #include "buffet/dbus_constants.h"
 #include "buffet/exported_property_set.h"
+#include "buffet/device_registration_info.h"
 
 namespace buffet {
 
@@ -40,8 +43,17 @@
     virtual ~Properties() {}
   };
 
-  // Handles calls to org.chromium.Buffet.Manager.RegisterDevice().
-  scoped_ptr<dbus::Response> HandleRegisterDevice(
+  // Handles calls to org.chromium.Buffet.Manager.CheckDeviceRegistered().
+  scoped_ptr<dbus::Response> HandleCheckDeviceRegistered(
+      dbus::MethodCall* method_call);
+  // Handles calls to org.chromium.Buffet.Manager.GetDeviceInfo().
+  scoped_ptr<dbus::Response> HandleGetDeviceInfo(
+      dbus::MethodCall* method_call);
+  // Handles calls to org.chromium.Buffet.Manager.StartRegisterDevice().
+  scoped_ptr<dbus::Response> HandleStartRegisterDevice(
+      dbus::MethodCall* method_call);
+  // Handles calls to org.chromium.Buffet.Manager.FinishRegisterDevice().
+  scoped_ptr<dbus::Response> HandleFinishRegisterDevice(
       dbus::MethodCall* method_call);
   // Handles calls to org.chromium.Buffet.Manager.UpdateState().
   scoped_ptr<dbus::Response> HandleUpdateState(
@@ -51,6 +63,8 @@
   dbus::ExportedObject* exported_object_;  // weak; owned by the Bus object.
   scoped_ptr<Properties> properties_;
 
+  DeviceRegistrationInfo device_info_;
+
   DISALLOW_COPY_AND_ASSIGN(Manager);
 };