| // Copyright 2012 The Chromium Authors. All rights reserved. | 
 | // Use of this source code is governed by a BSD-style license that can be | 
 | // found in the LICENSE file. | 
 |  | 
 | #ifndef COMPONENTS_SYNC_JS_JS_EVENT_DETAILS_H_ | 
 | #define COMPONENTS_SYNC_JS_JS_EVENT_DETAILS_H_ | 
 |  | 
 | // See README.js for design comments. | 
 |  | 
 | #include <string> | 
 |  | 
 | #include "base/values.h" | 
 | #include "components/sync/base/immutable.h" | 
 |  | 
 | namespace syncer { | 
 |  | 
 | // A thin wrapper around Immutable<DictionaryValue>.  Used for passing | 
 | // around event details to different threads. | 
 | class JsEventDetails { | 
 |  public: | 
 |   // Uses an empty dictionary. | 
 |   JsEventDetails(); | 
 |  | 
 |   // Takes over the data in |details|, leaving |details| empty. | 
 |   explicit JsEventDetails(base::DictionaryValue* details); | 
 |  | 
 |   JsEventDetails(const JsEventDetails& other); | 
 |  | 
 |   ~JsEventDetails(); | 
 |  | 
 |   const base::DictionaryValue& Get() const; | 
 |  | 
 |   std::string ToString() const; | 
 |  | 
 |   // Copy constructor and assignment operator welcome. | 
 |  | 
 |  private: | 
 |   using ImmutableDictionaryValue = | 
 |       Immutable<base::DictionaryValue, | 
 |                 HasSwapMemFnByPtr<base::DictionaryValue>>; | 
 |  | 
 |   ImmutableDictionaryValue details_; | 
 | }; | 
 |  | 
 | }  // namespace syncer | 
 |  | 
 | #endif  // COMPONENTS_SYNC_JS_JS_EVENT_DETAILS_H_ |