OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 <stdint.h> | 5 #include <stdint.h> |
6 | |
7 #include <limits> | 6 #include <limits> |
8 #include <string> | 7 #include <string> |
| 8 #include <utility> |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
11 #include "base/bind.h" | 11 #include "base/bind.h" |
12 #include "base/bind_helpers.h" | 12 #include "base/bind_helpers.h" |
13 #include "base/files/scoped_temp_dir.h" | 13 #include "base/files/scoped_temp_dir.h" |
14 #include "base/location.h" | 14 #include "base/location.h" |
15 #include "base/macros.h" | 15 #include "base/macros.h" |
16 #include "base/memory/weak_ptr.h" | 16 #include "base/memory/weak_ptr.h" |
17 #include "base/run_loop.h" | 17 #include "base/run_loop.h" |
18 #include "base/single_thread_task_runner.h" | 18 #include "base/single_thread_task_runner.h" |
(...skipping 258 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
277 } | 277 } |
278 | 278 |
279 TEST_F(FileWriterDelegateTest, WriteSuccessWithoutQuotaLimit) { | 279 TEST_F(FileWriterDelegateTest, WriteSuccessWithoutQuotaLimit) { |
280 const GURL kBlobURL("blob:nolimit"); | 280 const GURL kBlobURL("blob:nolimit"); |
281 content_ = kData; | 281 content_ = kData; |
282 | 282 |
283 PrepareForWrite("test", kBlobURL, 0, std::numeric_limits<int64_t>::max()); | 283 PrepareForWrite("test", kBlobURL, 0, std::numeric_limits<int64_t>::max()); |
284 | 284 |
285 Result result; | 285 Result result; |
286 ASSERT_EQ(0, usage()); | 286 ASSERT_EQ(0, usage()); |
287 file_writer_delegate_->Start(request_.Pass(), GetWriteCallback(&result)); | 287 file_writer_delegate_->Start(std::move(request_), GetWriteCallback(&result)); |
288 base::MessageLoop::current()->Run(); | 288 base::MessageLoop::current()->Run(); |
289 | 289 |
290 ASSERT_EQ(FileWriterDelegate::SUCCESS_COMPLETED, result.write_status()); | 290 ASSERT_EQ(FileWriterDelegate::SUCCESS_COMPLETED, result.write_status()); |
291 file_writer_delegate_.reset(); | 291 file_writer_delegate_.reset(); |
292 | 292 |
293 ASSERT_EQ(kDataSize, usage()); | 293 ASSERT_EQ(kDataSize, usage()); |
294 EXPECT_EQ(GetFileSizeOnDisk("test"), usage()); | 294 EXPECT_EQ(GetFileSizeOnDisk("test"), usage()); |
295 EXPECT_EQ(kDataSize, result.bytes_written()); | 295 EXPECT_EQ(kDataSize, result.bytes_written()); |
296 EXPECT_EQ(base::File::FILE_OK, result.status()); | 296 EXPECT_EQ(base::File::FILE_OK, result.status()); |
297 } | 297 } |
298 | 298 |
299 TEST_F(FileWriterDelegateTest, WriteSuccessWithJustQuota) { | 299 TEST_F(FileWriterDelegateTest, WriteSuccessWithJustQuota) { |
300 const GURL kBlobURL("blob:just"); | 300 const GURL kBlobURL("blob:just"); |
301 content_ = kData; | 301 content_ = kData; |
302 const int64_t kAllowedGrowth = kDataSize; | 302 const int64_t kAllowedGrowth = kDataSize; |
303 PrepareForWrite("test", kBlobURL, 0, kAllowedGrowth); | 303 PrepareForWrite("test", kBlobURL, 0, kAllowedGrowth); |
304 | 304 |
305 Result result; | 305 Result result; |
306 ASSERT_EQ(0, usage()); | 306 ASSERT_EQ(0, usage()); |
307 file_writer_delegate_->Start(request_.Pass(), GetWriteCallback(&result)); | 307 file_writer_delegate_->Start(std::move(request_), GetWriteCallback(&result)); |
308 base::MessageLoop::current()->Run(); | 308 base::MessageLoop::current()->Run(); |
309 ASSERT_EQ(FileWriterDelegate::SUCCESS_COMPLETED, result.write_status()); | 309 ASSERT_EQ(FileWriterDelegate::SUCCESS_COMPLETED, result.write_status()); |
310 file_writer_delegate_.reset(); | 310 file_writer_delegate_.reset(); |
311 | 311 |
312 ASSERT_EQ(kAllowedGrowth, usage()); | 312 ASSERT_EQ(kAllowedGrowth, usage()); |
313 EXPECT_EQ(GetFileSizeOnDisk("test"), usage()); | 313 EXPECT_EQ(GetFileSizeOnDisk("test"), usage()); |
314 | 314 |
315 EXPECT_EQ(kAllowedGrowth, result.bytes_written()); | 315 EXPECT_EQ(kAllowedGrowth, result.bytes_written()); |
316 EXPECT_EQ(base::File::FILE_OK, result.status()); | 316 EXPECT_EQ(base::File::FILE_OK, result.status()); |
317 } | 317 } |
318 | 318 |
319 TEST_F(FileWriterDelegateTest, DISABLED_WriteFailureByQuota) { | 319 TEST_F(FileWriterDelegateTest, DISABLED_WriteFailureByQuota) { |
320 const GURL kBlobURL("blob:failure"); | 320 const GURL kBlobURL("blob:failure"); |
321 content_ = kData; | 321 content_ = kData; |
322 const int64_t kAllowedGrowth = kDataSize - 1; | 322 const int64_t kAllowedGrowth = kDataSize - 1; |
323 PrepareForWrite("test", kBlobURL, 0, kAllowedGrowth); | 323 PrepareForWrite("test", kBlobURL, 0, kAllowedGrowth); |
324 | 324 |
325 Result result; | 325 Result result; |
326 ASSERT_EQ(0, usage()); | 326 ASSERT_EQ(0, usage()); |
327 file_writer_delegate_->Start(request_.Pass(), GetWriteCallback(&result)); | 327 file_writer_delegate_->Start(std::move(request_), GetWriteCallback(&result)); |
328 base::MessageLoop::current()->Run(); | 328 base::MessageLoop::current()->Run(); |
329 ASSERT_EQ(FileWriterDelegate::ERROR_WRITE_STARTED, result.write_status()); | 329 ASSERT_EQ(FileWriterDelegate::ERROR_WRITE_STARTED, result.write_status()); |
330 file_writer_delegate_.reset(); | 330 file_writer_delegate_.reset(); |
331 | 331 |
332 ASSERT_EQ(kAllowedGrowth, usage()); | 332 ASSERT_EQ(kAllowedGrowth, usage()); |
333 EXPECT_EQ(GetFileSizeOnDisk("test"), usage()); | 333 EXPECT_EQ(GetFileSizeOnDisk("test"), usage()); |
334 | 334 |
335 EXPECT_EQ(kAllowedGrowth, result.bytes_written()); | 335 EXPECT_EQ(kAllowedGrowth, result.bytes_written()); |
336 EXPECT_EQ(base::File::FILE_ERROR_NO_SPACE, result.status()); | 336 EXPECT_EQ(base::File::FILE_ERROR_NO_SPACE, result.status()); |
337 ASSERT_EQ(FileWriterDelegate::ERROR_WRITE_STARTED, result.write_status()); | 337 ASSERT_EQ(FileWriterDelegate::ERROR_WRITE_STARTED, result.write_status()); |
338 } | 338 } |
339 | 339 |
340 TEST_F(FileWriterDelegateTest, WriteZeroBytesSuccessfullyWithZeroQuota) { | 340 TEST_F(FileWriterDelegateTest, WriteZeroBytesSuccessfullyWithZeroQuota) { |
341 const GURL kBlobURL("blob:zero"); | 341 const GURL kBlobURL("blob:zero"); |
342 content_ = ""; | 342 content_ = ""; |
343 int64_t kAllowedGrowth = 0; | 343 int64_t kAllowedGrowth = 0; |
344 PrepareForWrite("test", kBlobURL, 0, kAllowedGrowth); | 344 PrepareForWrite("test", kBlobURL, 0, kAllowedGrowth); |
345 | 345 |
346 Result result; | 346 Result result; |
347 ASSERT_EQ(0, usage()); | 347 ASSERT_EQ(0, usage()); |
348 file_writer_delegate_->Start(request_.Pass(), GetWriteCallback(&result)); | 348 file_writer_delegate_->Start(std::move(request_), GetWriteCallback(&result)); |
349 base::MessageLoop::current()->Run(); | 349 base::MessageLoop::current()->Run(); |
350 ASSERT_EQ(FileWriterDelegate::SUCCESS_COMPLETED, result.write_status()); | 350 ASSERT_EQ(FileWriterDelegate::SUCCESS_COMPLETED, result.write_status()); |
351 file_writer_delegate_.reset(); | 351 file_writer_delegate_.reset(); |
352 | 352 |
353 ASSERT_EQ(kAllowedGrowth, usage()); | 353 ASSERT_EQ(kAllowedGrowth, usage()); |
354 EXPECT_EQ(GetFileSizeOnDisk("test"), usage()); | 354 EXPECT_EQ(GetFileSizeOnDisk("test"), usage()); |
355 | 355 |
356 EXPECT_EQ(kAllowedGrowth, result.bytes_written()); | 356 EXPECT_EQ(kAllowedGrowth, result.bytes_written()); |
357 EXPECT_EQ(base::File::FILE_OK, result.status()); | 357 EXPECT_EQ(base::File::FILE_OK, result.status()); |
358 ASSERT_EQ(FileWriterDelegate::SUCCESS_COMPLETED, result.write_status()); | 358 ASSERT_EQ(FileWriterDelegate::SUCCESS_COMPLETED, result.write_status()); |
(...skipping 14 matching lines...) Expand all Loading... |
373 PrepareForWrite("test", kBlobURL, 0, std::numeric_limits<int64_t>::max()); | 373 PrepareForWrite("test", kBlobURL, 0, std::numeric_limits<int64_t>::max()); |
374 | 374 |
375 // Credate another FileWriterDelegate for concurrent write. | 375 // Credate another FileWriterDelegate for concurrent write. |
376 file_writer_delegate2.reset( | 376 file_writer_delegate2.reset( |
377 CreateWriterDelegate("test2", 0, std::numeric_limits<int64_t>::max())); | 377 CreateWriterDelegate("test2", 0, std::numeric_limits<int64_t>::max())); |
378 request2 = empty_context_.CreateRequest( | 378 request2 = empty_context_.CreateRequest( |
379 kBlobURL2, net::DEFAULT_PRIORITY, file_writer_delegate2.get()); | 379 kBlobURL2, net::DEFAULT_PRIORITY, file_writer_delegate2.get()); |
380 | 380 |
381 Result result, result2; | 381 Result result, result2; |
382 ASSERT_EQ(0, usage()); | 382 ASSERT_EQ(0, usage()); |
383 file_writer_delegate_->Start(request_.Pass(), GetWriteCallback(&result)); | 383 file_writer_delegate_->Start(std::move(request_), GetWriteCallback(&result)); |
384 file_writer_delegate2->Start(request2.Pass(), GetWriteCallback(&result2)); | 384 file_writer_delegate2->Start(std::move(request2), GetWriteCallback(&result2)); |
385 base::MessageLoop::current()->Run(); | 385 base::MessageLoop::current()->Run(); |
386 if (result.write_status() == FileWriterDelegate::SUCCESS_IO_PENDING || | 386 if (result.write_status() == FileWriterDelegate::SUCCESS_IO_PENDING || |
387 result2.write_status() == FileWriterDelegate::SUCCESS_IO_PENDING) | 387 result2.write_status() == FileWriterDelegate::SUCCESS_IO_PENDING) |
388 base::MessageLoop::current()->Run(); | 388 base::MessageLoop::current()->Run(); |
389 | 389 |
390 ASSERT_EQ(FileWriterDelegate::SUCCESS_COMPLETED, result.write_status()); | 390 ASSERT_EQ(FileWriterDelegate::SUCCESS_COMPLETED, result.write_status()); |
391 ASSERT_EQ(FileWriterDelegate::SUCCESS_COMPLETED, result2.write_status()); | 391 ASSERT_EQ(FileWriterDelegate::SUCCESS_COMPLETED, result2.write_status()); |
392 file_writer_delegate_.reset(); | 392 file_writer_delegate_.reset(); |
393 file_writer_delegate2.reset(); | 393 file_writer_delegate2.reset(); |
394 | 394 |
(...skipping 12 matching lines...) Expand all Loading... |
407 | 407 |
408 // Writing kDataSize (=45) bytes data while allowed_growth is 100. | 408 // Writing kDataSize (=45) bytes data while allowed_growth is 100. |
409 int64_t offset = 0; | 409 int64_t offset = 0; |
410 int64_t allowed_growth = 100; | 410 int64_t allowed_growth = 100; |
411 ASSERT_LT(kDataSize, allowed_growth); | 411 ASSERT_LT(kDataSize, allowed_growth); |
412 PrepareForWrite("test", kBlobURL, offset, allowed_growth); | 412 PrepareForWrite("test", kBlobURL, offset, allowed_growth); |
413 | 413 |
414 { | 414 { |
415 Result result; | 415 Result result; |
416 ASSERT_EQ(0, usage()); | 416 ASSERT_EQ(0, usage()); |
417 file_writer_delegate_->Start(request_.Pass(), GetWriteCallback(&result)); | 417 file_writer_delegate_->Start(std::move(request_), |
| 418 GetWriteCallback(&result)); |
418 base::MessageLoop::current()->Run(); | 419 base::MessageLoop::current()->Run(); |
419 ASSERT_EQ(FileWriterDelegate::SUCCESS_COMPLETED, result.write_status()); | 420 ASSERT_EQ(FileWriterDelegate::SUCCESS_COMPLETED, result.write_status()); |
420 file_writer_delegate_.reset(); | 421 file_writer_delegate_.reset(); |
421 | 422 |
422 ASSERT_EQ(kDataSize, usage()); | 423 ASSERT_EQ(kDataSize, usage()); |
423 EXPECT_EQ(GetFileSizeOnDisk("test"), usage()); | 424 EXPECT_EQ(GetFileSizeOnDisk("test"), usage()); |
424 EXPECT_EQ(kDataSize, result.bytes_written()); | 425 EXPECT_EQ(kDataSize, result.bytes_written()); |
425 EXPECT_EQ(base::File::FILE_OK, result.status()); | 426 EXPECT_EQ(base::File::FILE_OK, result.status()); |
426 } | 427 } |
427 | 428 |
428 // Trying to overwrite kDataSize bytes data while allowed_growth is 20. | 429 // Trying to overwrite kDataSize bytes data while allowed_growth is 20. |
429 offset = 0; | 430 offset = 0; |
430 allowed_growth = 20; | 431 allowed_growth = 20; |
431 PrepareForWrite("test", kBlobURL, offset, allowed_growth); | 432 PrepareForWrite("test", kBlobURL, offset, allowed_growth); |
432 | 433 |
433 { | 434 { |
434 Result result; | 435 Result result; |
435 file_writer_delegate_->Start(request_.Pass(), GetWriteCallback(&result)); | 436 file_writer_delegate_->Start(std::move(request_), |
| 437 GetWriteCallback(&result)); |
436 base::MessageLoop::current()->Run(); | 438 base::MessageLoop::current()->Run(); |
437 EXPECT_EQ(kDataSize, usage()); | 439 EXPECT_EQ(kDataSize, usage()); |
438 EXPECT_EQ(GetFileSizeOnDisk("test"), usage()); | 440 EXPECT_EQ(GetFileSizeOnDisk("test"), usage()); |
439 EXPECT_EQ(kDataSize, result.bytes_written()); | 441 EXPECT_EQ(kDataSize, result.bytes_written()); |
440 EXPECT_EQ(base::File::FILE_OK, result.status()); | 442 EXPECT_EQ(base::File::FILE_OK, result.status()); |
441 ASSERT_EQ(FileWriterDelegate::SUCCESS_COMPLETED, result.write_status()); | 443 ASSERT_EQ(FileWriterDelegate::SUCCESS_COMPLETED, result.write_status()); |
442 } | 444 } |
443 | 445 |
444 // Trying to write kDataSize bytes data from offset 25 while | 446 // Trying to write kDataSize bytes data from offset 25 while |
445 // allowed_growth is 55. | 447 // allowed_growth is 55. |
446 offset = 25; | 448 offset = 25; |
447 allowed_growth = 55; | 449 allowed_growth = 55; |
448 PrepareForWrite("test", kBlobURL, offset, allowed_growth); | 450 PrepareForWrite("test", kBlobURL, offset, allowed_growth); |
449 | 451 |
450 { | 452 { |
451 Result result; | 453 Result result; |
452 file_writer_delegate_->Start(request_.Pass(), GetWriteCallback(&result)); | 454 file_writer_delegate_->Start(std::move(request_), |
| 455 GetWriteCallback(&result)); |
453 base::MessageLoop::current()->Run(); | 456 base::MessageLoop::current()->Run(); |
454 ASSERT_EQ(FileWriterDelegate::SUCCESS_COMPLETED, result.write_status()); | 457 ASSERT_EQ(FileWriterDelegate::SUCCESS_COMPLETED, result.write_status()); |
455 file_writer_delegate_.reset(); | 458 file_writer_delegate_.reset(); |
456 | 459 |
457 EXPECT_EQ(offset + kDataSize, usage()); | 460 EXPECT_EQ(offset + kDataSize, usage()); |
458 EXPECT_EQ(GetFileSizeOnDisk("test"), usage()); | 461 EXPECT_EQ(GetFileSizeOnDisk("test"), usage()); |
459 EXPECT_EQ(kDataSize, result.bytes_written()); | 462 EXPECT_EQ(kDataSize, result.bytes_written()); |
460 EXPECT_EQ(base::File::FILE_OK, result.status()); | 463 EXPECT_EQ(base::File::FILE_OK, result.status()); |
461 } | 464 } |
462 | 465 |
463 // Trying to overwrite 45 bytes data while allowed_growth is -20. | 466 // Trying to overwrite 45 bytes data while allowed_growth is -20. |
464 offset = 0; | 467 offset = 0; |
465 allowed_growth = -20; | 468 allowed_growth = -20; |
466 PrepareForWrite("test", kBlobURL, offset, allowed_growth); | 469 PrepareForWrite("test", kBlobURL, offset, allowed_growth); |
467 int64_t pre_write_usage = GetFileSizeOnDisk("test"); | 470 int64_t pre_write_usage = GetFileSizeOnDisk("test"); |
468 | 471 |
469 { | 472 { |
470 Result result; | 473 Result result; |
471 file_writer_delegate_->Start(request_.Pass(), GetWriteCallback(&result)); | 474 file_writer_delegate_->Start(std::move(request_), |
| 475 GetWriteCallback(&result)); |
472 base::MessageLoop::current()->Run(); | 476 base::MessageLoop::current()->Run(); |
473 ASSERT_EQ(FileWriterDelegate::SUCCESS_COMPLETED, result.write_status()); | 477 ASSERT_EQ(FileWriterDelegate::SUCCESS_COMPLETED, result.write_status()); |
474 file_writer_delegate_.reset(); | 478 file_writer_delegate_.reset(); |
475 | 479 |
476 EXPECT_EQ(pre_write_usage, usage()); | 480 EXPECT_EQ(pre_write_usage, usage()); |
477 EXPECT_EQ(GetFileSizeOnDisk("test"), usage()); | 481 EXPECT_EQ(GetFileSizeOnDisk("test"), usage()); |
478 EXPECT_EQ(kDataSize, result.bytes_written()); | 482 EXPECT_EQ(kDataSize, result.bytes_written()); |
479 EXPECT_EQ(base::File::FILE_OK, result.status()); | 483 EXPECT_EQ(base::File::FILE_OK, result.status()); |
480 } | 484 } |
481 | 485 |
482 // Trying to overwrite 45 bytes data with offset pre_write_usage - 20, | 486 // Trying to overwrite 45 bytes data with offset pre_write_usage - 20, |
483 // while allowed_growth is 10. | 487 // while allowed_growth is 10. |
484 const int kOverlap = 20; | 488 const int kOverlap = 20; |
485 offset = pre_write_usage - kOverlap; | 489 offset = pre_write_usage - kOverlap; |
486 allowed_growth = 10; | 490 allowed_growth = 10; |
487 PrepareForWrite("test", kBlobURL, offset, allowed_growth); | 491 PrepareForWrite("test", kBlobURL, offset, allowed_growth); |
488 | 492 |
489 { | 493 { |
490 Result result; | 494 Result result; |
491 file_writer_delegate_->Start(request_.Pass(), GetWriteCallback(&result)); | 495 file_writer_delegate_->Start(std::move(request_), |
| 496 GetWriteCallback(&result)); |
492 base::MessageLoop::current()->Run(); | 497 base::MessageLoop::current()->Run(); |
493 ASSERT_EQ(FileWriterDelegate::ERROR_WRITE_STARTED, result.write_status()); | 498 ASSERT_EQ(FileWriterDelegate::ERROR_WRITE_STARTED, result.write_status()); |
494 file_writer_delegate_.reset(); | 499 file_writer_delegate_.reset(); |
495 | 500 |
496 EXPECT_EQ(pre_write_usage + allowed_growth, usage()); | 501 EXPECT_EQ(pre_write_usage + allowed_growth, usage()); |
497 EXPECT_EQ(GetFileSizeOnDisk("test"), usage()); | 502 EXPECT_EQ(GetFileSizeOnDisk("test"), usage()); |
498 EXPECT_EQ(kOverlap + allowed_growth, result.bytes_written()); | 503 EXPECT_EQ(kOverlap + allowed_growth, result.bytes_written()); |
499 EXPECT_EQ(base::File::FILE_ERROR_NO_SPACE, result.status()); | 504 EXPECT_EQ(base::File::FILE_ERROR_NO_SPACE, result.status()); |
500 } | 505 } |
501 } | 506 } |
502 | 507 |
503 } // namespace content | 508 } // namespace content |
OLD | NEW |