| OLD | NEW |
| 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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 WEBKIT_BLOB_BLOB_DATA_H_ | 5 #ifndef WEBKIT_BLOB_BLOB_DATA_H_ |
| 6 #define WEBKIT_BLOB_BLOB_DATA_H_ | 6 #define WEBKIT_BLOB_BLOB_DATA_H_ |
| 7 | 7 |
| 8 #include <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "base/basictypes.h" | 10 #include "base/basictypes.h" |
| 11 #include "base/file_path.h" | 11 #include "base/file_path.h" |
| 12 #include "base/ref_counted.h" | 12 #include "base/ref_counted.h" |
| 13 #include "base/time.h" | 13 #include "base/time.h" |
| 14 #include "googleurl/src/gurl.h" | 14 #include "googleurl/src/gurl.h" |
| 15 #include "webkit/blob/deletable_file_reference.h" |
| 15 | 16 |
| 16 namespace WebKit { | 17 namespace WebKit { |
| 17 class WebBlobData; | 18 class WebBlobData; |
| 18 } | 19 } |
| 19 | 20 |
| 20 namespace webkit_blob { | 21 namespace webkit_blob { |
| 21 | 22 |
| 22 class BlobData : public base::RefCounted<BlobData> { | 23 class BlobData : public base::RefCounted<BlobData> { |
| 23 public: | 24 public: |
| 24 enum Type { | 25 enum Type { |
| (...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 110 items_.push_back(Item()); | 111 items_.push_back(Item()); |
| 111 items_.back().SetToFile(file_path, offset, length, | 112 items_.back().SetToFile(file_path, offset, length, |
| 112 expected_modification_time); | 113 expected_modification_time); |
| 113 } | 114 } |
| 114 | 115 |
| 115 void AppendBlob(const GURL& blob_url, uint64 offset, uint64 length) { | 116 void AppendBlob(const GURL& blob_url, uint64 offset, uint64 length) { |
| 116 items_.push_back(Item()); | 117 items_.push_back(Item()); |
| 117 items_.back().SetToBlob(blob_url, offset, length); | 118 items_.back().SetToBlob(blob_url, offset, length); |
| 118 } | 119 } |
| 119 | 120 |
| 121 void AttachDeletableFileReference(DeletableFileReference* reference) { |
| 122 deletable_files_.push_back(reference); |
| 123 } |
| 124 |
| 120 const std::vector<Item>& items() const { return items_; } | 125 const std::vector<Item>& items() const { return items_; } |
| 121 void set_items(const std::vector<Item>& items) { | |
| 122 items_ = items; | |
| 123 } | |
| 124 void swap_items(std::vector<Item>* items) { | |
| 125 items_.swap(*items); | |
| 126 } | |
| 127 | 126 |
| 128 const std::string& content_type() const { return content_type_; } | 127 const std::string& content_type() const { return content_type_; } |
| 129 void set_content_type(const std::string& content_type) { | 128 void set_content_type(const std::string& content_type) { |
| 130 content_type_ = content_type; | 129 content_type_ = content_type; |
| 131 } | 130 } |
| 132 | 131 |
| 133 const std::string& content_disposition() const { | 132 const std::string& content_disposition() const { |
| 134 return content_disposition_; | 133 return content_disposition_; |
| 135 } | 134 } |
| 136 void set_content_disposition(const std::string& content_disposition) { | 135 void set_content_disposition(const std::string& content_disposition) { |
| 137 content_disposition_ = content_disposition; | 136 content_disposition_ = content_disposition; |
| 138 } | 137 } |
| 139 | 138 |
| 139 // Should only be called by the IPC ParamTraits for this class. |
| 140 void swap_items(std::vector<Item>* items) { |
| 141 items_.swap(*items); |
| 142 } |
| 143 |
| 140 private: | 144 private: |
| 141 friend class base::RefCounted<BlobData>; | 145 friend class base::RefCounted<BlobData>; |
| 142 | 146 |
| 143 virtual ~BlobData() { } | 147 virtual ~BlobData() { } |
| 144 | 148 |
| 145 std::string content_type_; | 149 std::string content_type_; |
| 146 std::string content_disposition_; | 150 std::string content_disposition_; |
| 147 std::vector<Item> items_; | 151 std::vector<Item> items_; |
| 152 std::vector<scoped_refptr<DeletableFileReference> > deletable_files_; |
| 153 |
| 154 DISALLOW_COPY_AND_ASSIGN(BlobData); |
| 148 }; | 155 }; |
| 149 | 156 |
| 150 #if defined(UNIT_TEST) | 157 #if defined(UNIT_TEST) |
| 151 inline bool operator==(const BlobData::Item& a, const BlobData::Item& b) { | 158 inline bool operator==(const BlobData::Item& a, const BlobData::Item& b) { |
| 152 if (a.type() != b.type()) | 159 if (a.type() != b.type()) |
| 153 return false; | 160 return false; |
| 154 if (a.type() == BlobData::TYPE_DATA) { | 161 if (a.type() == BlobData::TYPE_DATA) { |
| 155 return a.data() == b.data() && | 162 return a.data() == b.data() && |
| 156 a.offset() == b.offset() && | 163 a.offset() == b.offset() && |
| 157 a.length() == b.length(); | 164 a.length() == b.length(); |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 189 } | 196 } |
| 190 | 197 |
| 191 inline bool operator!=(const BlobData& a, const BlobData& b) { | 198 inline bool operator!=(const BlobData& a, const BlobData& b) { |
| 192 return !(a == b); | 199 return !(a == b); |
| 193 } | 200 } |
| 194 #endif // defined(UNIT_TEST) | 201 #endif // defined(UNIT_TEST) |
| 195 | 202 |
| 196 } // namespace webkit_blob | 203 } // namespace webkit_blob |
| 197 | 204 |
| 198 #endif // WEBKIT_BLOB_BLOB_DATA_H_ | 205 #endif // WEBKIT_BLOB_BLOB_DATA_H_ |
| OLD | NEW |