Index: chrome/test/webdriver/utility_functions.cc |
=================================================================== |
--- chrome/test/webdriver/utility_functions.cc (revision 88495) |
+++ chrome/test/webdriver/utility_functions.cc (working copy) |
@@ -4,13 +4,76 @@ |
#include "chrome/test/webdriver/utility_functions.h" |
+#include <string.h> |
+#include <wchar.h> |
+#include <algorithm> |
+#include <sstream> |
+ |
#include "base/basictypes.h" |
#include "base/format_macros.h" |
+#include "base/json/json_reader.h" |
+#include "base/logging.h" |
+#include "base/memory/scoped_ptr.h" |
#include "base/rand_util.h" |
#include "base/stringprintf.h" |
namespace webdriver { |
+std::string print_valuetype(Value::ValueType e) { |
+ switch (e) { |
+ case Value::TYPE_NULL: |
+ return "NULL "; |
+ case Value::TYPE_BOOLEAN: |
+ return "BOOL"; |
+ case Value::TYPE_INTEGER: |
+ return "INT"; |
+ case Value::TYPE_DOUBLE: |
+ return "DOUBLE"; |
+ case Value::TYPE_STRING: |
+ return "STRING"; |
+ case Value::TYPE_BINARY: |
+ return "BIN"; |
+ case Value::TYPE_DICTIONARY: |
+ return "DICT"; |
+ case Value::TYPE_LIST: |
+ return "LIST"; |
+ default: |
+ return "ERROR"; |
+ } |
+} |
+ |
+void CheckValueType(const Value::ValueType expected, |
+ const Value* const actual) { |
+ DCHECK(actual != NULL) << "Expected value to be non-NULL"; |
+ DCHECK(expected == actual->GetType()) |
+ << "Expected " << print_valuetype(expected) |
+ << ", but was " << print_valuetype(actual->GetType()); |
+} |
+ |
+bool ParseJSONDictionary(const std::string& json, DictionaryValue** dict, |
+ std::string* error) { |
+ int error_code = 0; |
+ Value* params = |
+ base::JSONReader::ReadAndReturnError(json, true, &error_code, error); |
+ if (error_code != 0) { |
+ VLOG(1) << "Could not parse JSON object, " << *error; |
+ if (params) |
+ delete params; |
+ return false; |
+ } |
+ |
+ if (!params || params->GetType() != Value::TYPE_DICTIONARY) { |
+ *error = "Data passed in URL must be of type dictionary."; |
+ VLOG(1) << "Invalid type to parse"; |
+ if (params) |
+ delete params; |
+ return false; |
+ } |
+ |
+ *dict = static_cast<DictionaryValue*>(params); |
+ return true; |
+} |
+ |
std::string GenerateRandomID() { |
uint64 msb = base::RandUint64(); |
uint64 lsb = base::RandUint64(); |