Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(88)

Unified Diff: storage/browser/blob/blob_data_snapshot.h

Issue 810403004: [Storage] Blob Storage Refactoring pt 1 (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixed copyright Created 5 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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_

Powered by Google App Engine
This is Rietveld 408576698