| OLD | NEW |
| 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/file_stream.h" | 5 #include "net/base/file_stream.h" |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/callback.h" | 8 #include "base/callback.h" |
| 9 #include "base/file_util.h" | 9 #include "base/file_util.h" |
| 10 #include "base/message_loop.h" | 10 #include "base/message_loop.h" |
| (...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 148 | 148 |
| 149 // 1. Test reading with a file handle. | 149 // 1. Test reading with a file handle. |
| 150 ASSERT_EQ(kTestDataSize, | 150 ASSERT_EQ(kTestDataSize, |
| 151 file_util::WriteFile(temp_file_path(), kTestData, kTestDataSize)); | 151 file_util::WriteFile(temp_file_path(), kTestData, kTestDataSize)); |
| 152 int flags = base::PLATFORM_FILE_OPEN_ALWAYS | base::PLATFORM_FILE_READ; | 152 int flags = base::PLATFORM_FILE_OPEN_ALWAYS | base::PLATFORM_FILE_READ; |
| 153 base::PlatformFile file = base::CreatePlatformFile( | 153 base::PlatformFile file = base::CreatePlatformFile( |
| 154 temp_file_path(), flags, &created, NULL); | 154 temp_file_path(), flags, &created, NULL); |
| 155 | 155 |
| 156 // Seek to the beginning of the file and read. | 156 // Seek to the beginning of the file and read. |
| 157 FileStream read_stream(file, flags, NULL); | 157 FileStream read_stream(file, flags, NULL); |
| 158 ASSERT_EQ(0, read_stream.Seek(FROM_BEGIN, 0)); | 158 ASSERT_EQ(0, read_stream.SeekSync(FROM_BEGIN, 0)); |
| 159 ASSERT_EQ(kTestDataSize, read_stream.Available()); | 159 ASSERT_EQ(kTestDataSize, read_stream.Available()); |
| 160 // Read into buffer and compare. | 160 // Read into buffer and compare. |
| 161 char buffer[kTestDataSize]; | 161 char buffer[kTestDataSize]; |
| 162 ASSERT_EQ(kTestDataSize, | 162 ASSERT_EQ(kTestDataSize, |
| 163 read_stream.ReadSync(buffer, kTestDataSize)); | 163 read_stream.ReadSync(buffer, kTestDataSize)); |
| 164 ASSERT_EQ(0, memcmp(kTestData, buffer, kTestDataSize)); | 164 ASSERT_EQ(0, memcmp(kTestData, buffer, kTestDataSize)); |
| 165 read_stream.CloseSync(); | 165 read_stream.CloseSync(); |
| 166 | 166 |
| 167 // 2. Test writing with a file handle. | 167 // 2. Test writing with a file handle. |
| 168 file_util::Delete(temp_file_path(), false); | 168 file_util::Delete(temp_file_path(), false); |
| 169 flags = base::PLATFORM_FILE_OPEN_ALWAYS | base::PLATFORM_FILE_WRITE; | 169 flags = base::PLATFORM_FILE_OPEN_ALWAYS | base::PLATFORM_FILE_WRITE; |
| 170 file = base::CreatePlatformFile(temp_file_path(), flags, &created, NULL); | 170 file = base::CreatePlatformFile(temp_file_path(), flags, &created, NULL); |
| 171 | 171 |
| 172 FileStream write_stream(file, flags, NULL); | 172 FileStream write_stream(file, flags, NULL); |
| 173 ASSERT_EQ(0, write_stream.Seek(FROM_BEGIN, 0)); | 173 ASSERT_EQ(0, write_stream.SeekSync(FROM_BEGIN, 0)); |
| 174 ASSERT_EQ(kTestDataSize, | 174 ASSERT_EQ(kTestDataSize, |
| 175 write_stream.WriteSync(kTestData, kTestDataSize)); | 175 write_stream.WriteSync(kTestData, kTestDataSize)); |
| 176 write_stream.CloseSync(); | 176 write_stream.CloseSync(); |
| 177 | 177 |
| 178 // Read into buffer and compare to make sure the handle worked fine. | 178 // Read into buffer and compare to make sure the handle worked fine. |
| 179 ASSERT_EQ(kTestDataSize, | 179 ASSERT_EQ(kTestDataSize, |
| 180 file_util::ReadFile(temp_file_path(), buffer, kTestDataSize)); | 180 file_util::ReadFile(temp_file_path(), buffer, kTestDataSize)); |
| 181 ASSERT_EQ(0, memcmp(kTestData, buffer, kTestDataSize)); | 181 ASSERT_EQ(0, memcmp(kTestData, buffer, kTestDataSize)); |
| 182 } | 182 } |
| 183 | 183 |
| 184 TEST_F(FileStreamTest, UseClosedStream) { | 184 TEST_F(FileStreamTest, UseClosedStream) { |
| 185 FileStream stream(NULL); | 185 FileStream stream(NULL); |
| 186 | 186 |
| 187 EXPECT_FALSE(stream.IsOpen()); | 187 EXPECT_FALSE(stream.IsOpen()); |
| 188 | 188 |
| 189 // Try seeking... | 189 // Try seeking... |
| 190 int64 new_offset = stream.Seek(FROM_BEGIN, 5); | 190 int64 new_offset = stream.SeekSync(FROM_BEGIN, 5); |
| 191 EXPECT_EQ(ERR_UNEXPECTED, new_offset); | 191 EXPECT_EQ(ERR_UNEXPECTED, new_offset); |
| 192 | 192 |
| 193 // Try available... | 193 // Try available... |
| 194 int64 avail = stream.Available(); | 194 int64 avail = stream.Available(); |
| 195 EXPECT_EQ(ERR_UNEXPECTED, avail); | 195 EXPECT_EQ(ERR_UNEXPECTED, avail); |
| 196 | 196 |
| 197 // Try reading... | 197 // Try reading... |
| 198 char buf[10]; | 198 char buf[10]; |
| 199 int rv = stream.ReadSync(buf, arraysize(buf)); | 199 int rv = stream.ReadSync(buf, arraysize(buf)); |
| 200 EXPECT_EQ(ERR_UNEXPECTED, rv); | 200 EXPECT_EQ(ERR_UNEXPECTED, rv); |
| (...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 373 bool ok = file_util::GetFileSize(temp_file_path(), &file_size); | 373 bool ok = file_util::GetFileSize(temp_file_path(), &file_size); |
| 374 EXPECT_TRUE(ok); | 374 EXPECT_TRUE(ok); |
| 375 | 375 |
| 376 FileStream stream(NULL); | 376 FileStream stream(NULL); |
| 377 int flags = base::PLATFORM_FILE_OPEN | | 377 int flags = base::PLATFORM_FILE_OPEN | |
| 378 base::PLATFORM_FILE_READ; | 378 base::PLATFORM_FILE_READ; |
| 379 int rv = stream.OpenSync(temp_file_path(), flags); | 379 int rv = stream.OpenSync(temp_file_path(), flags); |
| 380 EXPECT_EQ(OK, rv); | 380 EXPECT_EQ(OK, rv); |
| 381 | 381 |
| 382 const int64 kOffset = 3; | 382 const int64 kOffset = 3; |
| 383 int64 new_offset = stream.Seek(FROM_BEGIN, kOffset); | 383 int64 new_offset = stream.SeekSync(FROM_BEGIN, kOffset); |
| 384 EXPECT_EQ(kOffset, new_offset); | 384 EXPECT_EQ(kOffset, new_offset); |
| 385 | 385 |
| 386 int64 total_bytes_avail = stream.Available(); | 386 int64 total_bytes_avail = stream.Available(); |
| 387 EXPECT_EQ(file_size - kOffset, total_bytes_avail); | 387 EXPECT_EQ(file_size - kOffset, total_bytes_avail); |
| 388 | 388 |
| 389 int64 total_bytes_read = 0; | 389 int64 total_bytes_read = 0; |
| 390 | 390 |
| 391 std::string data_read; | 391 std::string data_read; |
| 392 for (;;) { | 392 for (;;) { |
| 393 char buf[4]; | 393 char buf[4]; |
| (...skipping 14 matching lines...) Expand all Loading... |
| 408 bool ok = file_util::GetFileSize(temp_file_path(), &file_size); | 408 bool ok = file_util::GetFileSize(temp_file_path(), &file_size); |
| 409 EXPECT_TRUE(ok); | 409 EXPECT_TRUE(ok); |
| 410 | 410 |
| 411 FileStream stream(NULL); | 411 FileStream stream(NULL); |
| 412 int flags = base::PLATFORM_FILE_OPEN | | 412 int flags = base::PLATFORM_FILE_OPEN | |
| 413 base::PLATFORM_FILE_READ | | 413 base::PLATFORM_FILE_READ | |
| 414 base::PLATFORM_FILE_ASYNC; | 414 base::PLATFORM_FILE_ASYNC; |
| 415 int rv = stream.OpenSync(temp_file_path(), flags); | 415 int rv = stream.OpenSync(temp_file_path(), flags); |
| 416 EXPECT_EQ(OK, rv); | 416 EXPECT_EQ(OK, rv); |
| 417 | 417 |
| 418 TestInt64CompletionCallback callback64; |
| 418 const int64 kOffset = 3; | 419 const int64 kOffset = 3; |
| 419 int64 new_offset = stream.Seek(FROM_BEGIN, kOffset); | 420 rv = stream.Seek(FROM_BEGIN, kOffset, callback64.callback()); |
| 421 ASSERT_EQ(ERR_IO_PENDING, rv); |
| 422 int64 new_offset = callback64.WaitForResult(); |
| 420 EXPECT_EQ(kOffset, new_offset); | 423 EXPECT_EQ(kOffset, new_offset); |
| 421 | 424 |
| 422 int64 total_bytes_avail = stream.Available(); | 425 int64 total_bytes_avail = stream.Available(); |
| 423 EXPECT_EQ(file_size - kOffset, total_bytes_avail); | 426 EXPECT_EQ(file_size - kOffset, total_bytes_avail); |
| 424 | 427 |
| 425 TestCompletionCallback callback; | 428 TestCompletionCallback callback; |
| 426 | 429 |
| 427 int total_bytes_read = 0; | 430 int total_bytes_read = 0; |
| 428 | 431 |
| 429 std::string data_read; | 432 std::string data_read; |
| (...skipping 13 matching lines...) Expand all Loading... |
| 443 } | 446 } |
| 444 | 447 |
| 445 TEST_F(FileStreamTest, SeekAround) { | 448 TEST_F(FileStreamTest, SeekAround) { |
| 446 FileStream stream(NULL); | 449 FileStream stream(NULL); |
| 447 int flags = base::PLATFORM_FILE_OPEN | | 450 int flags = base::PLATFORM_FILE_OPEN | |
| 448 base::PLATFORM_FILE_READ; | 451 base::PLATFORM_FILE_READ; |
| 449 int rv = stream.OpenSync(temp_file_path(), flags); | 452 int rv = stream.OpenSync(temp_file_path(), flags); |
| 450 EXPECT_EQ(OK, rv); | 453 EXPECT_EQ(OK, rv); |
| 451 | 454 |
| 452 const int64 kOffset = 3; | 455 const int64 kOffset = 3; |
| 453 int64 new_offset = stream.Seek(FROM_BEGIN, kOffset); | 456 int64 new_offset = stream.SeekSync(FROM_BEGIN, kOffset); |
| 454 EXPECT_EQ(kOffset, new_offset); | 457 EXPECT_EQ(kOffset, new_offset); |
| 455 | 458 |
| 456 new_offset = stream.Seek(FROM_CURRENT, kOffset); | 459 new_offset = stream.SeekSync(FROM_CURRENT, kOffset); |
| 457 EXPECT_EQ(2 * kOffset, new_offset); | 460 EXPECT_EQ(2 * kOffset, new_offset); |
| 458 | 461 |
| 459 new_offset = stream.Seek(FROM_CURRENT, -kOffset); | 462 new_offset = stream.SeekSync(FROM_CURRENT, -kOffset); |
| 460 EXPECT_EQ(kOffset, new_offset); | 463 EXPECT_EQ(kOffset, new_offset); |
| 461 | 464 |
| 462 const int kTestDataLen = arraysize(kTestData) - 1; | 465 const int kTestDataLen = arraysize(kTestData) - 1; |
| 463 | 466 |
| 464 new_offset = stream.Seek(FROM_END, -kTestDataLen); | 467 new_offset = stream.SeekSync(FROM_END, -kTestDataLen); |
| 465 EXPECT_EQ(0, new_offset); | 468 EXPECT_EQ(0, new_offset); |
| 466 } | 469 } |
| 467 | 470 |
| 471 TEST_F(FileStreamTest, AsyncSeekAround) { |
| 472 FileStream stream(NULL); |
| 473 int flags = base::PLATFORM_FILE_OPEN | |
| 474 base::PLATFORM_FILE_ASYNC | |
| 475 base::PLATFORM_FILE_READ; |
| 476 int rv = stream.OpenSync(temp_file_path(), flags); |
| 477 EXPECT_EQ(OK, rv); |
| 478 |
| 479 TestInt64CompletionCallback callback; |
| 480 |
| 481 const int64 kOffset = 3; |
| 482 rv = stream.Seek(FROM_BEGIN, kOffset, callback.callback()); |
| 483 ASSERT_EQ(ERR_IO_PENDING, rv); |
| 484 int64 new_offset = callback.WaitForResult(); |
| 485 EXPECT_EQ(kOffset, new_offset); |
| 486 |
| 487 rv = stream.Seek(FROM_CURRENT, kOffset, callback.callback()); |
| 488 ASSERT_EQ(ERR_IO_PENDING, rv); |
| 489 new_offset = callback.WaitForResult(); |
| 490 EXPECT_EQ(2 * kOffset, new_offset); |
| 491 |
| 492 rv = stream.Seek(FROM_CURRENT, -kOffset, callback.callback()); |
| 493 ASSERT_EQ(ERR_IO_PENDING, rv); |
| 494 new_offset = callback.WaitForResult(); |
| 495 EXPECT_EQ(kOffset, new_offset); |
| 496 |
| 497 const int kTestDataLen = arraysize(kTestData) - 1; |
| 498 |
| 499 rv = stream.Seek(FROM_END, -kTestDataLen, callback.callback()); |
| 500 ASSERT_EQ(ERR_IO_PENDING, rv); |
| 501 new_offset = callback.WaitForResult(); |
| 502 EXPECT_EQ(0, new_offset); |
| 503 } |
| 504 |
| 468 TEST_F(FileStreamTest, BasicWrite) { | 505 TEST_F(FileStreamTest, BasicWrite) { |
| 469 FileStream stream(NULL); | 506 FileStream stream(NULL); |
| 470 int flags = base::PLATFORM_FILE_CREATE_ALWAYS | | 507 int flags = base::PLATFORM_FILE_CREATE_ALWAYS | |
| 471 base::PLATFORM_FILE_WRITE; | 508 base::PLATFORM_FILE_WRITE; |
| 472 int rv = stream.OpenSync(temp_file_path(), flags); | 509 int rv = stream.OpenSync(temp_file_path(), flags); |
| 473 EXPECT_EQ(OK, rv); | 510 EXPECT_EQ(OK, rv); |
| 474 | 511 |
| 475 int64 file_size; | 512 int64 file_size; |
| 476 bool ok = file_util::GetFileSize(temp_file_path(), &file_size); | 513 bool ok = file_util::GetFileSize(temp_file_path(), &file_size); |
| 477 EXPECT_TRUE(ok); | 514 EXPECT_TRUE(ok); |
| (...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 557 base::PLATFORM_FILE_WRITE; | 594 base::PLATFORM_FILE_WRITE; |
| 558 int rv = stream.OpenSync(temp_file_path(), flags); | 595 int rv = stream.OpenSync(temp_file_path(), flags); |
| 559 EXPECT_EQ(OK, rv); | 596 EXPECT_EQ(OK, rv); |
| 560 | 597 |
| 561 int64 file_size; | 598 int64 file_size; |
| 562 bool ok = file_util::GetFileSize(temp_file_path(), &file_size); | 599 bool ok = file_util::GetFileSize(temp_file_path(), &file_size); |
| 563 EXPECT_TRUE(ok); | 600 EXPECT_TRUE(ok); |
| 564 EXPECT_EQ(kTestDataSize, file_size); | 601 EXPECT_EQ(kTestDataSize, file_size); |
| 565 | 602 |
| 566 const int64 kOffset = 0; | 603 const int64 kOffset = 0; |
| 567 int64 new_offset = stream.Seek(FROM_END, kOffset); | 604 int64 new_offset = stream.SeekSync(FROM_END, kOffset); |
| 568 EXPECT_EQ(kTestDataSize, new_offset); | 605 EXPECT_EQ(kTestDataSize, new_offset); |
| 569 | 606 |
| 570 rv = stream.WriteSync(kTestData, kTestDataSize); | 607 rv = stream.WriteSync(kTestData, kTestDataSize); |
| 571 EXPECT_EQ(kTestDataSize, rv); | 608 EXPECT_EQ(kTestDataSize, rv); |
| 572 stream.CloseSync(); | 609 stream.CloseSync(); |
| 573 | 610 |
| 574 ok = file_util::GetFileSize(temp_file_path(), &file_size); | 611 ok = file_util::GetFileSize(temp_file_path(), &file_size); |
| 575 EXPECT_TRUE(ok); | 612 EXPECT_TRUE(ok); |
| 576 EXPECT_EQ(kTestDataSize * 2, file_size); | 613 EXPECT_EQ(kTestDataSize * 2, file_size); |
| 577 } | 614 } |
| 578 | 615 |
| 579 TEST_F(FileStreamTest, AsyncWrite_FromOffset) { | 616 TEST_F(FileStreamTest, AsyncWrite_FromOffset) { |
| 580 int64 file_size; | 617 int64 file_size; |
| 581 bool ok = file_util::GetFileSize(temp_file_path(), &file_size); | 618 bool ok = file_util::GetFileSize(temp_file_path(), &file_size); |
| 582 EXPECT_TRUE(ok); | 619 EXPECT_TRUE(ok); |
| 583 | 620 |
| 584 FileStream stream(NULL); | 621 FileStream stream(NULL); |
| 585 int flags = base::PLATFORM_FILE_OPEN | | 622 int flags = base::PLATFORM_FILE_OPEN | |
| 586 base::PLATFORM_FILE_WRITE | | 623 base::PLATFORM_FILE_WRITE | |
| 587 base::PLATFORM_FILE_ASYNC; | 624 base::PLATFORM_FILE_ASYNC; |
| 588 int rv = stream.OpenSync(temp_file_path(), flags); | 625 int rv = stream.OpenSync(temp_file_path(), flags); |
| 589 EXPECT_EQ(OK, rv); | 626 EXPECT_EQ(OK, rv); |
| 590 | 627 |
| 628 TestInt64CompletionCallback callback64; |
| 591 const int64 kOffset = 0; | 629 const int64 kOffset = 0; |
| 592 int64 new_offset = stream.Seek(FROM_END, kOffset); | 630 rv = stream.Seek(FROM_END, kOffset, callback64.callback()); |
| 631 ASSERT_EQ(ERR_IO_PENDING, rv); |
| 632 int64 new_offset = callback64.WaitForResult(); |
| 593 EXPECT_EQ(kTestDataSize, new_offset); | 633 EXPECT_EQ(kTestDataSize, new_offset); |
| 594 | 634 |
| 595 TestCompletionCallback callback; | 635 TestCompletionCallback callback; |
| 596 int total_bytes_written = 0; | 636 int total_bytes_written = 0; |
| 597 | 637 |
| 598 scoped_refptr<IOBufferWithSize> buf = CreateTestDataBuffer(); | 638 scoped_refptr<IOBufferWithSize> buf = CreateTestDataBuffer(); |
| 599 scoped_refptr<DrainableIOBuffer> drainable = | 639 scoped_refptr<DrainableIOBuffer> drainable = |
| 600 new DrainableIOBuffer(buf, buf->size()); | 640 new DrainableIOBuffer(buf, buf->size()); |
| 601 while (total_bytes_written != kTestDataSize) { | 641 while (total_bytes_written != kTestDataSize) { |
| 602 rv = stream.Write(drainable, drainable->BytesRemaining(), | 642 rv = stream.Write(drainable, drainable->BytesRemaining(), |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 661 FileStream stream(NULL); | 701 FileStream stream(NULL); |
| 662 int flags = base::PLATFORM_FILE_OPEN | | 702 int flags = base::PLATFORM_FILE_OPEN | |
| 663 base::PLATFORM_FILE_READ | | 703 base::PLATFORM_FILE_READ | |
| 664 base::PLATFORM_FILE_WRITE; | 704 base::PLATFORM_FILE_WRITE; |
| 665 int rv = stream.OpenSync(temp_file_path(), flags); | 705 int rv = stream.OpenSync(temp_file_path(), flags); |
| 666 EXPECT_EQ(OK, rv); | 706 EXPECT_EQ(OK, rv); |
| 667 | 707 |
| 668 int64 total_bytes_avail = stream.Available(); | 708 int64 total_bytes_avail = stream.Available(); |
| 669 EXPECT_EQ(file_size, total_bytes_avail); | 709 EXPECT_EQ(file_size, total_bytes_avail); |
| 670 | 710 |
| 671 int64 offset = stream.Seek(FROM_END, 0); | 711 int64 offset = stream.SeekSync(FROM_END, 0); |
| 672 EXPECT_EQ(offset, file_size); | 712 EXPECT_EQ(offset, file_size); |
| 673 | 713 |
| 674 rv = stream.WriteSync(kTestData, kTestDataSize); | 714 rv = stream.WriteSync(kTestData, kTestDataSize); |
| 675 EXPECT_EQ(kTestDataSize, rv); | 715 EXPECT_EQ(kTestDataSize, rv); |
| 676 | 716 |
| 677 offset = stream.Seek(FROM_BEGIN, 0); | 717 offset = stream.SeekSync(FROM_BEGIN, 0); |
| 678 EXPECT_EQ(0, offset); | 718 EXPECT_EQ(0, offset); |
| 679 | 719 |
| 680 int64 total_bytes_read = 0; | 720 int64 total_bytes_read = 0; |
| 681 | 721 |
| 682 std::string data_read; | 722 std::string data_read; |
| 683 for (;;) { | 723 for (;;) { |
| 684 char buf[4]; | 724 char buf[4]; |
| 685 rv = stream.ReadSync(buf, arraysize(buf)); | 725 rv = stream.ReadSync(buf, arraysize(buf)); |
| 686 EXPECT_LE(0, rv); | 726 EXPECT_LE(0, rv); |
| 687 if (rv <= 0) | 727 if (rv <= 0) |
| (...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 768 int flags = base::PLATFORM_FILE_OPEN | | 808 int flags = base::PLATFORM_FILE_OPEN | |
| 769 base::PLATFORM_FILE_READ | | 809 base::PLATFORM_FILE_READ | |
| 770 base::PLATFORM_FILE_WRITE | | 810 base::PLATFORM_FILE_WRITE | |
| 771 base::PLATFORM_FILE_ASYNC; | 811 base::PLATFORM_FILE_ASYNC; |
| 772 int rv = stream.OpenSync(temp_file_path(), flags); | 812 int rv = stream.OpenSync(temp_file_path(), flags); |
| 773 EXPECT_EQ(OK, rv); | 813 EXPECT_EQ(OK, rv); |
| 774 | 814 |
| 775 int64 total_bytes_avail = stream.Available(); | 815 int64 total_bytes_avail = stream.Available(); |
| 776 EXPECT_EQ(file_size, total_bytes_avail); | 816 EXPECT_EQ(file_size, total_bytes_avail); |
| 777 | 817 |
| 778 int64 offset = stream.Seek(FROM_END, 0); | 818 TestInt64CompletionCallback callback64; |
| 819 rv = stream.Seek(FROM_END, 0, callback64.callback()); |
| 820 ASSERT_EQ(ERR_IO_PENDING, rv); |
| 821 int64 offset = callback64.WaitForResult(); |
| 779 EXPECT_EQ(offset, file_size); | 822 EXPECT_EQ(offset, file_size); |
| 780 | 823 |
| 781 TestCompletionCallback callback; | 824 TestCompletionCallback callback; |
| 782 int total_bytes_written = 0; | 825 int total_bytes_written = 0; |
| 783 | 826 |
| 784 scoped_refptr<IOBufferWithSize> buf = CreateTestDataBuffer(); | 827 scoped_refptr<IOBufferWithSize> buf = CreateTestDataBuffer(); |
| 785 scoped_refptr<DrainableIOBuffer> drainable = | 828 scoped_refptr<DrainableIOBuffer> drainable = |
| 786 new DrainableIOBuffer(buf, buf->size()); | 829 new DrainableIOBuffer(buf, buf->size()); |
| 787 while (total_bytes_written != kTestDataSize) { | 830 while (total_bytes_written != kTestDataSize) { |
| 788 rv = stream.Write(drainable, drainable->BytesRemaining(), | 831 rv = stream.Write(drainable, drainable->BytesRemaining(), |
| 789 callback.callback()); | 832 callback.callback()); |
| 790 if (rv == ERR_IO_PENDING) | 833 if (rv == ERR_IO_PENDING) |
| 791 rv = callback.WaitForResult(); | 834 rv = callback.WaitForResult(); |
| 792 EXPECT_LT(0, rv); | 835 EXPECT_LT(0, rv); |
| 793 if (rv <= 0) | 836 if (rv <= 0) |
| 794 break; | 837 break; |
| 795 drainable->DidConsume(rv); | 838 drainable->DidConsume(rv); |
| 796 total_bytes_written += rv; | 839 total_bytes_written += rv; |
| 797 } | 840 } |
| 798 | 841 |
| 799 EXPECT_EQ(kTestDataSize, total_bytes_written); | 842 EXPECT_EQ(kTestDataSize, total_bytes_written); |
| 800 | 843 |
| 801 offset = stream.Seek(FROM_BEGIN, 0); | 844 rv = stream.Seek(FROM_BEGIN, 0, callback64.callback()); |
| 845 ASSERT_EQ(ERR_IO_PENDING, rv); |
| 846 offset = callback64.WaitForResult(); |
| 802 EXPECT_EQ(0, offset); | 847 EXPECT_EQ(0, offset); |
| 803 | 848 |
| 804 int total_bytes_read = 0; | 849 int total_bytes_read = 0; |
| 805 | 850 |
| 806 std::string data_read; | 851 std::string data_read; |
| 807 for (;;) { | 852 for (;;) { |
| 808 scoped_refptr<IOBufferWithSize> buf = new IOBufferWithSize(4); | 853 scoped_refptr<IOBufferWithSize> buf = new IOBufferWithSize(4); |
| 809 rv = stream.Read(buf, buf->size(), callback.callback()); | 854 rv = stream.Read(buf, buf->size(), callback.callback()); |
| 810 if (rv == ERR_IO_PENDING) | 855 if (rv == ERR_IO_PENDING) |
| 811 rv = callback.WaitForResult(); | 856 rv = callback.WaitForResult(); |
| (...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 875 stream_, &total_bytes_written, &total_bytes_read, &data_read); | 920 stream_, &total_bytes_written, &total_bytes_read, &data_read); |
| 876 rv = stream_->Write(drainable_, drainable_->BytesRemaining(), | 921 rv = stream_->Write(drainable_, drainable_->BytesRemaining(), |
| 877 callback.callback()); | 922 callback.callback()); |
| 878 DCHECK_EQ(ERR_IO_PENDING, rv); | 923 DCHECK_EQ(ERR_IO_PENDING, rv); |
| 879 rv = callback.WaitForResult(); | 924 rv = callback.WaitForResult(); |
| 880 drainable_->DidConsume(total_bytes_written); | 925 drainable_->DidConsume(total_bytes_written); |
| 881 *total_bytes_written_ += total_bytes_written; | 926 *total_bytes_written_ += total_bytes_written; |
| 882 *total_bytes_read_ += total_bytes_read; | 927 *total_bytes_read_ += total_bytes_read; |
| 883 *data_read_ += data_read; | 928 *data_read_ += data_read; |
| 884 } else { // We're done writing all data. Start reading the data. | 929 } else { // We're done writing all data. Start reading the data. |
| 885 stream_->Seek(FROM_BEGIN, 0); | 930 stream_->SeekSync(FROM_BEGIN, 0); |
| 886 | 931 |
| 887 TestCompletionCallback callback; | 932 TestCompletionCallback callback; |
| 888 for (;;) { | 933 for (;;) { |
| 889 scoped_refptr<IOBufferWithSize> buf = new IOBufferWithSize(4); | 934 scoped_refptr<IOBufferWithSize> buf = new IOBufferWithSize(4); |
| 890 rv = stream_->Read(buf, buf->size(), callback.callback()); | 935 rv = stream_->Read(buf, buf->size(), callback.callback()); |
| 891 if (rv == ERR_IO_PENDING) { | 936 if (rv == ERR_IO_PENDING) { |
| 892 MessageLoop::ScopedNestableTaskAllower allow(MessageLoop::current()); | 937 MessageLoop::ScopedNestableTaskAllower allow(MessageLoop::current()); |
| 893 rv = callback.WaitForResult(); | 938 rv = callback.WaitForResult(); |
| 894 } | 939 } |
| 895 EXPECT_LE(0, rv); | 940 EXPECT_LE(0, rv); |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 929 int flags = base::PLATFORM_FILE_OPEN | | 974 int flags = base::PLATFORM_FILE_OPEN | |
| 930 base::PLATFORM_FILE_READ | | 975 base::PLATFORM_FILE_READ | |
| 931 base::PLATFORM_FILE_WRITE | | 976 base::PLATFORM_FILE_WRITE | |
| 932 base::PLATFORM_FILE_ASYNC; | 977 base::PLATFORM_FILE_ASYNC; |
| 933 int rv = stream.OpenSync(temp_file_path(), flags); | 978 int rv = stream.OpenSync(temp_file_path(), flags); |
| 934 EXPECT_EQ(OK, rv); | 979 EXPECT_EQ(OK, rv); |
| 935 | 980 |
| 936 int64 total_bytes_avail = stream.Available(); | 981 int64 total_bytes_avail = stream.Available(); |
| 937 EXPECT_EQ(file_size, total_bytes_avail); | 982 EXPECT_EQ(file_size, total_bytes_avail); |
| 938 | 983 |
| 939 int64 offset = stream.Seek(FROM_END, 0); | 984 int64 offset = stream.SeekSync(FROM_END, 0); |
| 940 EXPECT_EQ(offset, file_size); | 985 EXPECT_EQ(offset, file_size); |
| 941 | 986 |
| 942 int total_bytes_written = 0; | 987 int total_bytes_written = 0; |
| 943 int total_bytes_read = 0; | 988 int total_bytes_read = 0; |
| 944 std::string data_read; | 989 std::string data_read; |
| 945 TestWriteReadCompletionCallback callback(&stream, &total_bytes_written, | 990 TestWriteReadCompletionCallback callback(&stream, &total_bytes_written, |
| 946 &total_bytes_read, &data_read); | 991 &total_bytes_read, &data_read); |
| 947 | 992 |
| 948 scoped_refptr<IOBufferWithSize> buf = CreateTestDataBuffer(); | 993 scoped_refptr<IOBufferWithSize> buf = CreateTestDataBuffer(); |
| 949 rv = stream.Write(buf, buf->size(), callback.callback()); | 994 rv = stream.Write(buf, buf->size(), callback.callback()); |
| (...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1039 int flags = base::PLATFORM_FILE_OPEN | | 1084 int flags = base::PLATFORM_FILE_OPEN | |
| 1040 base::PLATFORM_FILE_READ | | 1085 base::PLATFORM_FILE_READ | |
| 1041 base::PLATFORM_FILE_WRITE | | 1086 base::PLATFORM_FILE_WRITE | |
| 1042 base::PLATFORM_FILE_ASYNC; | 1087 base::PLATFORM_FILE_ASYNC; |
| 1043 int rv = stream.OpenSync(temp_file_path(), flags); | 1088 int rv = stream.OpenSync(temp_file_path(), flags); |
| 1044 EXPECT_EQ(OK, rv); | 1089 EXPECT_EQ(OK, rv); |
| 1045 | 1090 |
| 1046 int64 total_bytes_avail = stream.Available(); | 1091 int64 total_bytes_avail = stream.Available(); |
| 1047 EXPECT_EQ(file_size, total_bytes_avail); | 1092 EXPECT_EQ(file_size, total_bytes_avail); |
| 1048 | 1093 |
| 1049 int64 offset = stream.Seek(FROM_END, 0); | 1094 int64 offset = stream.SeekSync(FROM_END, 0); |
| 1050 EXPECT_EQ(offset, file_size); | 1095 EXPECT_EQ(offset, file_size); |
| 1051 | 1096 |
| 1052 int total_bytes_written = 0; | 1097 int total_bytes_written = 0; |
| 1053 TestWriteCloseCompletionCallback callback(&stream, &total_bytes_written); | 1098 TestWriteCloseCompletionCallback callback(&stream, &total_bytes_written); |
| 1054 | 1099 |
| 1055 scoped_refptr<IOBufferWithSize> buf = CreateTestDataBuffer(); | 1100 scoped_refptr<IOBufferWithSize> buf = CreateTestDataBuffer(); |
| 1056 rv = stream.Write(buf, buf->size(), callback.callback()); | 1101 rv = stream.Write(buf, buf->size(), callback.callback()); |
| 1057 if (rv == ERR_IO_PENDING) | 1102 if (rv == ERR_IO_PENDING) |
| 1058 total_bytes_written = callback.WaitForResult(); | 1103 total_bytes_written = callback.WaitForResult(); |
| 1059 EXPECT_LT(0, total_bytes_written); | 1104 EXPECT_LT(0, total_bytes_written); |
| (...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1215 // Delete the stream without waiting for the close operation to be | 1260 // Delete the stream without waiting for the close operation to be |
| 1216 // complete. Should be safe. | 1261 // complete. Should be safe. |
| 1217 stream.reset(); | 1262 stream.reset(); |
| 1218 // close_callback won't be called. | 1263 // close_callback won't be called. |
| 1219 EXPECT_FALSE(close_callback.have_result()); | 1264 EXPECT_FALSE(close_callback.have_result()); |
| 1220 } | 1265 } |
| 1221 | 1266 |
| 1222 } // namespace | 1267 } // namespace |
| 1223 | 1268 |
| 1224 } // namespace net | 1269 } // namespace net |
| OLD | NEW |