| // 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/test/automation/value_conversion_traits.h" |
| |
| #include "base/values.h" |
| |
| using base::DictionaryValue; |
| using base::ListValue; |
| using base::Value; |
| |
| Value* ValueConversionTraits<int>::CreateValueFrom(int t) { |
| return new base::FundamentalValue(t); |
| } |
| |
| bool ValueConversionTraits<int>::SetFromValue(const Value* value, int* t) { |
| return value->GetAsInteger(t); |
| } |
| |
| bool ValueConversionTraits<int>::CanConvert(const Value* value) { |
| int t; |
| return SetFromValue(value, &t); |
| } |
| |
| Value* ValueConversionTraits<bool>::CreateValueFrom(bool t) { |
| return new base::FundamentalValue(t); |
| } |
| |
| bool ValueConversionTraits<bool>::SetFromValue(const Value* value, bool* t) { |
| return value->GetAsBoolean(t); |
| } |
| |
| bool ValueConversionTraits<bool>::CanConvert(const Value* value) { |
| bool t; |
| return SetFromValue(value, &t); |
| } |
| |
| Value* ValueConversionTraits<std::string>::CreateValueFrom( |
| const std::string& t) { |
| return new base::StringValue(t); |
| } |
| |
| bool ValueConversionTraits<std::string>::SetFromValue( |
| const Value* value, std::string* t) { |
| return value->GetAsString(t); |
| } |
| |
| bool ValueConversionTraits<std::string>::CanConvert(const Value* value) { |
| std::string t; |
| return SetFromValue(value, &t); |
| } |
| |
| Value* ValueConversionTraits<Value*>::CreateValueFrom(const Value* t) { |
| return t->DeepCopy(); |
| } |
| |
| bool ValueConversionTraits<Value*>::SetFromValue( |
| const Value* value, Value** t) { |
| *t = value->DeepCopy(); |
| return true; |
| } |
| |
| bool ValueConversionTraits<Value*>::CanConvert(const Value* value) { |
| return true; |
| } |
| |
| Value* ValueConversionTraits<ListValue*>::CreateValueFrom(const ListValue* t) { |
| return t->DeepCopy(); |
| } |
| |
| bool ValueConversionTraits<ListValue*>::SetFromValue(const Value* value, |
| ListValue** t) { |
| if (!value->IsType(Value::TYPE_LIST)) |
| return false; |
| *t = static_cast<const ListValue*>(value)->DeepCopy(); |
| return true; |
| } |
| |
| bool ValueConversionTraits<ListValue*>::CanConvert(const Value* value) { |
| return value->IsType(Value::TYPE_LIST); |
| } |
| |
| Value* ValueConversionTraits<DictionaryValue*>::CreateValueFrom( |
| const DictionaryValue* t) { |
| return t->DeepCopy(); |
| } |
| |
| bool ValueConversionTraits<DictionaryValue*>::SetFromValue( |
| const Value* value, DictionaryValue** t) { |
| if (!value->IsType(Value::TYPE_DICTIONARY)) |
| return false; |
| *t = static_cast<const DictionaryValue*>(value)->DeepCopy(); |
| return true; |
| } |
| |
| bool ValueConversionTraits<DictionaryValue*>::CanConvert(const Value* value) { |
| return value->IsType(Value::TYPE_DICTIONARY); |
| } |