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

Side by Side Diff: storage/browser/blob/blob_data_handle.h

Issue 2055053003: [BlobAsync] Disk support for blob storage (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fixes, working w/ Layout tests Created 4 years, 6 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef STORAGE_BROWSER_BLOB_BLOB_DATA_HANDLE_H_ 5 #ifndef STORAGE_BROWSER_BLOB_BLOB_DATA_HANDLE_H_
6 #define STORAGE_BROWSER_BLOB_BLOB_DATA_HANDLE_H_ 6 #define STORAGE_BROWSER_BLOB_BLOB_DATA_HANDLE_H_
7 7
8 #include <memory> 8 #include <memory>
9 #include <string> 9 #include <string>
10 10
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
70 std::unique_ptr<BlobReader> CreateReader( 70 std::unique_ptr<BlobReader> CreateReader(
71 FileSystemContext* file_system_context, 71 FileSystemContext* file_system_context,
72 base::SequencedTaskRunner* file_task_runner) const; 72 base::SequencedTaskRunner* file_task_runner) const;
73 73
74 // May be accessed on any thread. 74 // May be accessed on any thread.
75 const std::string& uuid() const; 75 const std::string& uuid() const;
76 // May be accessed on any thread. 76 // May be accessed on any thread.
77 const std::string& content_type() const; 77 const std::string& content_type() const;
78 // May be accessed on any thread. 78 // May be accessed on any thread.
79 const std::string& content_disposition() const; 79 const std::string& content_disposition() const;
80 // May be accessed on any thread. In rare cases where the blob is created
81 // as a file from the renderer, this will be uint64_max.
82 uint64_t size() const;
80 83
81 // This call and the destruction of the returned snapshot must be called 84 // This call and the destruction of the returned snapshot must be called
82 // on the IO thread. If the blob is broken, then we return a nullptr here. 85 // on the IO thread. If the blob is broken, then we return a nullptr here.
83 // Please do not call this, and use CreateReader instead. It appropriately 86 // Please do not call this, and use CreateReader instead. It appropriately
84 // waits until the blob is built before having a size (see CalculateSize). 87 // waits until the blob is built before having a size (see CalculateSize).
85 // TODO(dmurph): Make this protected, where only the BlobReader can call it. 88 // TODO(dmurph): Make this protected, where only the BlobReader can call it.
86 std::unique_ptr<BlobDataSnapshot> CreateSnapshot() const; 89 std::unique_ptr<BlobDataSnapshot> CreateSnapshot() const;
87 90
88 private: 91 private:
89 // Internal class whose destructor is guarenteed to be called on the IO 92 // Internal class whose destructor is guarenteed to be called on the IO
90 // thread. 93 // thread.
91 class BlobDataHandleShared 94 class BlobDataHandleShared
92 : public base::RefCountedThreadSafe<BlobDataHandleShared> { 95 : public base::RefCountedThreadSafe<BlobDataHandleShared> {
93 public: 96 public:
94 BlobDataHandleShared(const std::string& uuid, 97 BlobDataHandleShared(const std::string& uuid,
95 const std::string& content_type, 98 const std::string& content_type,
96 const std::string& content_disposition, 99 const std::string& content_disposition,
100 uint64_t size,
97 BlobStorageContext* context); 101 BlobStorageContext* context);
98 102
99 private: 103 private:
100 friend class base::DeleteHelper<BlobDataHandleShared>; 104 friend class base::DeleteHelper<BlobDataHandleShared>;
101 friend class base::RefCountedThreadSafe<BlobDataHandleShared>; 105 friend class base::RefCountedThreadSafe<BlobDataHandleShared>;
102 friend class BlobDataHandle; 106 friend class BlobDataHandle;
103 107
104 virtual ~BlobDataHandleShared(); 108 virtual ~BlobDataHandleShared();
105 109
106 const std::string uuid_; 110 const std::string uuid_;
107 const std::string content_type_; 111 const std::string content_type_;
108 const std::string content_disposition_; 112 const std::string content_disposition_;
113 const uint64_t size_;
109 base::WeakPtr<BlobStorageContext> context_; 114 base::WeakPtr<BlobStorageContext> context_;
110 115
111 DISALLOW_COPY_AND_ASSIGN(BlobDataHandleShared); 116 DISALLOW_COPY_AND_ASSIGN(BlobDataHandleShared);
112 }; 117 };
113 118
114 friend class BlobStorageContext; 119 friend class BlobStorageContext;
115 BlobDataHandle(const std::string& uuid, 120 BlobDataHandle(const std::string& uuid,
116 const std::string& content_type, 121 const std::string& content_type,
117 const std::string& content_disposition, 122 const std::string& content_disposition,
123 uint64_t size,
118 BlobStorageContext* context, 124 BlobStorageContext* context,
119 base::SequencedTaskRunner* io_task_runner); 125 base::SequencedTaskRunner* io_task_runner);
120 126
121 scoped_refptr<base::SequencedTaskRunner> io_task_runner_; 127 scoped_refptr<base::SequencedTaskRunner> io_task_runner_;
122 scoped_refptr<BlobDataHandleShared> shared_; 128 scoped_refptr<BlobDataHandleShared> shared_;
123 }; 129 };
124 130
125 } // namespace storage 131 } // namespace storage
126 132
127 #endif // STORAGE_BROWSER_BLOB_BLOB_DATA_HANDLE_H_ 133 #endif // STORAGE_BROWSER_BLOB_BLOB_DATA_HANDLE_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698