// 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_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_; }