Index: storage/browser/blob/blob_data_builder.h |
diff --git a/storage/browser/blob/blob_data_builder.h b/storage/browser/blob/blob_data_builder.h |
index 115d1f4391a8ad1b9ab44bb29f553345c2cfa04a..e75c95da812a405c3a8ec1931e338e04a7d24b21 100644 |
--- a/storage/browser/blob/blob_data_builder.h |
+++ b/storage/browser/blob/blob_data_builder.h |
@@ -6,6 +6,7 @@ |
#define STORAGE_BROWSER_BLOB_BLOB_DATA_BUILDER_H_ |
#include <stdint.h> |
+#include <ostream> |
#include <string> |
#include <vector> |
@@ -32,12 +33,24 @@ class STORAGE_EXPORT BlobDataBuilder { |
const std::string& uuid() const { return uuid_; } |
+ // Validates the data element, and copies the data if it's a 'bytes' element. |
+ // Cannot append elements of BYTES_DESCRIPTION or DISK_CACHE_ENTRY types. |
+ void AppendDataElement(const DataElement& element); |
+ |
void AppendData(const std::string& data) { |
AppendData(data.c_str(), data.size()); |
} |
void AppendData(const char* data, size_t length); |
+ // ***** Async construction methods ***** |
+ void AppendFutureData(size_t length); |
+ bool PopulateFutureData(size_t index, |
+ const char* data, |
+ size_t offset, |
+ size_t length); |
+ // ************************************** |
+ |
// You must know the length of the file, you cannot use kuint64max to specify |
// the whole file. This method creates a ShareableFileReference to the given |
// file, which is stored in this builder. |
@@ -67,10 +80,15 @@ class STORAGE_EXPORT BlobDataBuilder { |
content_disposition_ = content_disposition; |
} |
+ void Clear(); |
+ |
private: |
friend class BlobStorageContext; |
+ friend class BlobAsyncBuilderHostTest; |
friend bool operator==(const BlobDataBuilder& a, const BlobDataBuilder& b); |
friend bool operator==(const BlobDataSnapshot& a, const BlobDataBuilder& b); |
+ friend STORAGE_EXPORT std::ostream& operator<<(std::ostream& os, |
+ const BlobDataBuilder& x); |
std::string uuid_; |
std::string content_type_; |
@@ -80,6 +98,8 @@ class STORAGE_EXPORT BlobDataBuilder { |
DISALLOW_COPY_AND_ASSIGN(BlobDataBuilder); |
}; |
+std::ostream& operator<<(std::ostream& os, const BlobDataBuilder& x); |
+ |
#if defined(UNIT_TEST) |
inline bool operator==(const BlobDataBuilder& a, const BlobDataBuilder& b) { |
if (a.content_type_ != b.content_type_) |
@@ -89,7 +109,7 @@ inline bool operator==(const BlobDataBuilder& a, const BlobDataBuilder& b) { |
if (a.items_.size() != b.items_.size()) |
return false; |
for (size_t i = 0; i < a.items_.size(); ++i) { |
- if (a.items_[i] != b.items_[i]) |
+ if (*(a.items_[i]) != *(b.items_[i])) |
return false; |
} |
return true; |
@@ -119,6 +139,7 @@ inline bool operator!=(const BlobDataSnapshot& a, const BlobDataBuilder& b) { |
inline bool operator!=(const BlobDataBuilder& a, const BlobDataBuilder& b) { |
return !(a == b); |
} |
+ |
#endif // defined(UNIT_TEST) |
} // namespace storage |