buffet: Conversion between chromeos::Error and weave::Error

libweave has own error to avoid dependency on libchromeos.

BUG=brillo:1257
TEST=`FEATURES=test emerge-gizmo libweave buffet`
CQ-DEPEND=CL:293615

Change-Id: I64227cdecff29826f95df084a284935ed4ec395a
Reviewed-on: https://chromium-review.googlesource.com/293873
Reviewed-by: Alex Vakulenko <avakulenko@chromium.org>
Tested-by: Vitaly Buka <vitalybuka@chromium.org>
Commit-Queue: Vitaly Buka <vitalybuka@chromium.org>
diff --git a/buffet/manager.cc b/buffet/manager.cc
index fe6a8c3..9dfa325 100644
--- a/buffet/manager.cc
+++ b/buffet/manager.cc
@@ -29,6 +29,7 @@
 #include "buffet/dbus_conversion.h"
 #include "buffet/http_transport_client.h"
 //#include "buffet/shill_client.h"
+#include "buffet/weave_error_conversion.h"
 
 #ifdef BUFFET_USE_WIFI_BOOTSTRAPPING
 //#include "buffet/peerd_client.h"
@@ -153,36 +154,42 @@
 
 void Manager::OnGetDeviceInfoError(
     const std::shared_ptr<DBusMethodResponse<std::string>>& response,
-    const chromeos::Error* error) {
-  response->ReplyWithError(error);
+    const weave::Error* error) {
+  chromeos::ErrorPtr chromeos_error;
+  ConvertError(*error, &chromeos_error);
+  response->ReplyWithError(chromeos_error.get());
 }
 
 void Manager::RegisterDevice(DBusMethodResponsePtr<std::string> response,
                              const std::string& ticket_id) {
   LOG(INFO) << "Received call to Manager.RegisterDevice()";
 
-  chromeos::ErrorPtr error;
+  weave::ErrorPtr error;
   std::string device_id =
       device_->GetCloud()->RegisterDevice(ticket_id, &error);
   if (!device_id.empty()) {
     response->Return(device_id);
     return;
   }
-  CHECK(error);
-  response->ReplyWithError(error.get());
+  chromeos::ErrorPtr chromeos_error;
+  ConvertError(*error, &chromeos_error);
+  response->ReplyWithError(chromeos_error.get());
 }
 
 void Manager::UpdateState(DBusMethodResponsePtr<> response,
                           const chromeos::VariantDictionary& property_set) {
-  chromeos::ErrorPtr error;
-  auto properties = DictionaryFromDBusVariantDictionary(property_set, &error);
+  chromeos::ErrorPtr chromeos_error;
+  auto properties =
+      DictionaryFromDBusVariantDictionary(property_set, &chromeos_error);
   if (!properties)
-    response->ReplyWithError(error.get());
+    response->ReplyWithError(chromeos_error.get());
 
-  if (!device_->GetState()->SetProperties(*properties, &error))
-    response->ReplyWithError(error.get());
-  else
-    response->Return();
+  weave::ErrorPtr error;
+  if (!device_->GetState()->SetProperties(*properties, &error)) {
+    ConvertError(*error, &chromeos_error);
+    response->ReplyWithError(chromeos_error.get());
+  }
+  response->Return();
 }
 
 bool Manager::GetState(chromeos::ErrorPtr* error, std::string* state) {
@@ -208,18 +215,21 @@
                                     error_message);
   }
 
-  chromeos::ErrorPtr error;
+  chromeos::ErrorPtr chromeos_error;
   weave::UserRole role;
   if (!StringToEnum(in_user_role, &role)) {
-    chromeos::Error::AddToPrintf(&error, FROM_HERE, kErrorDomain,
+    chromeos::Error::AddToPrintf(&chromeos_error, FROM_HERE, kErrorDomain,
                                  "invalid_user_role", "Invalid role: '%s'",
                                  in_user_role.c_str());
-    return response->ReplyWithError(error.get());
+    return response->ReplyWithError(chromeos_error.get());
   }
 
   std::string id;
-  if (!device_->GetCommands()->AddCommand(*command, role, &id, &error))
-    return response->ReplyWithError(error.get());
+  weave::ErrorPtr error;
+  if (!device_->GetCommands()->AddCommand(*command, role, &id, &error)) {
+    ConvertError(*error, &chromeos_error);
+    return response->ReplyWithError(chromeos_error.get());
+  }
 
   response->Return(id);
 }
@@ -273,22 +283,32 @@
   return false;
 }
 
-bool Manager::UpdateDeviceInfo(chromeos::ErrorPtr* error,
+bool Manager::UpdateDeviceInfo(chromeos::ErrorPtr* chromeos_error,
                                const std::string& name,
                                const std::string& description,
                                const std::string& location) {
-  return device_->GetCloud()->UpdateDeviceInfo(name, description, location,
-                                               error);
+  weave::ErrorPtr error;
+  if (!device_->GetCloud()->UpdateDeviceInfo(name, description, location,
+                                             &error)) {
+    ConvertError(*error, chromeos_error);
+    return false;
+  }
+  return true;
 }
 
-bool Manager::UpdateServiceConfig(chromeos::ErrorPtr* error,
+bool Manager::UpdateServiceConfig(chromeos::ErrorPtr* chromeos_error,
                                   const std::string& client_id,
                                   const std::string& client_secret,
                                   const std::string& api_key,
                                   const std::string& oauth_url,
                                   const std::string& service_url) {
-  return device_->GetCloud()->UpdateServiceConfig(
-      client_id, client_secret, api_key, oauth_url, service_url, error);
+  weave::ErrorPtr error;
+  if (!device_->GetCloud()->UpdateServiceConfig(
+          client_id, client_secret, api_key, oauth_url, service_url, &error)) {
+    ConvertError(*error, chromeos_error);
+    return false;
+  }
+  return true;
 }
 
 void Manager::OnStateChanged() {