| Index: storage/browser/blob/shareable_blob_data_item.h
 | 
| diff --git a/storage/browser/blob/shareable_blob_data_item.h b/storage/browser/blob/shareable_blob_data_item.h
 | 
| index 4c2f9c1833262d18dfa82b622abdfef8585b9541..6ab1b18bd3b0a84cba4287bf1a01c652cf126b0d 100644
 | 
| --- a/storage/browser/blob/shareable_blob_data_item.h
 | 
| +++ b/storage/browser/blob/shareable_blob_data_item.h
 | 
| @@ -11,6 +11,7 @@
 | 
|  #include "base/hash.h"
 | 
|  #include "base/macros.h"
 | 
|  #include "base/memory/ref_counted.h"
 | 
| +#include "storage/browser/storage_browser_export.h"
 | 
|  #include "storage/common/data_element.h"
 | 
|  
 | 
|  namespace storage {
 | 
| @@ -23,22 +24,34 @@ class InternalBlobData;
 | 
|  // The data in this class (the item) is immutable, but the item itself can be
 | 
|  // swapped out with an item with the same data but a different backing (think
 | 
|  // RAM vs file backed).
 | 
| -class ShareableBlobDataItem : public base::RefCounted<ShareableBlobDataItem> {
 | 
| +class STORAGE_EXPORT ShareableBlobDataItem
 | 
| +    : public base::RefCountedThreadSafe<ShareableBlobDataItem> {
 | 
|   public:
 | 
| -  ShareableBlobDataItem(const std::string& blob_uuid,
 | 
| -                        const scoped_refptr<BlobDataItem>& item);
 | 
| +  ShareableBlobDataItem(scoped_refptr<BlobDataItem> item);
 | 
|  
 | 
| -  const scoped_refptr<BlobDataItem>& item();
 | 
| +  const scoped_refptr<BlobDataItem>& item() const;
 | 
|  
 | 
| -  base::hash_set<std::string>& referencing_blobs() {
 | 
| +  // This is a unique auto-incrementing id assigned to this item on
 | 
| +  // construction. It is used to keep track of this item in an LRU data
 | 
| +  // structure for eviction to disk.
 | 
| +  uint64_t item_id() const { return item_id_; }
 | 
| +
 | 
| +  const base::hash_set<std::string>& referencing_blobs() const {
 | 
|      return referencing_blobs_;
 | 
|    }
 | 
|  
 | 
|   private:
 | 
| -  friend class base::RefCounted<ShareableBlobDataItem>;
 | 
| +  friend class base::RefCountedThreadSafe<ShareableBlobDataItem>;
 | 
|    friend class InternalBlobData;
 | 
| +  friend class BlobMemoryController;
 | 
| +  friend class BlobStorageContext;
 | 
| +  friend STORAGE_EXPORT void PrintTo(const ShareableBlobDataItem& x,
 | 
| +                                     ::std::ostream* os);
 | 
| +
 | 
|    ~ShareableBlobDataItem();
 | 
|  
 | 
| +  // This is a unique identifier for this ShareableBlobDataItem.
 | 
| +  uint64_t item_id_;
 | 
|    scoped_refptr<BlobDataItem> item_;
 | 
|  
 | 
|    base::hash_set<std::string> referencing_blobs_;
 | 
| @@ -46,5 +59,10 @@ class ShareableBlobDataItem : public base::RefCounted<ShareableBlobDataItem> {
 | 
|    DISALLOW_COPY_AND_ASSIGN(ShareableBlobDataItem);
 | 
|  };
 | 
|  
 | 
| +STORAGE_EXPORT bool operator==(const ShareableBlobDataItem& a,
 | 
| +                               const ShareableBlobDataItem& b);
 | 
| +STORAGE_EXPORT bool operator!=(const ShareableBlobDataItem& a,
 | 
| +                               const ShareableBlobDataItem& b);
 | 
| +
 | 
|  }  // namespace storage
 | 
|  #endif  // STORAGE_BROWSER_BLOB_SHAREABLE_BLOB_DATA_ITEM_H_
 | 
| 
 |