buffet: extract useful error code definitionss into a separate file

Moved json parser error information from http_utils into its own
file, error_codes.h/.cc, where all future common error codes would
go.

BUG=None
TEST=USE=buffet P2_TEST_FILTER="buffet::*" FEATURES=test emerge-link platform2

Change-Id: Ie5457cedc248612ab512a7161b1fc2cb75758ac5
Reviewed-on: https://chromium-review.googlesource.com/209248
Tested-by: Alex Vakulenko <avakulenko@chromium.org>
Reviewed-by: Christopher Wiley <wiley@chromium.org>
Commit-Queue: Alex Vakulenko <avakulenko@chromium.org>
diff --git a/buffet/http_utils.cc b/buffet/http_utils.cc
index f7f1190..3924505 100644
--- a/buffet/http_utils.cc
+++ b/buffet/http_utils.cc
@@ -10,14 +10,13 @@
 #include <base/json/json_writer.h>
 #include <base/values.h>
 
-#include "buffet/mime_utils.h"
 #include "buffet/data_encoding.h"
+#include "buffet/error_codes.h"
+#include "buffet/mime_utils.h"
 
 namespace buffet {
 namespace http {
 
-const char kErrorDomainJSON[] = "json_parser";
-
 std::unique_ptr<Response> Get(const std::string& url,
                               const HeaderList& headers,
                               std::shared_ptr<Transport> transport,
@@ -140,7 +139,7 @@
   auto content_type = mime::RemoveParameters(response->GetContentType());
   if (content_type != mime::application::kJson &&
       content_type != mime::text::kPlain) {
-    Error::AddTo(error, kErrorDomainJSON, "non_json_content_type",
+    Error::AddTo(error, errors::json::kDomain, "non_json_content_type",
                  "Unexpected response content type: " + content_type);
     return std::unique_ptr<base::DictionaryValue>();
   }
@@ -150,13 +149,14 @@
   base::Value* value = base::JSONReader::ReadAndReturnError(
       json, base::JSON_PARSE_RFC, nullptr, &error_message);
   if (!value) {
-    Error::AddTo(error, kErrorDomainJSON, "json_parse_error", error_message);
+    Error::AddTo(error, errors::json::kDomain, errors::json::kParseError,
+                 error_message);
     return std::unique_ptr<base::DictionaryValue>();
   }
   base::DictionaryValue* dict_value = nullptr;
   if (!value->GetAsDictionary(&dict_value)) {
     delete value;
-    Error::AddTo(error, kErrorDomainJSON, "json_object_error",
+    Error::AddTo(error, errors::json::kDomain, errors::json::kObjectExpected,
                  "Response is not a valid JSON object");
     return std::unique_ptr<base::DictionaryValue>();
   }