Index: sync/api/attachments/attachment_store.h |
diff --git a/sync/api/attachments/attachment_store.h b/sync/api/attachments/attachment_store.h |
index d487f8cd1775673a6cc3cee53b788e9f730f6c35..45ccaf9c8efa355eaa53862eaf89463fc86c97eb 100644 |
--- a/sync/api/attachments/attachment_store.h |
+++ b/sync/api/attachments/attachment_store.h |
@@ -25,10 +25,8 @@ class AttachmentId; |
// |
// Destroying this object does not necessarily cancel outstanding async |
// operations. If you need cancel like semantics, use WeakPtr in the callbacks. |
-class SYNC_EXPORT AttachmentStore : public base::RefCounted<AttachmentStore> { |
+class SYNC_EXPORT AttachmentStoreBase { |
public: |
- AttachmentStore(); |
- |
// TODO(maniscalco): Consider udpating Read and Write methods to support |
// resumable transfers (bug 353292). |
@@ -43,6 +41,9 @@ class SYNC_EXPORT AttachmentStore : public base::RefCounted<AttachmentStore> { |
typedef base::Callback<void(const Result&)> WriteCallback; |
typedef base::Callback<void(const Result&)> DropCallback; |
+ AttachmentStoreBase(); |
+ virtual ~AttachmentStoreBase(); |
+ |
// Asynchronously reads the attachments identified by |ids|. |
// |
// |callback| will be invoked when finished. AttachmentStore will attempt to |
@@ -81,9 +82,22 @@ class SYNC_EXPORT AttachmentStore : public base::RefCounted<AttachmentStore> { |
// successfully. |
virtual void Drop(const AttachmentIdList& ids, |
const DropCallback& callback) = 0; |
+}; |
+ |
+// AttachmentStore is an interface exposed to data type and AttachmentService |
+// code. Also contains factory methods for default implementations. |
+class SYNC_EXPORT AttachmentStore |
+ : public AttachmentStoreBase, |
+ public base::RefCountedThreadSafe<AttachmentStore> { |
+ public: |
+ AttachmentStore(); |
+ |
+ // Creates an AttachmentStoreHandle backed by in-memory implementation of |
+ // attachment store. For now frontend lives on the same thread as backend. |
+ static scoped_refptr<AttachmentStore> CreateInMemoryStore(); |
protected: |
- friend class base::RefCounted<AttachmentStore>; |
+ friend class base::RefCountedThreadSafe<AttachmentStore>; |
virtual ~AttachmentStore(); |
}; |