Home | History | Annotate | Download | only in js
      1 // Copyright 2012 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 #ifndef SYNC_JS_JS_ARG_LIST_H_
      6 #define SYNC_JS_JS_ARG_LIST_H_
      7 
      8 // See README.js for design comments.
      9 
     10 #include <string>
     11 
     12 #include "base/values.h"
     13 #include "sync/base/sync_export.h"
     14 #include "sync/internal_api/public/util/immutable.h"
     15 
     16 namespace syncer {
     17 
     18 // A thin wrapper around Immutable<ListValue>.  Used for passing
     19 // around argument lists to different threads.
     20 class SYNC_EXPORT JsArgList {
     21  public:
     22   // Uses an empty argument list.
     23   JsArgList();
     24 
     25   // Takes over the data in |args|, leaving |args| empty.
     26   explicit JsArgList(base::ListValue* args);
     27 
     28   ~JsArgList();
     29 
     30   const base::ListValue& Get() const;
     31 
     32   std::string ToString() const;
     33 
     34   // Copy constructor and assignment operator welcome.
     35 
     36  private:
     37   typedef Immutable<base::ListValue, HasSwapMemFnByPtr<base::ListValue> >
     38       ImmutableListValue;
     39   ImmutableListValue args_;
     40 };
     41 
     42 }  // namespace syncer
     43 
     44 #endif  // SYNC_JS_JS_ARG_LIST_H_
     45