// 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::CreateValueFrom(int t) { return Value::CreateIntegerValue(t); } bool ValueConversionTraits::SetFromValue(const Value* value, int* t) { return value->GetAsInteger(t); } bool ValueConversionTraits::CanConvert(const Value* value) { int t; return SetFromValue(value, &t); } Value* ValueConversionTraits::CreateValueFrom(bool t) { return Value::CreateBooleanValue(t); } bool ValueConversionTraits::SetFromValue(const Value* value, bool* t) { return value->GetAsBoolean(t); } bool ValueConversionTraits::CanConvert(const Value* value) { bool t; return SetFromValue(value, &t); } Value* ValueConversionTraits::CreateValueFrom( const std::string& t) { return Value::CreateStringValue(t); } bool ValueConversionTraits::SetFromValue( const Value* value, std::string* t) { return value->GetAsString(t); } bool ValueConversionTraits::CanConvert(const Value* value) { std::string t; return SetFromValue(value, &t); } Value* ValueConversionTraits::CreateValueFrom(const Value* t) { return t->DeepCopy(); } bool ValueConversionTraits::SetFromValue( const Value* value, Value** t) { *t = value->DeepCopy(); return true; } bool ValueConversionTraits::CanConvert(const Value* value) { return true; } Value* ValueConversionTraits::CreateValueFrom(const ListValue* t) { return t->DeepCopy(); } bool ValueConversionTraits::SetFromValue(const Value* value, ListValue** t) { if (!value->IsType(Value::TYPE_LIST)) return false; *t = static_cast(value)->DeepCopy(); return true; } bool ValueConversionTraits::CanConvert(const Value* value) { return value->IsType(Value::TYPE_LIST); } Value* ValueConversionTraits::CreateValueFrom( const DictionaryValue* t) { return t->DeepCopy(); } bool ValueConversionTraits::SetFromValue( const Value* value, DictionaryValue** t) { if (!value->IsType(Value::TYPE_DICTIONARY)) return false; *t = static_cast(value)->DeepCopy(); return true; } bool ValueConversionTraits::CanConvert(const Value* value) { return value->IsType(Value::TYPE_DICTIONARY); }