• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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