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

Side by Side Diff: webkit/blob/blob_data.h

Issue 3282003: Support handling blob URL and resolve blob references in upload data.... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 10 years, 3 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 | Annotate | Revision Log
OLDNEW
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"
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
66 expected_modification_time_ = expected_modification_time; 66 expected_modification_time_ = expected_modification_time;
67 } 67 }
68 68
69 void SetToBlob(const GURL& blob_url, uint64 offset, uint64 length) { 69 void SetToBlob(const GURL& blob_url, uint64 offset, uint64 length) {
70 type_ = TYPE_BLOB; 70 type_ = TYPE_BLOB;
71 blob_url_ = blob_url; 71 blob_url_ = blob_url;
72 offset_ = offset; 72 offset_ = offset;
73 length_ = length; 73 length_ = length;
74 } 74 }
75 75
76 #if defined(UNIT_TEST)
77 bool operator==(const Item& other) const {
78 if (type_ != other.type_)
79 return false;
80 if (type_ == TYPE_DATA) {
81 return data_ == other.data_ &&
82 offset_ == other.offset_ &&
83 length_ == other.length_;
84 }
85 if (type_ == TYPE_FILE) {
86 return file_path_ == other.file_path_ &&
87 offset_ == other.offset_ &&
88 length_ == other.length_ &&
89 expected_modification_time_ == other.expected_modification_time_;
90 }
91 if (type_ == TYPE_BLOB) {
92 return blob_url_ == other.blob_url_ &&
93 offset_ == other.offset_ &&
94 length_ == other.length_;
95 }
96 return false;
97 }
98
99 bool operator!=(const Item& other) const {
100 return !(*this == other);
101 }
102 #endif // defined(UNIT_TEST)
103
104 private: 76 private:
105 Type type_; 77 Type type_;
106 78
107 // For Data type. 79 // For Data type.
108 std::string data_; 80 std::string data_;
109 81
110 // For File type. 82 // For File type.
111 FilePath file_path_; 83 FilePath file_path_;
112 84
113 // For Blob typ. 85 // For Blob typ.
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
158 content_type_ = content_type; 130 content_type_ = content_type;
159 } 131 }
160 132
161 const std::string& content_disposition() const { 133 const std::string& content_disposition() const {
162 return content_disposition_; 134 return content_disposition_;
163 } 135 }
164 void set_content_disposition(const std::string& content_disposition) { 136 void set_content_disposition(const std::string& content_disposition) {
165 content_disposition_ = content_disposition; 137 content_disposition_ = content_disposition;
166 } 138 }
167 139
168 #if defined(UNIT_TEST)
169 bool operator==(const BlobData& other) const {
170 if (content_type_ != other.content_type_)
171 return false;
172 if (content_disposition_ != other.content_disposition_)
173 return false;
174 if (items_.size() != other.items_.size())
175 return false;
176 for (size_t i = 0; i < items_.size(); ++i) {
177 if (items_[i] != other.items_[i])
178 return false;
179 }
180 return true;
181 }
182 #endif // defined(UNIT_TEST)
183
184 private: 140 private:
185 friend class base::RefCounted<BlobData>; 141 friend class base::RefCounted<BlobData>;
186 142
187 virtual ~BlobData() { } 143 virtual ~BlobData() { }
188 144
189 std::string content_type_; 145 std::string content_type_;
190 std::string content_disposition_; 146 std::string content_disposition_;
191 std::vector<Item> items_; 147 std::vector<Item> items_;
192 }; 148 };
193 149
150 #if defined(UNIT_TEST)
151 inline bool operator==(const BlobData::Item& a, const BlobData::Item& b) {
152 if (a.type() != b.type())
153 return false;
154 if (a.type() == BlobData::TYPE_DATA) {
155 return a.data() == b.data() &&
156 a.offset() == b.offset() &&
157 a.length() == b.length();
158 }
159 if (a.type() == BlobData::TYPE_FILE) {
160 return a.file_path() == b.file_path() &&
161 a.offset() == b.offset() &&
162 a.length() == b.length() &&
163 a.expected_modification_time() == b.expected_modification_time();
164 }
165 if (a.type() == BlobData::TYPE_BLOB) {
166 return a.blob_url() == b.blob_url() &&
167 a.offset() == b.offset() &&
168 a.length() == b.length();
169 }
170 return false;
171 }
172
173 inline bool operator!=(const BlobData::Item& a, const BlobData::Item& b) {
174 return !(a == b);
175 }
176
177 inline bool operator==(const BlobData& a, const BlobData& b) {
178 if (a.content_type() != b.content_type())
179 return false;
180 if (a.content_disposition() != b.content_disposition())
181 return false;
182 if (a.items().size() != b.items().size())
183 return false;
184 for (size_t i = 0; i < a.items().size(); ++i) {
185 if (a.items()[i] != b.items()[i])
186 return false;
187 }
188 return true;
189 }
190
191 inline bool operator!=(const BlobData& a, const BlobData& b) {
192 return !(a == b);
193 }
194 #endif // defined(UNIT_TEST)
195
194 } // namespace webkit_blob 196 } // namespace webkit_blob
195 197
196 #endif // WEBKIT_BLOB_BLOB_DATA_H_ 198 #endif // WEBKIT_BLOB_BLOB_DATA_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698