Roll src/third_party/WebKit f36d5e0:68b67cd (svn 193299:193303)
[chromium-blink-merge.git] / sync / js / js_event_details.h
blobae970cceb886fbc01b509a860e96c163aecf1ca0
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.
5 #ifndef SYNC_JS_JS_EVENT_DETAILS_H_
6 #define SYNC_JS_JS_EVENT_DETAILS_H_
8 // See README.js for design comments.
10 #include <string>
12 #include "base/values.h"
13 #include "sync/base/sync_export.h"
14 #include "sync/internal_api/public/util/immutable.h"
16 namespace syncer {
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();
25 // Takes over the data in |details|, leaving |details| empty.
26 explicit JsEventDetails(base::DictionaryValue* details);
28 ~JsEventDetails();
30 const base::DictionaryValue& Get() const;
32 std::string ToString() const;
34 // Copy constructor and assignment operator welcome.
36 private:
37 typedef Immutable<base::DictionaryValue,
38 HasSwapMemFnByPtr<base::DictionaryValue> >
39 ImmutableDictionaryValue;
41 ImmutableDictionaryValue details_;
44 } // namespace syncer
46 #endif // SYNC_JS_JS_EVENT_DETAILS_H_