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_EVENT_DETAILS_H_
      6 #define SYNC_JS_JS_EVENT_DETAILS_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<DictionaryValue>.  Used for passing
     19 // around event details to different threads.
     20 class SYNC_EXPORT JsEventDetails {
     21  public:
     22   // Uses an empty dictionary.
     23   JsEventDetails();
     24 
     25   // Takes over the data in |details|, leaving |details| empty.
     26   explicit JsEventDetails(base::DictionaryValue* details);
     27 
     28   ~JsEventDetails();
     29 
     30   const base::DictionaryValue& Get() const;
     31 
     32   std::string ToString() const;
     33 
     34   // Copy constructor and assignment operator welcome.
     35 
     36  private:
     37   typedef Immutable<base::DictionaryValue,
     38                     HasSwapMemFnByPtr<base::DictionaryValue> >
     39       ImmutableDictionaryValue;
     40 
     41   ImmutableDictionaryValue details_;
     42 };
     43 
     44 }  // namespace syncer
     45 
     46 #endif  // SYNC_JS_JS_EVENT_DETAILS_H_
     47