Index: chrome/common/automation_id.cc |
diff --git a/chrome/common/automation_id.cc b/chrome/common/automation_id.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..bd788eddbb3e40417b5046c922c6391c5095db0e |
--- /dev/null |
+++ b/chrome/common/automation_id.cc |
@@ -0,0 +1,75 @@ |
+// Copyright (c) 2011 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include "chrome/common/automation_id.h" |
+ |
+#include "base/stringprintf.h" |
+#include "base/values.h" |
+ |
+using base::DictionaryValue; |
+using base::Value; |
+ |
+// static |
+bool AutomationId::FromValue( |
+ Value* value, AutomationId* id, std::string* error) { |
+ DictionaryValue* dict; |
+ if (!value->GetAsDictionary(&dict)) { |
+ *error = "automation ID must be a dictionary"; |
+ return false; |
+ } |
+ int type; |
+ if (!dict->GetInteger("type", &type)) { |
+ *error = "automation ID 'type' missing or invalid"; |
+ return false; |
+ } |
+ std::string type_id; |
+ if (!dict->GetString("id", &type_id)) { |
+ *error = "automation ID 'type_id' missing or invalid"; |
+ return false; |
+ } |
+ *id = AutomationId(static_cast<Type>(type), type_id); |
+ return true; |
+} |
+ |
+// static |
+bool AutomationId::FromValueInDictionary( |
+ DictionaryValue* dict, |
+ const std::string& key, |
+ AutomationId* id, |
+ std::string* error) { |
+ Value* id_value; |
+ if (!dict->Get(key, &id_value)) { |
+ *error = base::StringPrintf("automation ID '%s' missing", key.c_str()); |
+ return false; |
+ } |
+ return FromValue(id_value, id, error); |
+} |
+ |
+AutomationId::AutomationId() : type_(kTypeInvalid) { } |
+ |
+AutomationId::AutomationId(Type type, const std::string& id) |
+ : type_(type), id_(id) { } |
+ |
+bool AutomationId::operator==(const AutomationId& id) const { |
+ return type_ == id.type_ && id_ == id.id_; |
+} |
+ |
+DictionaryValue* AutomationId::ToValue() const { |
+ DictionaryValue* dict = new DictionaryValue(); |
+ dict->SetInteger("type", type_); |
+ dict->SetString("id", id_); |
+ return dict; |
+} |
+ |
+bool AutomationId::is_valid() const { |
+ return type_ != kTypeInvalid; |
+} |
+ |
+AutomationId::Type AutomationId::type() const { |
+ return type_; |
+} |
+ |
+const std::string& AutomationId::id() const { |
+ return id_; |
+} |