Index: storage/browser/blob/blob_data_snapshot.h |
diff --git a/storage/browser/blob/blob_data_snapshot.h b/storage/browser/blob/blob_data_snapshot.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..416c3865f323305129f155e3d016f3b739ec956a |
--- /dev/null |
+++ b/storage/browser/blob/blob_data_snapshot.h |
@@ -0,0 +1,54 @@ |
+// Copyright 2015 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#ifndef STORAGE_BROWSER_BLOB_BLOB_DATA_SNAPSHOT_H_ |
+#define STORAGE_BROWSER_BLOB_BLOB_DATA_SNAPSHOT_H_ |
+ |
+#include <string> |
+#include <vector> |
+ |
+#include "base/memory/ref_counted.h" |
+#include "base/supports_user_data.h" |
+#include "storage/browser/blob/blob_data_item.h" |
+#include "storage/browser/storage_browser_export.h" |
+ |
+namespace storage { |
+class BlobDataBuilder; |
+ |
+// Snapshot of a Blob. This snapshot holds a refcount of the current |
+// blob item resources so the backing storage for these items will stick |
+// around for the lifetime of this object. (The data represented by a blob is |
+// immutable, but the backing store can change). Keeping this object alive |
+// guarantees that the resources stay alive, but it does not guarentee that |
+// the blob stays alive. Use the BlobDataHandle to keep a blob alive. |
+// This class must be deleted on the IO thread. |
+class STORAGE_EXPORT BlobDataSnapshot : public base::SupportsUserData::Data { |
+ public: |
+ BlobDataSnapshot(const BlobDataSnapshot& other); |
+ ~BlobDataSnapshot() override; |
+ |
+ const std::vector<scoped_refptr<BlobDataItem>>& items() const { |
+ return items_; |
+ } |
+ const std::string& content_type() const { return content_type_; } |
+ const std::string& content_disposition() const { |
+ return content_disposition_; |
+ } |
+ size_t GetMemoryUsage() const; |
+ |
+ private: |
+ friend class BlobDataBuilder; |
+ BlobDataSnapshot(const std::string& uuid, |
+ const std::string& content_type, |
+ const std::string& content_disposition, |
+ const std::vector<scoped_refptr<BlobDataItem>>& items); |
+ |
+ const std::string uuid_; |
+ const std::string content_type_; |
+ const std::string content_disposition_; |
+ const std::vector<scoped_refptr<BlobDataItem>> items_; |
+}; |
+ |
+} // namespace storage |
+#endif // STORAGE_BROWSER_BLOB_BLOB_DATA_SNAPSHOT_H_ |