Chromium Code Reviews| Index: chrome/browser/sync/api/sync_data.h |
| diff --git a/chrome/browser/sync/api/sync_data.h b/chrome/browser/sync/api/sync_data.h |
| index 7656de89d3f6750d4a2429e381b584834dfbc750..4b1302dec5e98f0af3f0c59377d3ac7d074f0e91 100644 |
| --- a/chrome/browser/sync/api/sync_data.h |
| +++ b/chrome/browser/sync/api/sync_data.h |
| @@ -10,13 +10,13 @@ |
| #include <vector> |
| #include "base/memory/ref_counted.h" |
|
Nicolas Zea
2011/09/15 23:39:46
can we get rid of this now?
akalin
2011/09/16 00:59:59
Done.
|
| -#include "base/memory/scoped_ptr.h" |
| #include "chrome/browser/sync/syncable/model_type.h" |
| +#include "chrome/browser/sync/util/immutable.h" |
| namespace sync_pb { |
| class EntitySpecifics; |
| class SyncEntity; |
| -} |
| +} // namespace sync_pb |
| typedef syncable::ModelType SyncDataType; |
| @@ -77,30 +77,37 @@ class SyncData { |
| // TODO(zea): Query methods for other sync properties: parent, successor, etc. |
| private: |
| - // A reference counted immutable SyncEntity. |
| - class SharedSyncEntity : public |
| - base::RefCountedThreadSafe<SharedSyncEntity> { |
| - public: |
| - // Takes ownership of |sync_entity|'s contents. |
| - explicit SharedSyncEntity(sync_pb::SyncEntity* sync_entity); |
| + // Necessary since we forward-declare sync_pb::SyncEntity; see |
| + // comments in immutable.h. |
| + struct ImmutableSyncEntityTraits { |
| + typedef sync_pb::SyncEntity* Container; |
| - // Returns immutable reference to local sync entity. |
| - const sync_pb::SyncEntity& sync_entity() const; |
| + static void CreateAndDefaultInitialize(Container* container); |
| - private: |
| - friend class base::RefCountedThreadSafe<SharedSyncEntity>; |
| + static void Destroy(Container* container); |
| - // Private due to ref counting. |
| - ~SharedSyncEntity(); |
| + static const sync_pb::SyncEntity& Unwrap(const Container& container); |
| - scoped_ptr<sync_pb::SyncEntity> sync_entity_; |
| + static sync_pb::SyncEntity* UnwrapMutable(Container* container); |
| + |
| + static void Swap(sync_pb::SyncEntity* t1, sync_pb::SyncEntity* t2); |
| }; |
| - // The actual shared sync entity being held. |
| - scoped_refptr<SharedSyncEntity> shared_entity_; |
| + typedef browser_sync::Immutable< |
| + sync_pb::SyncEntity, ImmutableSyncEntityTraits> |
| + ImmutableSyncEntity; |
| + |
| + // Clears |entity|. |
| + SyncData(sync_pb::SyncEntity* entity, bool is_local); |
| + |
| + // Whether this SyncData holds valid data. |
| + bool is_valid_; |
| // Whether this data originated locally or from the syncer (remote data). |
| bool is_local_; |
| + |
| + // The actual shared sync entity being held. |
| + ImmutableSyncEntity immutable_entity_; |
| }; |
| #endif // CHROME_BROWSER_SYNC_API_SYNC_DATA_H_ |