| 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..d085e5a705b8ab79540786c35ea26a71ce38dc6c 100644
|
| --- a/storage/browser/blob/shareable_blob_data_item.cc
|
| +++ b/storage/browser/blob/shareable_blob_data_item.cc
|
| @@ -7,20 +7,51 @@
|
| #include "storage/browser/blob/blob_data_item.h"
|
|
|
| namespace storage {
|
| +namespace {
|
| +
|
| +uint64_t GetAndIncrementItemId() {
|
| + static uint64_t sNextItemId = 0;
|
| + return sNextItemId++;
|
| +}
|
| +
|
| +} // namespace
|
|
|
| ShareableBlobDataItem::ShareableBlobDataItem(
|
| - const std::string& blob_uuid,
|
| - const scoped_refptr<BlobDataItem>& item)
|
| - : item_(item) {
|
| + const std::string& referencing_blob_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(referencing_blob_uuid);
|
| }
|
|
|
| ShareableBlobDataItem::~ShareableBlobDataItem() {
|
| }
|
|
|
| -const scoped_refptr<BlobDataItem>& ShareableBlobDataItem::item() {
|
| - return item_;
|
| +void ShareableBlobDataItem::set_item(scoped_refptr<BlobDataItem> item) {
|
| + item_ = std::move(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()) {
|
| + *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
|
|
|