buffet: Add abstract CloudCommandUpdateInterface

Added a simple interface for DeviceRegistrationInfo class that just deals
with updating the command status on the cloud without having to use the
DeviceRegistrationInfo class directly.

This will allow to mock out that class more easily in the tests for
subsequent CLs.

BUG=brillo:1202
TEST=`FEATURES=test emerge-link buffet`

Change-Id: I04b931bb2c54e18206e2e3cf588b2e2ce86d9507
Reviewed-on: https://chromium-review.googlesource.com/282260
Reviewed-by: Alex Vakulenko <avakulenko@chromium.org>
Reviewed-by: Vitaly Buka <vitalybuka@chromium.org>
Tested-by: Alex Vakulenko <avakulenko@chromium.org>
Commit-Queue: Alex Vakulenko <avakulenko@chromium.org>
diff --git a/buffet/commands/cloud_command_update_interface.h b/buffet/commands/cloud_command_update_interface.h
new file mode 100644
index 0000000..d18ec85
--- /dev/null
+++ b/buffet/commands/cloud_command_update_interface.h
@@ -0,0 +1,30 @@
+// Copyright 2015 The Chromium OS Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef BUFFET_COMMANDS_CLOUD_COMMAND_UPDATE_INTERFACE_H_
+#define BUFFET_COMMANDS_CLOUD_COMMAND_UPDATE_INTERFACE_H_
+
+#include <string>
+
+#include <base/callback_forward.h>
+#include <base/values.h>
+
+namespace buffet {
+
+// An abstract interface to allow for sending command update requests to the
+// cloud server.
+class CloudCommandUpdateInterface {
+ public:
+  virtual void UpdateCommand(const std::string& command_id,
+                             const base::DictionaryValue& command_patch,
+                             const base::Closure& on_success,
+                             const base::Closure& on_error) = 0;
+
+ protected:
+  virtual ~CloudCommandUpdateInterface() = default;
+};
+
+}  // namespace buffet
+
+#endif  // BUFFET_COMMANDS_CLOUD_COMMAND_UPDATE_INTERFACE_H_