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

Side by Side Diff: webkit/blob/blob_storage_controller_unittest.cc

Issue 10834289: Split net::UploadData into two: for IPC and for upload handling (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase + moved ResolveBlobRef from webkit_blob to webkit_glue Created 8 years, 4 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
« no previous file with comments | « webkit/blob/blob_storage_controller.cc ('k') | webkit/glue/resource_loader_bridge.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 #include "base/file_path.h" 5 #include "base/file_path.h"
6 #include "base/memory/ref_counted.h" 6 #include "base/memory/ref_counted.h"
7 #include "base/memory/scoped_ptr.h" 7 #include "base/memory/scoped_ptr.h"
8 #include "base/time.h" 8 #include "base/time.h"
9 #include "net/base/upload_data.h"
10 #include "testing/gtest/include/gtest/gtest.h" 9 #include "testing/gtest/include/gtest/gtest.h"
11 #include "webkit/blob/blob_data.h" 10 #include "webkit/blob/blob_data.h"
12 #include "webkit/blob/blob_storage_controller.h" 11 #include "webkit/blob/blob_storage_controller.h"
13 12
14 using net::UploadData;
15
16 namespace webkit_blob { 13 namespace webkit_blob {
17 14
18 TEST(BlobStorageControllerTest, RegisterBlobUrl) { 15 TEST(BlobStorageControllerTest, RegisterBlobUrl) {
19 // Setup a set of blob data for testing. 16 // Setup a set of blob data for testing.
20 base::Time time1, time2; 17 base::Time time1, time2;
21 base::Time::FromString("Tue, 15 Nov 1994, 12:45:26 GMT", &time1); 18 base::Time::FromString("Tue, 15 Nov 1994, 12:45:26 GMT", &time1);
22 base::Time::FromString("Mon, 14 Nov 1994, 11:30:49 GMT", &time2); 19 base::Time::FromString("Mon, 14 Nov 1994, 11:30:49 GMT", &time2);
23 20
24 scoped_refptr<BlobData> blob_data1(new BlobData()); 21 scoped_refptr<BlobData> blob_data1(new BlobData());
25 blob_data1->AppendData("Data1"); 22 blob_data1->AppendData("Data1");
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
69 blob_data_found = blob_storage_controller.GetBlobDataFromUrl(blob_url3); 66 blob_data_found = blob_storage_controller.GetBlobDataFromUrl(blob_url3);
70 ASSERT_TRUE(blob_data_found != NULL); 67 ASSERT_TRUE(blob_data_found != NULL);
71 EXPECT_TRUE(*blob_data_found == *blob_data1); 68 EXPECT_TRUE(*blob_data_found == *blob_data1);
72 69
73 // Test unregistering a blob URL. 70 // Test unregistering a blob URL.
74 blob_storage_controller.RemoveBlob(blob_url3); 71 blob_storage_controller.RemoveBlob(blob_url3);
75 blob_data_found = blob_storage_controller.GetBlobDataFromUrl(blob_url3); 72 blob_data_found = blob_storage_controller.GetBlobDataFromUrl(blob_url3);
76 EXPECT_TRUE(!blob_data_found); 73 EXPECT_TRUE(!blob_data_found);
77 } 74 }
78 75
79 TEST(BlobStorageControllerTest, ResolveBlobReferencesInUploadData) {
80 // Setup blob data for testing.
81 base::Time time1, time2;
82 base::Time::FromString("Tue, 15 Nov 1994, 12:45:26 GMT", &time1);
83 base::Time::FromString("Mon, 14 Nov 1994, 11:30:49 GMT", &time2);
84
85 BlobStorageController blob_storage_controller;
86 scoped_refptr<BlobData> blob_data(new BlobData());
87
88 GURL blob_url0("blob://url_0");
89 blob_storage_controller.AddFinishedBlob(blob_url0, blob_data);
90
91 blob_data->AppendData("BlobData");
92 blob_data->AppendFile(
93 FilePath(FILE_PATH_LITERAL("BlobFile.txt")), 0, 20, time1);
94
95 GURL blob_url1("blob://url_1");
96 blob_storage_controller.AddFinishedBlob(blob_url1, blob_data);
97
98 GURL blob_url2("blob://url_2");
99 blob_storage_controller.CloneBlob(blob_url2, blob_url1);
100
101 GURL blob_url3("blob://url_3");
102 blob_storage_controller.CloneBlob(blob_url3, blob_url2);
103
104 // Setup upload data elements for comparison.
105 net::UploadElement blob_element1, blob_element2;
106 blob_element1.SetToBytes(
107 blob_data->items().at(0).data.c_str() +
108 static_cast<int>(blob_data->items().at(0).offset),
109 static_cast<int>(blob_data->items().at(0).length));
110 blob_element2.SetToFilePathRange(
111 blob_data->items().at(1).file_path,
112 blob_data->items().at(1).offset,
113 blob_data->items().at(1).length,
114 blob_data->items().at(1).expected_modification_time);
115
116 net::UploadElement upload_element1, upload_element2;
117 upload_element1.SetToBytes("Hello", 5);
118 upload_element2.SetToFilePathRange(
119 FilePath(FILE_PATH_LITERAL("foo1.txt")), 0, 20, time2);
120
121 // Test no blob reference.
122 scoped_refptr<UploadData> upload_data(new UploadData());
123 upload_data->AppendBytes(
124 &upload_element1.bytes().at(0),
125 upload_element1.bytes().size());
126 upload_data->AppendFileRange(
127 upload_element2.file_path(),
128 upload_element2.file_range_offset(),
129 upload_element2.file_range_length(),
130 upload_element2.expected_file_modification_time());
131
132 blob_storage_controller.ResolveBlobReferencesInUploadData(upload_data.get());
133 ASSERT_EQ(upload_data->elements()->size(), 2U);
134 EXPECT_TRUE(upload_data->elements()->at(0) == upload_element1);
135 EXPECT_TRUE(upload_data->elements()->at(1) == upload_element2);
136
137 // Test having only one blob reference that refers to empty blob data.
138 upload_data = new UploadData();
139 upload_data->AppendBlob(blob_url0);
140
141 blob_storage_controller.ResolveBlobReferencesInUploadData(upload_data.get());
142 ASSERT_EQ(upload_data->elements()->size(), 0U);
143
144 // Test having only one blob reference.
145 upload_data = new UploadData();
146 upload_data->AppendBlob(blob_url1);
147
148 blob_storage_controller.ResolveBlobReferencesInUploadData(upload_data.get());
149 ASSERT_EQ(upload_data->elements()->size(), 2U);
150 EXPECT_TRUE(upload_data->elements()->at(0) == blob_element1);
151 EXPECT_TRUE(upload_data->elements()->at(1) == blob_element2);
152
153 // Test having one blob reference at the beginning.
154 upload_data = new UploadData();
155 upload_data->AppendBlob(blob_url1);
156 upload_data->AppendBytes(
157 &upload_element1.bytes().at(0),
158 upload_element1.bytes().size());
159 upload_data->AppendFileRange(
160 upload_element2.file_path(),
161 upload_element2.file_range_offset(),
162 upload_element2.file_range_length(),
163 upload_element2.expected_file_modification_time());
164
165 blob_storage_controller.ResolveBlobReferencesInUploadData(upload_data.get());
166 ASSERT_EQ(upload_data->elements()->size(), 4U);
167 EXPECT_TRUE(upload_data->elements()->at(0) == blob_element1);
168 EXPECT_TRUE(upload_data->elements()->at(1) == blob_element2);
169 EXPECT_TRUE(upload_data->elements()->at(2) == upload_element1);
170 EXPECT_TRUE(upload_data->elements()->at(3) == upload_element2);
171
172 // Test having one blob reference at the end.
173 upload_data = new UploadData();
174 upload_data->AppendBytes(
175 &upload_element1.bytes().at(0),
176 upload_element1.bytes().size());
177 upload_data->AppendFileRange(
178 upload_element2.file_path(),
179 upload_element2.file_range_offset(),
180 upload_element2.file_range_length(),
181 upload_element2.expected_file_modification_time());
182 upload_data->AppendBlob(blob_url1);
183
184 blob_storage_controller.ResolveBlobReferencesInUploadData(upload_data.get());
185 ASSERT_EQ(upload_data->elements()->size(), 4U);
186 EXPECT_TRUE(upload_data->elements()->at(0) == upload_element1);
187 EXPECT_TRUE(upload_data->elements()->at(1) == upload_element2);
188 EXPECT_TRUE(upload_data->elements()->at(2) == blob_element1);
189 EXPECT_TRUE(upload_data->elements()->at(3) == blob_element2);
190
191 // Test having one blob reference in the middle.
192 upload_data = new UploadData();
193 upload_data->AppendBytes(
194 &upload_element1.bytes().at(0),
195 upload_element1.bytes().size());
196 upload_data->AppendBlob(blob_url1);
197 upload_data->AppendFileRange(
198 upload_element2.file_path(),
199 upload_element2.file_range_offset(),
200 upload_element2.file_range_length(),
201 upload_element2.expected_file_modification_time());
202
203 blob_storage_controller.ResolveBlobReferencesInUploadData(upload_data.get());
204 ASSERT_EQ(upload_data->elements()->size(), 4U);
205 EXPECT_TRUE(upload_data->elements()->at(0) == upload_element1);
206 EXPECT_TRUE(upload_data->elements()->at(1) == blob_element1);
207 EXPECT_TRUE(upload_data->elements()->at(2) == blob_element2);
208 EXPECT_TRUE(upload_data->elements()->at(3) == upload_element2);
209
210 // Test having multiple blob references.
211 upload_data = new UploadData();
212 upload_data->AppendBlob(blob_url1);
213 upload_data->AppendBytes(
214 &upload_element1.bytes().at(0),
215 upload_element1.bytes().size());
216 upload_data->AppendBlob(blob_url2);
217 upload_data->AppendBlob(blob_url3);
218 upload_data->AppendFileRange(
219 upload_element2.file_path(),
220 upload_element2.file_range_offset(),
221 upload_element2.file_range_length(),
222 upload_element2.expected_file_modification_time());
223
224 blob_storage_controller.ResolveBlobReferencesInUploadData(upload_data.get());
225 ASSERT_EQ(upload_data->elements()->size(), 8U);
226 EXPECT_TRUE(upload_data->elements()->at(0) == blob_element1);
227 EXPECT_TRUE(upload_data->elements()->at(1) == blob_element2);
228 EXPECT_TRUE(upload_data->elements()->at(2) == upload_element1);
229 EXPECT_TRUE(upload_data->elements()->at(3) == blob_element1);
230 EXPECT_TRUE(upload_data->elements()->at(4) == blob_element2);
231 EXPECT_TRUE(upload_data->elements()->at(5) == blob_element1);
232 EXPECT_TRUE(upload_data->elements()->at(6) == blob_element2);
233 EXPECT_TRUE(upload_data->elements()->at(7) == upload_element2);
234 }
235
236 } // namespace webkit_blob 76 } // namespace webkit_blob
OLDNEW
« no previous file with comments | « webkit/blob/blob_storage_controller.cc ('k') | webkit/glue/resource_loader_bridge.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698