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

Side by Side Diff: net/base/elements_upload_data_stream_unittest.cc

Issue 1476443002: Remove ScopedVector from ElementsUploadDataStream (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix Created 5 years 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
« no previous file with comments | « net/base/elements_upload_data_stream.cc ('k') | net/base/upload_data_stream.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) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "net/base/elements_upload_data_stream.h" 5 #include "net/base/elements_upload_data_stream.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/basictypes.h" 10 #include "base/basictypes.h"
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after
135 ~ElementsUploadDataStreamTest() override { 135 ~ElementsUploadDataStreamTest() override {
136 element_readers_.clear(); 136 element_readers_.clear();
137 base::RunLoop().RunUntilIdle(); 137 base::RunLoop().RunUntilIdle();
138 } 138 }
139 139
140 void FileChangedHelper(const base::FilePath& file_path, 140 void FileChangedHelper(const base::FilePath& file_path,
141 const base::Time& time, 141 const base::Time& time,
142 bool error_expected); 142 bool error_expected);
143 143
144 base::ScopedTempDir temp_dir_; 144 base::ScopedTempDir temp_dir_;
145 ScopedVector<UploadElementReader> element_readers_; 145 std::vector<scoped_ptr<UploadElementReader>> element_readers_;
146 }; 146 };
147 147
148 TEST_F(ElementsUploadDataStreamTest, EmptyUploadData) { 148 TEST_F(ElementsUploadDataStreamTest, EmptyUploadData) {
149 scoped_ptr<UploadDataStream> stream( 149 scoped_ptr<UploadDataStream> stream(
150 new ElementsUploadDataStream(element_readers_.Pass(), 0)); 150 new ElementsUploadDataStream(std::move(element_readers_), 0));
151 ASSERT_EQ(OK, stream->Init(CompletionCallback())); 151 ASSERT_EQ(OK, stream->Init(CompletionCallback()));
152 EXPECT_TRUE(stream->IsInMemory()); 152 EXPECT_TRUE(stream->IsInMemory());
153 EXPECT_EQ(0U, stream->size()); 153 EXPECT_EQ(0U, stream->size());
154 EXPECT_EQ(0U, stream->position()); 154 EXPECT_EQ(0U, stream->position());
155 EXPECT_TRUE(stream->IsEOF()); 155 EXPECT_TRUE(stream->IsEOF());
156 } 156 }
157 157
158 TEST_F(ElementsUploadDataStreamTest, ConsumeAllBytes) { 158 TEST_F(ElementsUploadDataStreamTest, ConsumeAllBytes) {
159 element_readers_.push_back(new UploadBytesElementReader( 159 element_readers_.push_back(
160 kTestData, kTestDataSize)); 160 make_scoped_ptr(new UploadBytesElementReader(kTestData, kTestDataSize)));
161 scoped_ptr<UploadDataStream> stream( 161 scoped_ptr<UploadDataStream> stream(
162 new ElementsUploadDataStream(element_readers_.Pass(), 0)); 162 new ElementsUploadDataStream(std::move(element_readers_), 0));
163 ASSERT_EQ(OK, stream->Init(CompletionCallback())); 163 ASSERT_EQ(OK, stream->Init(CompletionCallback()));
164 EXPECT_TRUE(stream->IsInMemory()); 164 EXPECT_TRUE(stream->IsInMemory());
165 EXPECT_EQ(kTestDataSize, stream->size()); 165 EXPECT_EQ(kTestDataSize, stream->size());
166 EXPECT_EQ(0U, stream->position()); 166 EXPECT_EQ(0U, stream->position());
167 EXPECT_FALSE(stream->IsEOF()); 167 EXPECT_FALSE(stream->IsEOF());
168 scoped_refptr<IOBuffer> buf = new IOBuffer(kTestBufferSize); 168 scoped_refptr<IOBuffer> buf = new IOBuffer(kTestBufferSize);
169 while (!stream->IsEOF()) { 169 while (!stream->IsEOF()) {
170 int bytes_read = 170 int bytes_read =
171 stream->Read(buf.get(), kTestBufferSize, CompletionCallback()); 171 stream->Read(buf.get(), kTestBufferSize, CompletionCallback());
172 ASSERT_LE(0, bytes_read); // Not an error. 172 ASSERT_LE(0, bytes_read); // Not an error.
173 } 173 }
174 EXPECT_EQ(kTestDataSize, stream->position()); 174 EXPECT_EQ(kTestDataSize, stream->position());
175 ASSERT_TRUE(stream->IsEOF()); 175 ASSERT_TRUE(stream->IsEOF());
176 } 176 }
177 177
178 TEST_F(ElementsUploadDataStreamTest, File) { 178 TEST_F(ElementsUploadDataStreamTest, File) {
179 base::FilePath temp_file_path; 179 base::FilePath temp_file_path;
180 ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_dir_.path(), 180 ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_dir_.path(),
181 &temp_file_path)); 181 &temp_file_path));
182 ASSERT_EQ(static_cast<int>(kTestDataSize), 182 ASSERT_EQ(static_cast<int>(kTestDataSize),
183 base::WriteFile(temp_file_path, kTestData, kTestDataSize)); 183 base::WriteFile(temp_file_path, kTestData, kTestDataSize));
184 184
185 element_readers_.push_back( 185 element_readers_.push_back(make_scoped_ptr(new UploadFileElementReader(
186 new UploadFileElementReader(base::ThreadTaskRunnerHandle::Get().get(), 186 base::ThreadTaskRunnerHandle::Get().get(), temp_file_path, 0, kuint64max,
187 temp_file_path, 0, kuint64max, base::Time())); 187 base::Time())));
188 188
189 TestCompletionCallback init_callback; 189 TestCompletionCallback init_callback;
190 scoped_ptr<UploadDataStream> stream( 190 scoped_ptr<UploadDataStream> stream(
191 new ElementsUploadDataStream(element_readers_.Pass(), 0)); 191 new ElementsUploadDataStream(std::move(element_readers_), 0));
192 ASSERT_EQ(ERR_IO_PENDING, stream->Init(init_callback.callback())); 192 ASSERT_EQ(ERR_IO_PENDING, stream->Init(init_callback.callback()));
193 ASSERT_EQ(OK, init_callback.WaitForResult()); 193 ASSERT_EQ(OK, init_callback.WaitForResult());
194 EXPECT_FALSE(stream->IsInMemory()); 194 EXPECT_FALSE(stream->IsInMemory());
195 EXPECT_EQ(kTestDataSize, stream->size()); 195 EXPECT_EQ(kTestDataSize, stream->size());
196 EXPECT_EQ(0U, stream->position()); 196 EXPECT_EQ(0U, stream->position());
197 EXPECT_FALSE(stream->IsEOF()); 197 EXPECT_FALSE(stream->IsEOF());
198 scoped_refptr<IOBuffer> buf = new IOBuffer(kTestBufferSize); 198 scoped_refptr<IOBuffer> buf = new IOBuffer(kTestBufferSize);
199 while (!stream->IsEOF()) { 199 while (!stream->IsEOF()) {
200 TestCompletionCallback read_callback; 200 TestCompletionCallback read_callback;
201 ASSERT_EQ( 201 ASSERT_EQ(
202 ERR_IO_PENDING, 202 ERR_IO_PENDING,
203 stream->Read(buf.get(), kTestBufferSize, read_callback.callback())); 203 stream->Read(buf.get(), kTestBufferSize, read_callback.callback()));
204 ASSERT_LE(0, read_callback.WaitForResult()); // Not an error. 204 ASSERT_LE(0, read_callback.WaitForResult()); // Not an error.
205 } 205 }
206 EXPECT_EQ(kTestDataSize, stream->position()); 206 EXPECT_EQ(kTestDataSize, stream->position());
207 ASSERT_TRUE(stream->IsEOF()); 207 ASSERT_TRUE(stream->IsEOF());
208 } 208 }
209 209
210 TEST_F(ElementsUploadDataStreamTest, FileSmallerThanLength) { 210 TEST_F(ElementsUploadDataStreamTest, FileSmallerThanLength) {
211 base::FilePath temp_file_path; 211 base::FilePath temp_file_path;
212 ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_dir_.path(), 212 ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_dir_.path(),
213 &temp_file_path)); 213 &temp_file_path));
214 ASSERT_EQ(static_cast<int>(kTestDataSize), 214 ASSERT_EQ(static_cast<int>(kTestDataSize),
215 base::WriteFile(temp_file_path, kTestData, kTestDataSize)); 215 base::WriteFile(temp_file_path, kTestData, kTestDataSize));
216 const uint64_t kFakeSize = kTestDataSize * 2; 216 const uint64_t kFakeSize = kTestDataSize * 2;
217 217
218 UploadFileElementReader::ScopedOverridingContentLengthForTests 218 UploadFileElementReader::ScopedOverridingContentLengthForTests
219 overriding_content_length(kFakeSize); 219 overriding_content_length(kFakeSize);
220 220
221 element_readers_.push_back( 221 element_readers_.push_back(make_scoped_ptr(new UploadFileElementReader(
222 new UploadFileElementReader(base::ThreadTaskRunnerHandle::Get().get(), 222 base::ThreadTaskRunnerHandle::Get().get(), temp_file_path, 0, kuint64max,
223 temp_file_path, 0, kuint64max, base::Time())); 223 base::Time())));
224 224
225 TestCompletionCallback init_callback; 225 TestCompletionCallback init_callback;
226 scoped_ptr<UploadDataStream> stream( 226 scoped_ptr<UploadDataStream> stream(
227 new ElementsUploadDataStream(element_readers_.Pass(), 0)); 227 new ElementsUploadDataStream(std::move(element_readers_), 0));
228 ASSERT_EQ(ERR_IO_PENDING, stream->Init(init_callback.callback())); 228 ASSERT_EQ(ERR_IO_PENDING, stream->Init(init_callback.callback()));
229 ASSERT_EQ(OK, init_callback.WaitForResult()); 229 ASSERT_EQ(OK, init_callback.WaitForResult());
230 EXPECT_FALSE(stream->IsInMemory()); 230 EXPECT_FALSE(stream->IsInMemory());
231 EXPECT_EQ(kFakeSize, stream->size()); 231 EXPECT_EQ(kFakeSize, stream->size());
232 EXPECT_EQ(0U, stream->position()); 232 EXPECT_EQ(0U, stream->position());
233 EXPECT_FALSE(stream->IsEOF()); 233 EXPECT_FALSE(stream->IsEOF());
234 uint64_t read_counter = 0; 234 uint64_t read_counter = 0;
235 scoped_refptr<IOBuffer> buf = new IOBuffer(kTestBufferSize); 235 scoped_refptr<IOBuffer> buf = new IOBuffer(kTestBufferSize);
236 while (!stream->IsEOF()) { 236 while (!stream->IsEOF()) {
237 TestCompletionCallback read_callback; 237 TestCompletionCallback read_callback;
238 ASSERT_EQ( 238 ASSERT_EQ(
239 ERR_IO_PENDING, 239 ERR_IO_PENDING,
240 stream->Read(buf.get(), kTestBufferSize, read_callback.callback())); 240 stream->Read(buf.get(), kTestBufferSize, read_callback.callback()));
241 int bytes_read = read_callback.WaitForResult(); 241 int bytes_read = read_callback.WaitForResult();
242 ASSERT_LE(0, bytes_read); // Not an error. 242 ASSERT_LE(0, bytes_read); // Not an error.
243 read_counter += bytes_read; 243 read_counter += bytes_read;
244 EXPECT_EQ(read_counter, stream->position()); 244 EXPECT_EQ(read_counter, stream->position());
245 } 245 }
246 // UpdateDataStream will pad out the file with 0 bytes so that the HTTP 246 // UpdateDataStream will pad out the file with 0 bytes so that the HTTP
247 // transaction doesn't hang. Therefore we expected the full size. 247 // transaction doesn't hang. Therefore we expected the full size.
248 EXPECT_EQ(kFakeSize, read_counter); 248 EXPECT_EQ(kFakeSize, read_counter);
249 EXPECT_EQ(read_counter, stream->position()); 249 EXPECT_EQ(read_counter, stream->position());
250 } 250 }
251 251
252 TEST_F(ElementsUploadDataStreamTest, ReadErrorSync) { 252 TEST_F(ElementsUploadDataStreamTest, ReadErrorSync) {
253 // This element cannot be read. 253 // This element cannot be read.
254 MockUploadElementReader* reader = 254 scoped_ptr<MockUploadElementReader> reader(
255 new MockUploadElementReader(kTestDataSize, true); 255 new MockUploadElementReader(kTestDataSize, true));
256 EXPECT_CALL(*reader, Init(_)).WillOnce(Return(OK)); 256 EXPECT_CALL(*reader, Init(_)).WillOnce(Return(OK));
257 reader->SetReadExpectation(ERR_FAILED); 257 reader->SetReadExpectation(ERR_FAILED);
258 element_readers_.push_back(reader); 258 element_readers_.push_back(std::move(reader));
259 259
260 // This element is ignored because of the error from the previous reader. 260 // This element is ignored because of the error from the previous reader.
261 element_readers_.push_back(new UploadBytesElementReader( 261 element_readers_.push_back(
262 kTestData, kTestDataSize)); 262 make_scoped_ptr(new UploadBytesElementReader(kTestData, kTestDataSize)));
263 263
264 scoped_ptr<UploadDataStream> stream( 264 scoped_ptr<UploadDataStream> stream(
265 new ElementsUploadDataStream(element_readers_.Pass(), 0)); 265 new ElementsUploadDataStream(std::move(element_readers_), 0));
266 266
267 // Run Init(). 267 // Run Init().
268 ASSERT_EQ(OK, stream->Init(CompletionCallback())); 268 ASSERT_EQ(OK, stream->Init(CompletionCallback()));
269 EXPECT_EQ(kTestDataSize*2, stream->size()); 269 EXPECT_EQ(kTestDataSize*2, stream->size());
270 EXPECT_EQ(0U, stream->position()); 270 EXPECT_EQ(0U, stream->position());
271 EXPECT_FALSE(stream->IsEOF()); 271 EXPECT_FALSE(stream->IsEOF());
272 272
273 // Prepare a buffer filled with non-zero data. 273 // Prepare a buffer filled with non-zero data.
274 scoped_refptr<IOBuffer> buf = new IOBuffer(kTestBufferSize); 274 scoped_refptr<IOBuffer> buf = new IOBuffer(kTestBufferSize);
275 std::fill_n(buf->data(), kTestBufferSize, -1); 275 std::fill_n(buf->data(), kTestBufferSize, -1);
276 276
277 // Read() results in success even when the reader returns error. 277 // Read() results in success even when the reader returns error.
278 EXPECT_EQ(static_cast<int>(kTestDataSize * 2), 278 EXPECT_EQ(static_cast<int>(kTestDataSize * 2),
279 stream->Read(buf.get(), kTestBufferSize, CompletionCallback())); 279 stream->Read(buf.get(), kTestBufferSize, CompletionCallback()));
280 EXPECT_EQ(kTestDataSize * 2, stream->position()); 280 EXPECT_EQ(kTestDataSize * 2, stream->position());
281 EXPECT_TRUE(stream->IsEOF()); 281 EXPECT_TRUE(stream->IsEOF());
282 282
283 // The buffer is filled with zero. 283 // The buffer is filled with zero.
284 EXPECT_EQ(static_cast<int>(kTestDataSize*2), 284 EXPECT_EQ(static_cast<int>(kTestDataSize*2),
285 std::count(buf->data(), buf->data() + kTestBufferSize, 0)); 285 std::count(buf->data(), buf->data() + kTestBufferSize, 0));
286 } 286 }
287 287
288 TEST_F(ElementsUploadDataStreamTest, ReadErrorAsync) { 288 TEST_F(ElementsUploadDataStreamTest, ReadErrorAsync) {
289 // This element cannot be read. 289 // This element cannot be read.
290 MockUploadElementReader* reader = 290 scoped_ptr<MockUploadElementReader> reader(
291 new MockUploadElementReader(kTestDataSize, false); 291 new MockUploadElementReader(kTestDataSize, false));
292 reader->SetAsyncInitExpectation(OK); 292 reader->SetAsyncInitExpectation(OK);
293 reader->SetReadExpectation(ERR_FAILED); 293 reader->SetReadExpectation(ERR_FAILED);
294 element_readers_.push_back(reader); 294 element_readers_.push_back(std::move(reader));
295 295
296 // This element is ignored because of the error from the previous reader. 296 // This element is ignored because of the error from the previous reader.
297 element_readers_.push_back(new UploadBytesElementReader( 297 element_readers_.push_back(
298 kTestData, kTestDataSize)); 298 make_scoped_ptr(new UploadBytesElementReader(kTestData, kTestDataSize)));
299 299
300 scoped_ptr<UploadDataStream> stream( 300 scoped_ptr<UploadDataStream> stream(
301 new ElementsUploadDataStream(element_readers_.Pass(), 0)); 301 new ElementsUploadDataStream(std::move(element_readers_), 0));
302 302
303 // Run Init(). 303 // Run Init().
304 TestCompletionCallback init_callback; 304 TestCompletionCallback init_callback;
305 ASSERT_EQ(ERR_IO_PENDING, stream->Init(init_callback.callback())); 305 ASSERT_EQ(ERR_IO_PENDING, stream->Init(init_callback.callback()));
306 EXPECT_EQ(OK, init_callback.WaitForResult()); 306 EXPECT_EQ(OK, init_callback.WaitForResult());
307 EXPECT_EQ(kTestDataSize*2, stream->size()); 307 EXPECT_EQ(kTestDataSize*2, stream->size());
308 EXPECT_EQ(0U, stream->position()); 308 EXPECT_EQ(0U, stream->position());
309 EXPECT_FALSE(stream->IsEOF()); 309 EXPECT_FALSE(stream->IsEOF());
310 310
311 // Prepare a buffer filled with non-zero data. 311 // Prepare a buffer filled with non-zero data.
(...skipping 15 matching lines...) Expand all
327 327
328 TEST_F(ElementsUploadDataStreamTest, FileAndBytes) { 328 TEST_F(ElementsUploadDataStreamTest, FileAndBytes) {
329 base::FilePath temp_file_path; 329 base::FilePath temp_file_path;
330 ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_dir_.path(), 330 ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_dir_.path(),
331 &temp_file_path)); 331 &temp_file_path));
332 ASSERT_EQ(static_cast<int>(kTestDataSize), 332 ASSERT_EQ(static_cast<int>(kTestDataSize),
333 base::WriteFile(temp_file_path, kTestData, kTestDataSize)); 333 base::WriteFile(temp_file_path, kTestData, kTestDataSize));
334 334
335 const uint64_t kFileRangeOffset = 1; 335 const uint64_t kFileRangeOffset = 1;
336 const uint64_t kFileRangeLength = 4; 336 const uint64_t kFileRangeLength = 4;
337 element_readers_.push_back(new UploadFileElementReader( 337 element_readers_.push_back(make_scoped_ptr(new UploadFileElementReader(
338 base::ThreadTaskRunnerHandle::Get().get(), temp_file_path, 338 base::ThreadTaskRunnerHandle::Get().get(), temp_file_path,
339 kFileRangeOffset, kFileRangeLength, base::Time())); 339 kFileRangeOffset, kFileRangeLength, base::Time())));
340 340
341 element_readers_.push_back(new UploadBytesElementReader( 341 element_readers_.push_back(
342 kTestData, kTestDataSize)); 342 make_scoped_ptr(new UploadBytesElementReader(kTestData, kTestDataSize)));
343 343
344 const uint64_t kStreamSize = kTestDataSize + kFileRangeLength; 344 const uint64_t kStreamSize = kTestDataSize + kFileRangeLength;
345 TestCompletionCallback init_callback; 345 TestCompletionCallback init_callback;
346 scoped_ptr<UploadDataStream> stream( 346 scoped_ptr<UploadDataStream> stream(
347 new ElementsUploadDataStream(element_readers_.Pass(), 0)); 347 new ElementsUploadDataStream(std::move(element_readers_), 0));
348 ASSERT_EQ(ERR_IO_PENDING, stream->Init(init_callback.callback())); 348 ASSERT_EQ(ERR_IO_PENDING, stream->Init(init_callback.callback()));
349 ASSERT_EQ(OK, init_callback.WaitForResult()); 349 ASSERT_EQ(OK, init_callback.WaitForResult());
350 EXPECT_FALSE(stream->IsInMemory()); 350 EXPECT_FALSE(stream->IsInMemory());
351 EXPECT_EQ(kStreamSize, stream->size()); 351 EXPECT_EQ(kStreamSize, stream->size());
352 EXPECT_EQ(0U, stream->position()); 352 EXPECT_EQ(0U, stream->position());
353 EXPECT_FALSE(stream->IsEOF()); 353 EXPECT_FALSE(stream->IsEOF());
354 scoped_refptr<IOBuffer> buf = new IOBuffer(kTestBufferSize); 354 scoped_refptr<IOBuffer> buf = new IOBuffer(kTestBufferSize);
355 while (!stream->IsEOF()) { 355 while (!stream->IsEOF()) {
356 TestCompletionCallback read_callback; 356 TestCompletionCallback read_callback;
357 const int result = 357 const int result =
358 stream->Read(buf.get(), kTestBufferSize, read_callback.callback()); 358 stream->Read(buf.get(), kTestBufferSize, read_callback.callback());
359 const int bytes_read = 359 const int bytes_read =
360 result != ERR_IO_PENDING ? result : read_callback.WaitForResult(); 360 result != ERR_IO_PENDING ? result : read_callback.WaitForResult();
361 ASSERT_LE(0, bytes_read); // Not an error. 361 ASSERT_LE(0, bytes_read); // Not an error.
362 } 362 }
363 EXPECT_EQ(kStreamSize, stream->position()); 363 EXPECT_EQ(kStreamSize, stream->position());
364 ASSERT_TRUE(stream->IsEOF()); 364 ASSERT_TRUE(stream->IsEOF());
365 } 365 }
366 366
367 // Init() with on-memory and not-on-memory readers. 367 // Init() with on-memory and not-on-memory readers.
368 TEST_F(ElementsUploadDataStreamTest, InitAsync) { 368 TEST_F(ElementsUploadDataStreamTest, InitAsync) {
369 // Create UploadDataStream with mock readers. 369 // Create UploadDataStream with mock readers.
370 MockUploadElementReader* reader = NULL; 370 scoped_ptr<MockUploadElementReader> reader(
371 new MockUploadElementReader(kTestDataSize, true));
372 EXPECT_CALL(*reader, Init(_)).WillOnce(Return(OK));
373 element_readers_.push_back(std::move(reader));
371 374
372 reader = new MockUploadElementReader(kTestDataSize, true); 375 scoped_ptr<MockUploadElementReader> reader2(
373 EXPECT_CALL(*reader, Init(_)).WillOnce(Return(OK)); 376 new MockUploadElementReader(kTestDataSize, true));
374 element_readers_.push_back(reader); 377 EXPECT_CALL(*reader2, Init(_)).WillOnce(Return(OK));
378 element_readers_.push_back(std::move(reader2));
375 379
376 reader = new MockUploadElementReader(kTestDataSize, true); 380 scoped_ptr<MockUploadElementReader> reader3(
377 EXPECT_CALL(*reader, Init(_)).WillOnce(Return(OK)); 381 new MockUploadElementReader(kTestDataSize, false));
378 element_readers_.push_back(reader); 382 reader3->SetAsyncInitExpectation(OK);
383 element_readers_.push_back(std::move(reader3));
379 384
380 reader = new MockUploadElementReader(kTestDataSize, false); 385 scoped_ptr<MockUploadElementReader> reader4(
381 reader->SetAsyncInitExpectation(OK); 386 new MockUploadElementReader(kTestDataSize, false));
382 element_readers_.push_back(reader); 387 reader4->SetAsyncInitExpectation(OK);
388 element_readers_.push_back(std::move(reader4));
383 389
384 reader = new MockUploadElementReader(kTestDataSize, false); 390 scoped_ptr<MockUploadElementReader> reader5(
385 reader->SetAsyncInitExpectation(OK); 391 new MockUploadElementReader(kTestDataSize, true));
386 element_readers_.push_back(reader); 392 EXPECT_CALL(*reader5, Init(_)).WillOnce(Return(OK));
387 393 element_readers_.push_back(std::move(reader5));
388 reader = new MockUploadElementReader(kTestDataSize, true);
389 EXPECT_CALL(*reader, Init(_)).WillOnce(Return(OK));
390 element_readers_.push_back(reader);
391 394
392 scoped_ptr<UploadDataStream> stream( 395 scoped_ptr<UploadDataStream> stream(
393 new ElementsUploadDataStream(element_readers_.Pass(), 0)); 396 new ElementsUploadDataStream(std::move(element_readers_), 0));
394 397
395 // Run Init(). 398 // Run Init().
396 TestCompletionCallback callback; 399 TestCompletionCallback callback;
397 ASSERT_EQ(ERR_IO_PENDING, stream->Init(callback.callback())); 400 ASSERT_EQ(ERR_IO_PENDING, stream->Init(callback.callback()));
398 EXPECT_EQ(OK, callback.WaitForResult()); 401 EXPECT_EQ(OK, callback.WaitForResult());
399 } 402 }
400 403
401 // Init() of a reader fails asynchronously. 404 // Init() of a reader fails asynchronously.
402 TEST_F(ElementsUploadDataStreamTest, InitAsyncFailureAsync) { 405 TEST_F(ElementsUploadDataStreamTest, InitAsyncFailureAsync) {
403 // Create UploadDataStream with a mock reader. 406 // Create UploadDataStream with a mock reader.
404 MockUploadElementReader* reader = NULL; 407 scoped_ptr<MockUploadElementReader> reader(
405 408 new MockUploadElementReader(kTestDataSize, false));
406 reader = new MockUploadElementReader(kTestDataSize, false);
407 reader->SetAsyncInitExpectation(ERR_FAILED); 409 reader->SetAsyncInitExpectation(ERR_FAILED);
408 element_readers_.push_back(reader); 410 element_readers_.push_back(std::move(reader));
409 411
410 scoped_ptr<UploadDataStream> stream( 412 scoped_ptr<UploadDataStream> stream(
411 new ElementsUploadDataStream(element_readers_.Pass(), 0)); 413 new ElementsUploadDataStream(std::move(element_readers_), 0));
412 414
413 // Run Init(). 415 // Run Init().
414 TestCompletionCallback callback; 416 TestCompletionCallback callback;
415 ASSERT_EQ(ERR_IO_PENDING, stream->Init(callback.callback())); 417 ASSERT_EQ(ERR_IO_PENDING, stream->Init(callback.callback()));
416 EXPECT_EQ(ERR_FAILED, callback.WaitForResult()); 418 EXPECT_EQ(ERR_FAILED, callback.WaitForResult());
417 } 419 }
418 420
419 // Init() of a reader fails synchronously. 421 // Init() of a reader fails synchronously.
420 TEST_F(ElementsUploadDataStreamTest, InitAsyncFailureSync) { 422 TEST_F(ElementsUploadDataStreamTest, InitAsyncFailureSync) {
421 // Create UploadDataStream with mock readers. 423 // Create UploadDataStream with mock readers.
422 MockUploadElementReader* reader = NULL; 424 scoped_ptr<MockUploadElementReader> reader(
425 new MockUploadElementReader(kTestDataSize, false));
426 reader->SetAsyncInitExpectation(OK);
427 element_readers_.push_back(std::move(reader));
423 428
424 reader = new MockUploadElementReader(kTestDataSize, false); 429 scoped_ptr<MockUploadElementReader> reader2(
425 reader->SetAsyncInitExpectation(OK); 430 new MockUploadElementReader(kTestDataSize, true));
426 element_readers_.push_back(reader); 431 EXPECT_CALL(*reader2, Init(_)).WillOnce(Return(ERR_FAILED));
427 432 element_readers_.push_back(std::move(reader2));
428 reader = new MockUploadElementReader(kTestDataSize, true);
429 EXPECT_CALL(*reader, Init(_)).WillOnce(Return(ERR_FAILED));
430 element_readers_.push_back(reader);
431 433
432 scoped_ptr<UploadDataStream> stream( 434 scoped_ptr<UploadDataStream> stream(
433 new ElementsUploadDataStream(element_readers_.Pass(), 0)); 435 new ElementsUploadDataStream(std::move(element_readers_), 0));
434 436
435 // Run Init(). 437 // Run Init().
436 TestCompletionCallback callback; 438 TestCompletionCallback callback;
437 ASSERT_EQ(ERR_IO_PENDING, stream->Init(callback.callback())); 439 ASSERT_EQ(ERR_IO_PENDING, stream->Init(callback.callback()));
438 EXPECT_EQ(ERR_FAILED, callback.WaitForResult()); 440 EXPECT_EQ(ERR_FAILED, callback.WaitForResult());
439 } 441 }
440 442
441 // Read with a buffer whose size is same as the data. 443 // Read with a buffer whose size is same as the data.
442 TEST_F(ElementsUploadDataStreamTest, ReadAsyncWithExactSizeBuffer) { 444 TEST_F(ElementsUploadDataStreamTest, ReadAsyncWithExactSizeBuffer) {
443 element_readers_.push_back(new UploadBytesElementReader( 445 element_readers_.push_back(
444 kTestData, kTestDataSize)); 446 make_scoped_ptr(new UploadBytesElementReader(kTestData, kTestDataSize)));
445 scoped_ptr<UploadDataStream> stream( 447 scoped_ptr<UploadDataStream> stream(
446 new ElementsUploadDataStream(element_readers_.Pass(), 0)); 448 new ElementsUploadDataStream(std::move(element_readers_), 0));
447 449
448 ASSERT_EQ(OK, stream->Init(CompletionCallback())); 450 ASSERT_EQ(OK, stream->Init(CompletionCallback()));
449 EXPECT_TRUE(stream->IsInMemory()); 451 EXPECT_TRUE(stream->IsInMemory());
450 EXPECT_EQ(kTestDataSize, stream->size()); 452 EXPECT_EQ(kTestDataSize, stream->size());
451 EXPECT_EQ(0U, stream->position()); 453 EXPECT_EQ(0U, stream->position());
452 EXPECT_FALSE(stream->IsEOF()); 454 EXPECT_FALSE(stream->IsEOF());
453 scoped_refptr<IOBuffer> buf = new IOBuffer(kTestDataSize); 455 scoped_refptr<IOBuffer> buf = new IOBuffer(kTestDataSize);
454 int bytes_read = stream->Read(buf.get(), kTestDataSize, CompletionCallback()); 456 int bytes_read = stream->Read(buf.get(), kTestDataSize, CompletionCallback());
455 ASSERT_EQ(static_cast<int>(kTestDataSize), bytes_read); // Not an error. 457 ASSERT_EQ(static_cast<int>(kTestDataSize), bytes_read); // Not an error.
456 EXPECT_EQ(kTestDataSize, stream->position()); 458 EXPECT_EQ(kTestDataSize, stream->position());
457 ASSERT_TRUE(stream->IsEOF()); 459 ASSERT_TRUE(stream->IsEOF());
458 } 460 }
459 461
460 // Async Read() with on-memory and not-on-memory readers. 462 // Async Read() with on-memory and not-on-memory readers.
461 TEST_F(ElementsUploadDataStreamTest, ReadAsync) { 463 TEST_F(ElementsUploadDataStreamTest, ReadAsync) {
462 // Create UploadDataStream with mock readers. 464 // Create UploadDataStream with mock readers.
463 MockUploadElementReader* reader = NULL; 465 scoped_ptr<MockUploadElementReader> reader(
464 466 new MockUploadElementReader(kTestDataSize, true));
465 reader = new MockUploadElementReader(kTestDataSize, true);
466 EXPECT_CALL(*reader, Init(_)).WillOnce(Return(OK)); 467 EXPECT_CALL(*reader, Init(_)).WillOnce(Return(OK));
467 reader->SetReadExpectation(kTestDataSize); 468 reader->SetReadExpectation(kTestDataSize);
468 element_readers_.push_back(reader); 469 element_readers_.push_back(std::move(reader));
469 470
470 reader = new MockUploadElementReader(kTestDataSize, false); 471 scoped_ptr<MockUploadElementReader> reader2(
471 reader->SetAsyncInitExpectation(OK); 472 new MockUploadElementReader(kTestDataSize, false));
472 reader->SetReadExpectation(kTestDataSize); 473 reader2->SetAsyncInitExpectation(OK);
473 element_readers_.push_back(reader); 474 reader2->SetReadExpectation(kTestDataSize);
475 element_readers_.push_back(std::move(reader2));
474 476
475 reader = new MockUploadElementReader(kTestDataSize, true); 477 scoped_ptr<MockUploadElementReader> reader3(
476 EXPECT_CALL(*reader, Init(_)).WillOnce(Return(OK)); 478 new MockUploadElementReader(kTestDataSize, true));
477 reader->SetReadExpectation(kTestDataSize); 479 EXPECT_CALL(*reader3, Init(_)).WillOnce(Return(OK));
478 element_readers_.push_back(reader); 480 reader3->SetReadExpectation(kTestDataSize);
481 element_readers_.push_back(std::move(reader3));
479 482
480 reader = new MockUploadElementReader(kTestDataSize, false); 483 scoped_ptr<MockUploadElementReader> reader4(
481 reader->SetAsyncInitExpectation(OK); 484 new MockUploadElementReader(kTestDataSize, false));
482 reader->SetReadExpectation(kTestDataSize); 485 reader4->SetAsyncInitExpectation(OK);
483 element_readers_.push_back(reader); 486 reader4->SetReadExpectation(kTestDataSize);
487 element_readers_.push_back(std::move(reader4));
484 488
485 scoped_ptr<UploadDataStream> stream( 489 scoped_ptr<UploadDataStream> stream(
486 new ElementsUploadDataStream(element_readers_.Pass(), 0)); 490 new ElementsUploadDataStream(std::move(element_readers_), 0));
487 491
488 // Run Init(). 492 // Run Init().
489 TestCompletionCallback init_callback; 493 TestCompletionCallback init_callback;
490 EXPECT_EQ(ERR_IO_PENDING, stream->Init(init_callback.callback())); 494 EXPECT_EQ(ERR_IO_PENDING, stream->Init(init_callback.callback()));
491 EXPECT_EQ(OK, init_callback.WaitForResult()); 495 EXPECT_EQ(OK, init_callback.WaitForResult());
492 496
493 scoped_refptr<IOBuffer> buf = new IOBuffer(kTestBufferSize); 497 scoped_refptr<IOBuffer> buf = new IOBuffer(kTestBufferSize);
494 498
495 // Consume the first element. 499 // Consume the first element.
496 TestCompletionCallback read_callback1; 500 TestCompletionCallback read_callback1;
(...skipping 16 matching lines...) Expand all
513 EXPECT_EQ(static_cast<int>(kTestDataSize * 2), 517 EXPECT_EQ(static_cast<int>(kTestDataSize * 2),
514 read_callback3.WaitForResult()); 518 read_callback3.WaitForResult());
515 } 519 }
516 520
517 void ElementsUploadDataStreamTest::FileChangedHelper( 521 void ElementsUploadDataStreamTest::FileChangedHelper(
518 const base::FilePath& file_path, 522 const base::FilePath& file_path,
519 const base::Time& time, 523 const base::Time& time,
520 bool error_expected) { 524 bool error_expected) {
521 // Don't use element_readers_ here, as this function is called twice, and 525 // Don't use element_readers_ here, as this function is called twice, and
522 // reusing element_readers_ is wrong. 526 // reusing element_readers_ is wrong.
523 ScopedVector<UploadElementReader> element_readers; 527 std::vector<scoped_ptr<UploadElementReader>> element_readers;
524 element_readers.push_back(new UploadFileElementReader( 528 element_readers.push_back(make_scoped_ptr(new UploadFileElementReader(
525 base::ThreadTaskRunnerHandle::Get().get(), file_path, 1, 2, time)); 529 base::ThreadTaskRunnerHandle::Get().get(), file_path, 1, 2, time)));
526 530
527 TestCompletionCallback init_callback; 531 TestCompletionCallback init_callback;
528 scoped_ptr<UploadDataStream> stream( 532 scoped_ptr<UploadDataStream> stream(
529 new ElementsUploadDataStream(element_readers.Pass(), 0)); 533 new ElementsUploadDataStream(std::move(element_readers), 0));
530 ASSERT_EQ(ERR_IO_PENDING, stream->Init(init_callback.callback())); 534 ASSERT_EQ(ERR_IO_PENDING, stream->Init(init_callback.callback()));
531 int error_code = init_callback.WaitForResult(); 535 int error_code = init_callback.WaitForResult();
532 if (error_expected) 536 if (error_expected)
533 ASSERT_EQ(ERR_UPLOAD_FILE_CHANGED, error_code); 537 ASSERT_EQ(ERR_UPLOAD_FILE_CHANGED, error_code);
534 else 538 else
535 ASSERT_EQ(OK, error_code); 539 ASSERT_EQ(OK, error_code);
536 } 540 }
537 541
538 TEST_F(ElementsUploadDataStreamTest, FileChanged) { 542 TEST_F(ElementsUploadDataStreamTest, FileChanged) {
539 base::FilePath temp_file_path; 543 base::FilePath temp_file_path;
(...skipping 15 matching lines...) Expand all
555 } 559 }
556 560
557 TEST_F(ElementsUploadDataStreamTest, MultipleInit) { 561 TEST_F(ElementsUploadDataStreamTest, MultipleInit) {
558 base::FilePath temp_file_path; 562 base::FilePath temp_file_path;
559 ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_dir_.path(), 563 ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_dir_.path(),
560 &temp_file_path)); 564 &temp_file_path));
561 ASSERT_EQ(static_cast<int>(kTestDataSize), 565 ASSERT_EQ(static_cast<int>(kTestDataSize),
562 base::WriteFile(temp_file_path, kTestData, kTestDataSize)); 566 base::WriteFile(temp_file_path, kTestData, kTestDataSize));
563 567
564 // Prepare data. 568 // Prepare data.
565 element_readers_.push_back(new UploadBytesElementReader(
566 kTestData, kTestDataSize));
567 element_readers_.push_back( 569 element_readers_.push_back(
568 new UploadFileElementReader(base::ThreadTaskRunnerHandle::Get().get(), 570 make_scoped_ptr(new UploadBytesElementReader(kTestData, kTestDataSize)));
569 temp_file_path, 0, kuint64max, base::Time())); 571 element_readers_.push_back(make_scoped_ptr(new UploadFileElementReader(
572 base::ThreadTaskRunnerHandle::Get().get(), temp_file_path, 0, kuint64max,
573 base::Time())));
570 scoped_ptr<UploadDataStream> stream( 574 scoped_ptr<UploadDataStream> stream(
571 new ElementsUploadDataStream(element_readers_.Pass(), 0)); 575 new ElementsUploadDataStream(std::move(element_readers_), 0));
572 576
573 std::string expected_data(kTestData, kTestData + kTestDataSize); 577 std::string expected_data(kTestData, kTestData + kTestDataSize);
574 expected_data += expected_data; 578 expected_data += expected_data;
575 579
576 // Call Init(). 580 // Call Init().
577 TestCompletionCallback init_callback1; 581 TestCompletionCallback init_callback1;
578 ASSERT_EQ(ERR_IO_PENDING, stream->Init(init_callback1.callback())); 582 ASSERT_EQ(ERR_IO_PENDING, stream->Init(init_callback1.callback()));
579 ASSERT_EQ(OK, init_callback1.WaitForResult()); 583 ASSERT_EQ(OK, init_callback1.WaitForResult());
580 EXPECT_FALSE(stream->IsEOF()); 584 EXPECT_FALSE(stream->IsEOF());
581 EXPECT_EQ(kTestDataSize*2, stream->size()); 585 EXPECT_EQ(kTestDataSize*2, stream->size());
(...skipping 16 matching lines...) Expand all
598 602
599 TEST_F(ElementsUploadDataStreamTest, MultipleInitAsync) { 603 TEST_F(ElementsUploadDataStreamTest, MultipleInitAsync) {
600 base::FilePath temp_file_path; 604 base::FilePath temp_file_path;
601 ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_dir_.path(), 605 ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_dir_.path(),
602 &temp_file_path)); 606 &temp_file_path));
603 ASSERT_EQ(static_cast<int>(kTestDataSize), 607 ASSERT_EQ(static_cast<int>(kTestDataSize),
604 base::WriteFile(temp_file_path, kTestData, kTestDataSize)); 608 base::WriteFile(temp_file_path, kTestData, kTestDataSize));
605 TestCompletionCallback test_callback; 609 TestCompletionCallback test_callback;
606 610
607 // Prepare data. 611 // Prepare data.
608 element_readers_.push_back(new UploadBytesElementReader(
609 kTestData, kTestDataSize));
610 element_readers_.push_back( 612 element_readers_.push_back(
611 new UploadFileElementReader(base::ThreadTaskRunnerHandle::Get().get(), 613 make_scoped_ptr(new UploadBytesElementReader(kTestData, kTestDataSize)));
612 temp_file_path, 0, kuint64max, base::Time())); 614 element_readers_.push_back(make_scoped_ptr(new UploadFileElementReader(
615 base::ThreadTaskRunnerHandle::Get().get(), temp_file_path, 0, kuint64max,
616 base::Time())));
613 scoped_ptr<UploadDataStream> stream( 617 scoped_ptr<UploadDataStream> stream(
614 new ElementsUploadDataStream(element_readers_.Pass(), 0)); 618 new ElementsUploadDataStream(std::move(element_readers_), 0));
615 619
616 std::string expected_data(kTestData, kTestData + kTestDataSize); 620 std::string expected_data(kTestData, kTestData + kTestDataSize);
617 expected_data += expected_data; 621 expected_data += expected_data;
618 622
619 // Call Init(). 623 // Call Init().
620 ASSERT_EQ(ERR_IO_PENDING, stream->Init(test_callback.callback())); 624 ASSERT_EQ(ERR_IO_PENDING, stream->Init(test_callback.callback()));
621 EXPECT_EQ(OK, test_callback.WaitForResult()); 625 EXPECT_EQ(OK, test_callback.WaitForResult());
622 EXPECT_FALSE(stream->IsEOF()); 626 EXPECT_FALSE(stream->IsEOF());
623 EXPECT_EQ(kTestDataSize*2, stream->size()); 627 EXPECT_EQ(kTestDataSize*2, stream->size());
624 628
(...skipping 13 matching lines...) Expand all
638 } 642 }
639 643
640 TEST_F(ElementsUploadDataStreamTest, InitToReset) { 644 TEST_F(ElementsUploadDataStreamTest, InitToReset) {
641 base::FilePath temp_file_path; 645 base::FilePath temp_file_path;
642 ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_dir_.path(), 646 ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_dir_.path(),
643 &temp_file_path)); 647 &temp_file_path));
644 ASSERT_EQ(static_cast<int>(kTestDataSize), 648 ASSERT_EQ(static_cast<int>(kTestDataSize),
645 base::WriteFile(temp_file_path, kTestData, kTestDataSize)); 649 base::WriteFile(temp_file_path, kTestData, kTestDataSize));
646 650
647 // Prepare data. 651 // Prepare data.
648 element_readers_.push_back(new UploadBytesElementReader(
649 kTestData, kTestDataSize));
650 element_readers_.push_back( 652 element_readers_.push_back(
651 new UploadFileElementReader(base::ThreadTaskRunnerHandle::Get().get(), 653 make_scoped_ptr(new UploadBytesElementReader(kTestData, kTestDataSize)));
652 temp_file_path, 0, kuint64max, base::Time())); 654 element_readers_.push_back(make_scoped_ptr(new UploadFileElementReader(
655 base::ThreadTaskRunnerHandle::Get().get(), temp_file_path, 0, kuint64max,
656 base::Time())));
653 scoped_ptr<UploadDataStream> stream( 657 scoped_ptr<UploadDataStream> stream(
654 new ElementsUploadDataStream(element_readers_.Pass(), 0)); 658 new ElementsUploadDataStream(std::move(element_readers_), 0));
655 659
656 std::vector<char> expected_data(kTestData, kTestData + kTestDataSize); 660 std::vector<char> expected_data(kTestData, kTestData + kTestDataSize);
657 expected_data.insert(expected_data.end(), kTestData, 661 expected_data.insert(expected_data.end(), kTestData,
658 kTestData + kTestDataSize); 662 kTestData + kTestDataSize);
659 663
660 // Call Init(). 664 // Call Init().
661 TestCompletionCallback init_callback1; 665 TestCompletionCallback init_callback1;
662 ASSERT_EQ(ERR_IO_PENDING, stream->Init(init_callback1.callback())); 666 ASSERT_EQ(ERR_IO_PENDING, stream->Init(init_callback1.callback()));
663 EXPECT_EQ(OK, init_callback1.WaitForResult()); 667 EXPECT_EQ(OK, init_callback1.WaitForResult());
664 EXPECT_FALSE(stream->IsEOF()); 668 EXPECT_FALSE(stream->IsEOF());
(...skipping 29 matching lines...) Expand all
694 } 698 }
695 699
696 TEST_F(ElementsUploadDataStreamTest, InitDuringAsyncInit) { 700 TEST_F(ElementsUploadDataStreamTest, InitDuringAsyncInit) {
697 base::FilePath temp_file_path; 701 base::FilePath temp_file_path;
698 ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_dir_.path(), 702 ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_dir_.path(),
699 &temp_file_path)); 703 &temp_file_path));
700 ASSERT_EQ(static_cast<int>(kTestDataSize), 704 ASSERT_EQ(static_cast<int>(kTestDataSize),
701 base::WriteFile(temp_file_path, kTestData, kTestDataSize)); 705 base::WriteFile(temp_file_path, kTestData, kTestDataSize));
702 706
703 // Prepare data. 707 // Prepare data.
704 element_readers_.push_back(new UploadBytesElementReader(
705 kTestData, kTestDataSize));
706 element_readers_.push_back( 708 element_readers_.push_back(
707 new UploadFileElementReader(base::ThreadTaskRunnerHandle::Get().get(), 709 make_scoped_ptr(new UploadBytesElementReader(kTestData, kTestDataSize)));
708 temp_file_path, 0, kuint64max, base::Time())); 710 element_readers_.push_back(make_scoped_ptr(new UploadFileElementReader(
711 base::ThreadTaskRunnerHandle::Get().get(), temp_file_path, 0, kuint64max,
712 base::Time())));
709 scoped_ptr<UploadDataStream> stream( 713 scoped_ptr<UploadDataStream> stream(
710 new ElementsUploadDataStream(element_readers_.Pass(), 0)); 714 new ElementsUploadDataStream(std::move(element_readers_), 0));
711 715
712 std::vector<char> expected_data(kTestData, kTestData + kTestDataSize); 716 std::vector<char> expected_data(kTestData, kTestData + kTestDataSize);
713 expected_data.insert(expected_data.end(), kTestData, 717 expected_data.insert(expected_data.end(), kTestData,
714 kTestData + kTestDataSize); 718 kTestData + kTestDataSize);
715 719
716 // Start Init. 720 // Start Init.
717 TestCompletionCallback init_callback1; 721 TestCompletionCallback init_callback1;
718 EXPECT_EQ(ERR_IO_PENDING, stream->Init(init_callback1.callback())); 722 EXPECT_EQ(ERR_IO_PENDING, stream->Init(init_callback1.callback()));
719 723
720 // Call Init again to cancel the previous init. 724 // Call Init again to cancel the previous init.
(...skipping 19 matching lines...) Expand all
740 } 744 }
741 745
742 TEST_F(ElementsUploadDataStreamTest, InitDuringAsyncRead) { 746 TEST_F(ElementsUploadDataStreamTest, InitDuringAsyncRead) {
743 base::FilePath temp_file_path; 747 base::FilePath temp_file_path;
744 ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_dir_.path(), 748 ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_dir_.path(),
745 &temp_file_path)); 749 &temp_file_path));
746 ASSERT_EQ(static_cast<int>(kTestDataSize), 750 ASSERT_EQ(static_cast<int>(kTestDataSize),
747 base::WriteFile(temp_file_path, kTestData, kTestDataSize)); 751 base::WriteFile(temp_file_path, kTestData, kTestDataSize));
748 752
749 // Prepare data. 753 // Prepare data.
750 element_readers_.push_back(new UploadBytesElementReader(
751 kTestData, kTestDataSize));
752 element_readers_.push_back( 754 element_readers_.push_back(
753 new UploadFileElementReader(base::ThreadTaskRunnerHandle::Get().get(), 755 make_scoped_ptr(new UploadBytesElementReader(kTestData, kTestDataSize)));
754 temp_file_path, 0, kuint64max, base::Time())); 756 element_readers_.push_back(make_scoped_ptr(new UploadFileElementReader(
757 base::ThreadTaskRunnerHandle::Get().get(), temp_file_path, 0, kuint64max,
758 base::Time())));
755 scoped_ptr<UploadDataStream> stream( 759 scoped_ptr<UploadDataStream> stream(
756 new ElementsUploadDataStream(element_readers_.Pass(), 0)); 760 new ElementsUploadDataStream(std::move(element_readers_), 0));
757 761
758 std::vector<char> expected_data(kTestData, kTestData + kTestDataSize); 762 std::vector<char> expected_data(kTestData, kTestData + kTestDataSize);
759 expected_data.insert(expected_data.end(), kTestData, 763 expected_data.insert(expected_data.end(), kTestData,
760 kTestData + kTestDataSize); 764 kTestData + kTestDataSize);
761 765
762 // Call Init(). 766 // Call Init().
763 TestCompletionCallback init_callback1; 767 TestCompletionCallback init_callback1;
764 ASSERT_EQ(ERR_IO_PENDING, stream->Init(init_callback1.callback())); 768 ASSERT_EQ(ERR_IO_PENDING, stream->Init(init_callback1.callback()));
765 EXPECT_EQ(OK, init_callback1.WaitForResult()); 769 EXPECT_EQ(OK, init_callback1.WaitForResult());
766 EXPECT_FALSE(stream->IsEOF()); 770 EXPECT_FALSE(stream->IsEOF());
(...skipping 24 matching lines...) Expand all
791 wrapped_buffer2.get(), buf2.size(), read_callback2.callback())); 795 wrapped_buffer2.get(), buf2.size(), read_callback2.callback()));
792 EXPECT_EQ(static_cast<int>(buf2.size()), read_callback2.WaitForResult()); 796 EXPECT_EQ(static_cast<int>(buf2.size()), read_callback2.WaitForResult());
793 EXPECT_EQ(expected_data, buf2); 797 EXPECT_EQ(expected_data, buf2);
794 EXPECT_TRUE(stream->IsEOF()); 798 EXPECT_TRUE(stream->IsEOF());
795 799
796 // Make sure callbacks are not called for cancelled operations. 800 // Make sure callbacks are not called for cancelled operations.
797 EXPECT_FALSE(read_callback1.have_result()); 801 EXPECT_FALSE(read_callback1.have_result());
798 } 802 }
799 803
800 } // namespace net 804 } // namespace net
OLDNEW
« no previous file with comments | « net/base/elements_upload_data_stream.cc ('k') | net/base/upload_data_stream.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698