Home | History | Annotate | Download | only in sync
      1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #include "chrome/browser/sync/js_arg_list.h"
      6 
      7 #include "base/json/json_writer.h"
      8 #include "base/memory/scoped_ptr.h"
      9 
     10 namespace browser_sync {
     11 
     12 JsArgList::JsArgList() : args_(new SharedListValue()) {}
     13 
     14 JsArgList::JsArgList(const ListValue& args)
     15     : args_(new SharedListValue(args)) {}
     16 
     17 JsArgList::JsArgList(const std::vector<const Value*>& args)
     18     : args_(new SharedListValue(args)) {}
     19 
     20 JsArgList::~JsArgList() {}
     21 
     22 const ListValue& JsArgList::Get() const {
     23   return args_->Get();
     24 }
     25 
     26 std::string JsArgList::ToString() const {
     27   std::string str;
     28   base::JSONWriter::Write(&Get(), false, &str);
     29   return str;
     30 }
     31 
     32 JsArgList::SharedListValue::SharedListValue() {}
     33 
     34 JsArgList::SharedListValue::SharedListValue(const ListValue& list_value) {
     35   // Go through contortions to copy the list since ListValues are not
     36   // copyable.
     37   scoped_ptr<ListValue> list_value_copy(list_value.DeepCopy());
     38   list_value_.Swap(list_value_copy.get());
     39 }
     40 
     41 JsArgList::SharedListValue::SharedListValue(
     42     const std::vector<const Value*>& value_list) {
     43   for (std::vector<const Value*>::const_iterator it = value_list.begin();
     44        it != value_list.end(); ++it) {
     45     list_value_.Append((*it)->DeepCopy());
     46   }
     47 }
     48 
     49 const ListValue& JsArgList::SharedListValue::Get() const {
     50   return list_value_;
     51 }
     52 
     53 JsArgList::SharedListValue::~SharedListValue() {}
     54 
     55 }  // namespace browser_sync
     56