Chromium Code Reviews| Index: storage/browser/blob/shareable_blob_data_item.cc |
| diff --git a/storage/browser/blob/shareable_blob_data_item.cc b/storage/browser/blob/shareable_blob_data_item.cc |
| index 40aaf9c7e10d29d40acbc73798f67f6c16030b4d..0b9cf962da2b2a1b5de1ee1be939fca9753f2405 100644 |
| --- a/storage/browser/blob/shareable_blob_data_item.cc |
| +++ b/storage/browser/blob/shareable_blob_data_item.cc |
| @@ -7,20 +7,50 @@ |
| #include "storage/browser/blob/blob_data_item.h" |
| namespace storage { |
| +namespace { |
| -ShareableBlobDataItem::ShareableBlobDataItem( |
| - const std::string& blob_uuid, |
| - const scoped_refptr<BlobDataItem>& item) |
| - : item_(item) { |
| +uint64_t GetAndIncrementItemId() { |
| + static uint64_t sNextItemId = 0; |
| + return sNextItemId++; |
| +} |
| + |
| +} // namespace |
| + |
| +ShareableBlobDataItem::ShareableBlobDataItem(const std::string& target_uuid, |
| + scoped_refptr<BlobDataItem> item, |
| + ShareableBlobDataItem::State state) |
| + : item_id_(GetAndIncrementItemId()), state_(state), item_(std::move(item)) { |
| DCHECK_NE(item_->type(), DataElement::TYPE_BLOB); |
| - referencing_blobs_.insert(blob_uuid); |
| + referencing_blobs_.insert(target_uuid); |
| } |
| ShareableBlobDataItem::~ShareableBlobDataItem() { |
| } |
| -const scoped_refptr<BlobDataItem>& ShareableBlobDataItem::item() { |
| +const scoped_refptr<BlobDataItem>& ShareableBlobDataItem::item() const { |
| return item_; |
| } |
| +void PrintTo(const ShareableBlobDataItem& x, ::std::ostream* os) { |
| + *os << "<ShareableBlobDataItem>{ item_id: " << x.item_id_ |
| + << ", state: " << x.state_ << ", item: "; |
| + PrintTo(*x.item_, os); |
| + *os << ", referencing_blobs: ["; |
| + for (const std::string& uuid : x.referencing_blobs_) { |
|
pwnall
2016/09/21 09:03:35
Why do you need non-const access (referencing_blob
dmurph
2016/09/21 23:45:52
Done.
|
| + *os << uuid << ", "; |
| + } |
| + *os << "]}"; |
| +} |
| + |
| +bool operator==(const ShareableBlobDataItem& a, |
| + const ShareableBlobDataItem& b) { |
| + return a.item_id() == b.item_id() && *a.item() == *b.item() && |
| + a.referencing_blobs() == b.referencing_blobs(); |
| +} |
| + |
| +bool operator!=(const ShareableBlobDataItem& a, |
| + const ShareableBlobDataItem& b) { |
| + return !(a == b); |
| +} |
| + |
| } // namespace storage |