Index: tools/json_schema_compiler/util.cc |
diff --git a/tools/json_schema_compiler/util.cc b/tools/json_schema_compiler/util.cc |
index a5e1668c1ff2aef628e005e8ab1e9d19962bd430..a15c9f514f242c697c1f921d01d4a6018d8a7f55 100644 |
--- a/tools/json_schema_compiler/util.cc |
+++ b/tools/json_schema_compiler/util.cc |
@@ -4,25 +4,35 @@ |
#include "tools/json_schema_compiler/util.h" |
+#include "base/strings/stringprintf.h" |
#include "base/strings/utf_string_conversions.h" |
#include "base/values.h" |
namespace json_schema_compiler { |
namespace util { |
+namespace { |
+ |
+bool ReportError(const base::Value& from, |
+ base::Value::Type expected, |
+ base::string16* error) { |
+ if (!error->empty()) |
+ error->append(base::ASCIIToUTF16("; ")); |
+ error->append(base::ASCIIToUTF16(base::StringPrintf( |
+ "expected %s, got %s", base::Value::GetTypeName(expected), |
+ base::Value::GetTypeName(from.GetType())))); |
+ return false; // Always false on purpose. |
+} |
+ |
+} // namespace |
+ |
bool PopulateItem(const base::Value& from, int* out) { |
return from.GetAsInteger(out); |
} |
bool PopulateItem(const base::Value& from, int* out, base::string16* error) { |
- if (!from.GetAsInteger(out)) { |
- if (error->length()) { |
- error->append(base::UTF8ToUTF16("; ")); |
- } |
- error->append(base::UTF8ToUTF16("expected integer, got " + |
- ValueTypeToString(from.GetType()))); |
- return false; |
- } |
+ if (!from.GetAsInteger(out)) |
+ return ReportError(from, base::Value::TYPE_INTEGER, error); |
return true; |
} |
@@ -31,14 +41,8 @@ bool PopulateItem(const base::Value& from, bool* out) { |
} |
bool PopulateItem(const base::Value& from, bool* out, base::string16* error) { |
- if (!from.GetAsBoolean(out)) { |
- if (error->length()) { |
- error->append(base::UTF8ToUTF16("; ")); |
- } |
- error->append(base::UTF8ToUTF16("expected boolean, got " + |
- ValueTypeToString(from.GetType()))); |
- return false; |
- } |
+ if (!from.GetAsBoolean(out)) |
+ return ReportError(from, base::Value::TYPE_BOOLEAN, error); |
return true; |
} |
@@ -47,14 +51,8 @@ bool PopulateItem(const base::Value& from, double* out) { |
} |
bool PopulateItem(const base::Value& from, double* out, base::string16* error) { |
- if (!from.GetAsDouble(out)) { |
- if (error->length()) { |
- error->append(base::UTF8ToUTF16("; ")); |
- } |
- error->append(base::UTF8ToUTF16("expected double, got " + |
- ValueTypeToString(from.GetType()))); |
- return false; |
- } |
+ if (!from.GetAsDouble(out)) |
+ return ReportError(from, base::Value::TYPE_DOUBLE, error); |
return true; |
} |
@@ -65,14 +63,8 @@ bool PopulateItem(const base::Value& from, std::string* out) { |
bool PopulateItem(const base::Value& from, |
std::string* out, |
base::string16* error) { |
- if (!from.GetAsString(out)) { |
- if (error->length()) { |
- error->append(base::UTF8ToUTF16("; ")); |
- } |
- error->append(base::UTF8ToUTF16("expected string, got " + |
- ValueTypeToString(from.GetType()))); |
- return false; |
- } |
+ if (!from.GetAsString(out)) |
+ return ReportError(from, base::Value::TYPE_STRING, error); |
return true; |
} |
@@ -88,14 +80,8 @@ bool PopulateItem(const base::Value& from, |
std::vector<char>* out, |
base::string16* error) { |
const base::BinaryValue* binary = nullptr; |
- if (!from.GetAsBinary(&binary)) { |
- if (error->length()) { |
- error->append(base::UTF8ToUTF16("; ")); |
- } |
- error->append(base::UTF8ToUTF16("expected binary, got " + |
- ValueTypeToString(from.GetType()))); |
- return false; |
- } |
+ if (!from.GetAsBinary(&binary)) |
+ return ReportError(from, base::Value::TYPE_BINARY, error); |
out->assign(binary->GetBuffer(), binary->GetBuffer() + binary->GetSize()); |
return true; |
} |
@@ -125,14 +111,8 @@ bool PopulateItem(const base::Value& from, |
std::unique_ptr<base::DictionaryValue>* out, |
base::string16* error) { |
const base::DictionaryValue* dict = nullptr; |
- if (!from.GetAsDictionary(&dict)) { |
- if (error->length()) { |
- error->append(base::UTF8ToUTF16("; ")); |
- } |
- error->append(base::UTF8ToUTF16("expected dictionary, got " + |
- ValueTypeToString(from.GetType()))); |
- return false; |
- } |
+ if (!from.GetAsDictionary(&dict)) |
+ return ReportError(from, base::Value::TYPE_DICTIONARY, error); |
*out = dict->CreateDeepCopy(); |
return true; |
} |
@@ -168,28 +148,5 @@ void AddItemToList(const std::unique_ptr<base::DictionaryValue>& from, |
out->Append(from->CreateDeepCopy()); |
} |
-std::string ValueTypeToString(base::Value::Type type) { |
- switch (type) { |
- case base::Value::TYPE_NULL: |
- return "null"; |
- case base::Value::TYPE_BOOLEAN: |
- return "boolean"; |
- case base::Value::TYPE_INTEGER: |
- return "integer"; |
- case base::Value::TYPE_DOUBLE: |
- return "number"; |
- case base::Value::TYPE_STRING: |
- return "string"; |
- case base::Value::TYPE_BINARY: |
- return "binary"; |
- case base::Value::TYPE_DICTIONARY: |
- return "dictionary"; |
- case base::Value::TYPE_LIST: |
- return "list"; |
- } |
- NOTREACHED(); |
- return ""; |
-} |
- |
} // namespace util |
} // namespace json_schema_compiler |