// 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/browser/sync/js_arg_list.h" #include "base/json/json_writer.h" #include "base/memory/scoped_ptr.h" namespace browser_sync { JsArgList::JsArgList() : args_(new SharedListValue()) {} JsArgList::JsArgList(const ListValue& args) : args_(new SharedListValue(args)) {} JsArgList::JsArgList(const std::vector<const Value*>& args) : args_(new SharedListValue(args)) {} JsArgList::~JsArgList() {} const ListValue& JsArgList::Get() const { return args_->Get(); } std::string JsArgList::ToString() const { std::string str; base::JSONWriter::Write(&Get(), false, &str); return str; } JsArgList::SharedListValue::SharedListValue() {} JsArgList::SharedListValue::SharedListValue(const ListValue& list_value) { // Go through contortions to copy the list since ListValues are not // copyable. scoped_ptr<ListValue> list_value_copy(list_value.DeepCopy()); list_value_.Swap(list_value_copy.get()); } JsArgList::SharedListValue::SharedListValue( const std::vector<const Value*>& value_list) { for (std::vector<const Value*>::const_iterator it = value_list.begin(); it != value_list.end(); ++it) { list_value_.Append((*it)->DeepCopy()); } } const ListValue& JsArgList::SharedListValue::Get() const { return list_value_; } JsArgList::SharedListValue::~SharedListValue() {} } // namespace browser_sync