Chromium Code Reviews| 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)); |
|
willchan no longer on Chromium
2012/04/05 15:12:28
We need new tests for the asynchronous API too.
kinuko
2012/04/06 12:42:37
Added AsyncSeekAround test and replaced SeekSync w
| |
| 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 15 matching lines...) Expand all Loading... | |
| 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 const int64 kOffset = 3; | 418 const int64 kOffset = 3; |
| 419 int64 new_offset = stream.Seek(FROM_BEGIN, kOffset); | 419 int64 new_offset = stream.SeekSync(FROM_BEGIN, kOffset); |
| 420 EXPECT_EQ(kOffset, new_offset); | 420 EXPECT_EQ(kOffset, new_offset); |
| 421 | 421 |
| 422 int64 total_bytes_avail = stream.Available(); | 422 int64 total_bytes_avail = stream.Available(); |
| 423 EXPECT_EQ(file_size - kOffset, total_bytes_avail); | 423 EXPECT_EQ(file_size - kOffset, total_bytes_avail); |
| 424 | 424 |
| 425 TestCompletionCallback callback; | 425 TestCompletionCallback callback; |
| 426 | 426 |
| 427 int total_bytes_read = 0; | 427 int total_bytes_read = 0; |
| 428 | 428 |
| 429 std::string data_read; | 429 std::string data_read; |
| (...skipping 13 matching lines...) Expand all Loading... | |
| 443 } | 443 } |
| 444 | 444 |
| 445 TEST_F(FileStreamTest, SeekAround) { | 445 TEST_F(FileStreamTest, SeekAround) { |
| 446 FileStream stream(NULL); | 446 FileStream stream(NULL); |
| 447 int flags = base::PLATFORM_FILE_OPEN | | 447 int flags = base::PLATFORM_FILE_OPEN | |
| 448 base::PLATFORM_FILE_READ; | 448 base::PLATFORM_FILE_READ; |
| 449 int rv = stream.OpenSync(temp_file_path(), flags); | 449 int rv = stream.OpenSync(temp_file_path(), flags); |
| 450 EXPECT_EQ(OK, rv); | 450 EXPECT_EQ(OK, rv); |
| 451 | 451 |
| 452 const int64 kOffset = 3; | 452 const int64 kOffset = 3; |
| 453 int64 new_offset = stream.Seek(FROM_BEGIN, kOffset); | 453 int64 new_offset = stream.SeekSync(FROM_BEGIN, kOffset); |
| 454 EXPECT_EQ(kOffset, new_offset); | 454 EXPECT_EQ(kOffset, new_offset); |
| 455 | 455 |
| 456 new_offset = stream.Seek(FROM_CURRENT, kOffset); | 456 new_offset = stream.SeekSync(FROM_CURRENT, kOffset); |
| 457 EXPECT_EQ(2 * kOffset, new_offset); | 457 EXPECT_EQ(2 * kOffset, new_offset); |
| 458 | 458 |
| 459 new_offset = stream.Seek(FROM_CURRENT, -kOffset); | 459 new_offset = stream.SeekSync(FROM_CURRENT, -kOffset); |
| 460 EXPECT_EQ(kOffset, new_offset); | 460 EXPECT_EQ(kOffset, new_offset); |
| 461 | 461 |
| 462 const int kTestDataLen = arraysize(kTestData) - 1; | 462 const int kTestDataLen = arraysize(kTestData) - 1; |
| 463 | 463 |
| 464 new_offset = stream.Seek(FROM_END, -kTestDataLen); | 464 new_offset = stream.SeekSync(FROM_END, -kTestDataLen); |
| 465 EXPECT_EQ(0, new_offset); | 465 EXPECT_EQ(0, new_offset); |
| 466 } | 466 } |
| 467 | 467 |
| 468 TEST_F(FileStreamTest, BasicWrite) { | 468 TEST_F(FileStreamTest, BasicWrite) { |
| 469 FileStream stream(NULL); | 469 FileStream stream(NULL); |
| 470 int flags = base::PLATFORM_FILE_CREATE_ALWAYS | | 470 int flags = base::PLATFORM_FILE_CREATE_ALWAYS | |
| 471 base::PLATFORM_FILE_WRITE; | 471 base::PLATFORM_FILE_WRITE; |
| 472 int rv = stream.OpenSync(temp_file_path(), flags); | 472 int rv = stream.OpenSync(temp_file_path(), flags); |
| 473 EXPECT_EQ(OK, rv); | 473 EXPECT_EQ(OK, rv); |
| 474 | 474 |
| (...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 557 base::PLATFORM_FILE_WRITE; | 557 base::PLATFORM_FILE_WRITE; |
| 558 int rv = stream.OpenSync(temp_file_path(), flags); | 558 int rv = stream.OpenSync(temp_file_path(), flags); |
| 559 EXPECT_EQ(OK, rv); | 559 EXPECT_EQ(OK, rv); |
| 560 | 560 |
| 561 int64 file_size; | 561 int64 file_size; |
| 562 bool ok = file_util::GetFileSize(temp_file_path(), &file_size); | 562 bool ok = file_util::GetFileSize(temp_file_path(), &file_size); |
| 563 EXPECT_TRUE(ok); | 563 EXPECT_TRUE(ok); |
| 564 EXPECT_EQ(kTestDataSize, file_size); | 564 EXPECT_EQ(kTestDataSize, file_size); |
| 565 | 565 |
| 566 const int64 kOffset = 0; | 566 const int64 kOffset = 0; |
| 567 int64 new_offset = stream.Seek(FROM_END, kOffset); | 567 int64 new_offset = stream.SeekSync(FROM_END, kOffset); |
| 568 EXPECT_EQ(kTestDataSize, new_offset); | 568 EXPECT_EQ(kTestDataSize, new_offset); |
| 569 | 569 |
| 570 rv = stream.WriteSync(kTestData, kTestDataSize); | 570 rv = stream.WriteSync(kTestData, kTestDataSize); |
| 571 EXPECT_EQ(kTestDataSize, rv); | 571 EXPECT_EQ(kTestDataSize, rv); |
| 572 stream.CloseSync(); | 572 stream.CloseSync(); |
| 573 | 573 |
| 574 ok = file_util::GetFileSize(temp_file_path(), &file_size); | 574 ok = file_util::GetFileSize(temp_file_path(), &file_size); |
| 575 EXPECT_TRUE(ok); | 575 EXPECT_TRUE(ok); |
| 576 EXPECT_EQ(kTestDataSize * 2, file_size); | 576 EXPECT_EQ(kTestDataSize * 2, file_size); |
| 577 } | 577 } |
| 578 | 578 |
| 579 TEST_F(FileStreamTest, AsyncWrite_FromOffset) { | 579 TEST_F(FileStreamTest, AsyncWrite_FromOffset) { |
| 580 int64 file_size; | 580 int64 file_size; |
| 581 bool ok = file_util::GetFileSize(temp_file_path(), &file_size); | 581 bool ok = file_util::GetFileSize(temp_file_path(), &file_size); |
| 582 EXPECT_TRUE(ok); | 582 EXPECT_TRUE(ok); |
| 583 | 583 |
| 584 FileStream stream(NULL); | 584 FileStream stream(NULL); |
| 585 int flags = base::PLATFORM_FILE_OPEN | | 585 int flags = base::PLATFORM_FILE_OPEN | |
| 586 base::PLATFORM_FILE_WRITE | | 586 base::PLATFORM_FILE_WRITE | |
| 587 base::PLATFORM_FILE_ASYNC; | 587 base::PLATFORM_FILE_ASYNC; |
| 588 int rv = stream.OpenSync(temp_file_path(), flags); | 588 int rv = stream.OpenSync(temp_file_path(), flags); |
| 589 EXPECT_EQ(OK, rv); | 589 EXPECT_EQ(OK, rv); |
| 590 | 590 |
| 591 const int64 kOffset = 0; | 591 const int64 kOffset = 0; |
| 592 int64 new_offset = stream.Seek(FROM_END, kOffset); | 592 int64 new_offset = stream.SeekSync(FROM_END, kOffset); |
| 593 EXPECT_EQ(kTestDataSize, new_offset); | 593 EXPECT_EQ(kTestDataSize, new_offset); |
| 594 | 594 |
| 595 TestCompletionCallback callback; | 595 TestCompletionCallback callback; |
| 596 int total_bytes_written = 0; | 596 int total_bytes_written = 0; |
| 597 | 597 |
| 598 scoped_refptr<IOBufferWithSize> buf = CreateTestDataBuffer(); | 598 scoped_refptr<IOBufferWithSize> buf = CreateTestDataBuffer(); |
| 599 scoped_refptr<DrainableIOBuffer> drainable = | 599 scoped_refptr<DrainableIOBuffer> drainable = |
| 600 new DrainableIOBuffer(buf, buf->size()); | 600 new DrainableIOBuffer(buf, buf->size()); |
| 601 while (total_bytes_written != kTestDataSize) { | 601 while (total_bytes_written != kTestDataSize) { |
| 602 rv = stream.Write(drainable, drainable->BytesRemaining(), | 602 rv = stream.Write(drainable, drainable->BytesRemaining(), |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 661 FileStream stream(NULL); | 661 FileStream stream(NULL); |
| 662 int flags = base::PLATFORM_FILE_OPEN | | 662 int flags = base::PLATFORM_FILE_OPEN | |
| 663 base::PLATFORM_FILE_READ | | 663 base::PLATFORM_FILE_READ | |
| 664 base::PLATFORM_FILE_WRITE; | 664 base::PLATFORM_FILE_WRITE; |
| 665 int rv = stream.OpenSync(temp_file_path(), flags); | 665 int rv = stream.OpenSync(temp_file_path(), flags); |
| 666 EXPECT_EQ(OK, rv); | 666 EXPECT_EQ(OK, rv); |
| 667 | 667 |
| 668 int64 total_bytes_avail = stream.Available(); | 668 int64 total_bytes_avail = stream.Available(); |
| 669 EXPECT_EQ(file_size, total_bytes_avail); | 669 EXPECT_EQ(file_size, total_bytes_avail); |
| 670 | 670 |
| 671 int64 offset = stream.Seek(FROM_END, 0); | 671 int64 offset = stream.SeekSync(FROM_END, 0); |
| 672 EXPECT_EQ(offset, file_size); | 672 EXPECT_EQ(offset, file_size); |
| 673 | 673 |
| 674 rv = stream.WriteSync(kTestData, kTestDataSize); | 674 rv = stream.WriteSync(kTestData, kTestDataSize); |
| 675 EXPECT_EQ(kTestDataSize, rv); | 675 EXPECT_EQ(kTestDataSize, rv); |
| 676 | 676 |
| 677 offset = stream.Seek(FROM_BEGIN, 0); | 677 offset = stream.SeekSync(FROM_BEGIN, 0); |
| 678 EXPECT_EQ(0, offset); | 678 EXPECT_EQ(0, offset); |
| 679 | 679 |
| 680 int64 total_bytes_read = 0; | 680 int64 total_bytes_read = 0; |
| 681 | 681 |
| 682 std::string data_read; | 682 std::string data_read; |
| 683 for (;;) { | 683 for (;;) { |
| 684 char buf[4]; | 684 char buf[4]; |
| 685 rv = stream.ReadSync(buf, arraysize(buf)); | 685 rv = stream.ReadSync(buf, arraysize(buf)); |
| 686 EXPECT_LE(0, rv); | 686 EXPECT_LE(0, rv); |
| 687 if (rv <= 0) | 687 if (rv <= 0) |
| (...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 768 int flags = base::PLATFORM_FILE_OPEN | | 768 int flags = base::PLATFORM_FILE_OPEN | |
| 769 base::PLATFORM_FILE_READ | | 769 base::PLATFORM_FILE_READ | |
| 770 base::PLATFORM_FILE_WRITE | | 770 base::PLATFORM_FILE_WRITE | |
| 771 base::PLATFORM_FILE_ASYNC; | 771 base::PLATFORM_FILE_ASYNC; |
| 772 int rv = stream.OpenSync(temp_file_path(), flags); | 772 int rv = stream.OpenSync(temp_file_path(), flags); |
| 773 EXPECT_EQ(OK, rv); | 773 EXPECT_EQ(OK, rv); |
| 774 | 774 |
| 775 int64 total_bytes_avail = stream.Available(); | 775 int64 total_bytes_avail = stream.Available(); |
| 776 EXPECT_EQ(file_size, total_bytes_avail); | 776 EXPECT_EQ(file_size, total_bytes_avail); |
| 777 | 777 |
| 778 int64 offset = stream.Seek(FROM_END, 0); | 778 int64 offset = stream.SeekSync(FROM_END, 0); |
| 779 EXPECT_EQ(offset, file_size); | 779 EXPECT_EQ(offset, file_size); |
| 780 | 780 |
| 781 TestCompletionCallback callback; | 781 TestCompletionCallback callback; |
| 782 int total_bytes_written = 0; | 782 int total_bytes_written = 0; |
| 783 | 783 |
| 784 scoped_refptr<IOBufferWithSize> buf = CreateTestDataBuffer(); | 784 scoped_refptr<IOBufferWithSize> buf = CreateTestDataBuffer(); |
| 785 scoped_refptr<DrainableIOBuffer> drainable = | 785 scoped_refptr<DrainableIOBuffer> drainable = |
| 786 new DrainableIOBuffer(buf, buf->size()); | 786 new DrainableIOBuffer(buf, buf->size()); |
| 787 while (total_bytes_written != kTestDataSize) { | 787 while (total_bytes_written != kTestDataSize) { |
| 788 rv = stream.Write(drainable, drainable->BytesRemaining(), | 788 rv = stream.Write(drainable, drainable->BytesRemaining(), |
| 789 callback.callback()); | 789 callback.callback()); |
| 790 if (rv == ERR_IO_PENDING) | 790 if (rv == ERR_IO_PENDING) |
| 791 rv = callback.WaitForResult(); | 791 rv = callback.WaitForResult(); |
| 792 EXPECT_LT(0, rv); | 792 EXPECT_LT(0, rv); |
| 793 if (rv <= 0) | 793 if (rv <= 0) |
| 794 break; | 794 break; |
| 795 drainable->DidConsume(rv); | 795 drainable->DidConsume(rv); |
| 796 total_bytes_written += rv; | 796 total_bytes_written += rv; |
| 797 } | 797 } |
| 798 | 798 |
| 799 EXPECT_EQ(kTestDataSize, total_bytes_written); | 799 EXPECT_EQ(kTestDataSize, total_bytes_written); |
| 800 | 800 |
| 801 offset = stream.Seek(FROM_BEGIN, 0); | 801 offset = stream.SeekSync(FROM_BEGIN, 0); |
| 802 EXPECT_EQ(0, offset); | 802 EXPECT_EQ(0, offset); |
| 803 | 803 |
| 804 int total_bytes_read = 0; | 804 int total_bytes_read = 0; |
| 805 | 805 |
| 806 std::string data_read; | 806 std::string data_read; |
| 807 for (;;) { | 807 for (;;) { |
| 808 scoped_refptr<IOBufferWithSize> buf = new IOBufferWithSize(4); | 808 scoped_refptr<IOBufferWithSize> buf = new IOBufferWithSize(4); |
| 809 rv = stream.Read(buf, buf->size(), callback.callback()); | 809 rv = stream.Read(buf, buf->size(), callback.callback()); |
| 810 if (rv == ERR_IO_PENDING) | 810 if (rv == ERR_IO_PENDING) |
| 811 rv = callback.WaitForResult(); | 811 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); | 875 stream_, &total_bytes_written, &total_bytes_read, &data_read); |
| 876 rv = stream_->Write(drainable_, drainable_->BytesRemaining(), | 876 rv = stream_->Write(drainable_, drainable_->BytesRemaining(), |
| 877 callback.callback()); | 877 callback.callback()); |
| 878 DCHECK_EQ(ERR_IO_PENDING, rv); | 878 DCHECK_EQ(ERR_IO_PENDING, rv); |
| 879 rv = callback.WaitForResult(); | 879 rv = callback.WaitForResult(); |
| 880 drainable_->DidConsume(total_bytes_written); | 880 drainable_->DidConsume(total_bytes_written); |
| 881 *total_bytes_written_ += total_bytes_written; | 881 *total_bytes_written_ += total_bytes_written; |
| 882 *total_bytes_read_ += total_bytes_read; | 882 *total_bytes_read_ += total_bytes_read; |
| 883 *data_read_ += data_read; | 883 *data_read_ += data_read; |
| 884 } else { // We're done writing all data. Start reading the data. | 884 } else { // We're done writing all data. Start reading the data. |
| 885 stream_->Seek(FROM_BEGIN, 0); | 885 stream_->SeekSync(FROM_BEGIN, 0); |
| 886 | 886 |
| 887 TestCompletionCallback callback; | 887 TestCompletionCallback callback; |
| 888 for (;;) { | 888 for (;;) { |
| 889 scoped_refptr<IOBufferWithSize> buf = new IOBufferWithSize(4); | 889 scoped_refptr<IOBufferWithSize> buf = new IOBufferWithSize(4); |
| 890 rv = stream_->Read(buf, buf->size(), callback.callback()); | 890 rv = stream_->Read(buf, buf->size(), callback.callback()); |
| 891 if (rv == ERR_IO_PENDING) { | 891 if (rv == ERR_IO_PENDING) { |
| 892 MessageLoop::ScopedNestableTaskAllower allow(MessageLoop::current()); | 892 MessageLoop::ScopedNestableTaskAllower allow(MessageLoop::current()); |
| 893 rv = callback.WaitForResult(); | 893 rv = callback.WaitForResult(); |
| 894 } | 894 } |
| 895 EXPECT_LE(0, rv); | 895 EXPECT_LE(0, rv); |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 929 int flags = base::PLATFORM_FILE_OPEN | | 929 int flags = base::PLATFORM_FILE_OPEN | |
| 930 base::PLATFORM_FILE_READ | | 930 base::PLATFORM_FILE_READ | |
| 931 base::PLATFORM_FILE_WRITE | | 931 base::PLATFORM_FILE_WRITE | |
| 932 base::PLATFORM_FILE_ASYNC; | 932 base::PLATFORM_FILE_ASYNC; |
| 933 int rv = stream.OpenSync(temp_file_path(), flags); | 933 int rv = stream.OpenSync(temp_file_path(), flags); |
| 934 EXPECT_EQ(OK, rv); | 934 EXPECT_EQ(OK, rv); |
| 935 | 935 |
| 936 int64 total_bytes_avail = stream.Available(); | 936 int64 total_bytes_avail = stream.Available(); |
| 937 EXPECT_EQ(file_size, total_bytes_avail); | 937 EXPECT_EQ(file_size, total_bytes_avail); |
| 938 | 938 |
| 939 int64 offset = stream.Seek(FROM_END, 0); | 939 int64 offset = stream.SeekSync(FROM_END, 0); |
| 940 EXPECT_EQ(offset, file_size); | 940 EXPECT_EQ(offset, file_size); |
| 941 | 941 |
| 942 int total_bytes_written = 0; | 942 int total_bytes_written = 0; |
| 943 int total_bytes_read = 0; | 943 int total_bytes_read = 0; |
| 944 std::string data_read; | 944 std::string data_read; |
| 945 TestWriteReadCompletionCallback callback(&stream, &total_bytes_written, | 945 TestWriteReadCompletionCallback callback(&stream, &total_bytes_written, |
| 946 &total_bytes_read, &data_read); | 946 &total_bytes_read, &data_read); |
| 947 | 947 |
| 948 scoped_refptr<IOBufferWithSize> buf = CreateTestDataBuffer(); | 948 scoped_refptr<IOBufferWithSize> buf = CreateTestDataBuffer(); |
| 949 rv = stream.Write(buf, buf->size(), callback.callback()); | 949 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 | | 1039 int flags = base::PLATFORM_FILE_OPEN | |
| 1040 base::PLATFORM_FILE_READ | | 1040 base::PLATFORM_FILE_READ | |
| 1041 base::PLATFORM_FILE_WRITE | | 1041 base::PLATFORM_FILE_WRITE | |
| 1042 base::PLATFORM_FILE_ASYNC; | 1042 base::PLATFORM_FILE_ASYNC; |
| 1043 int rv = stream.OpenSync(temp_file_path(), flags); | 1043 int rv = stream.OpenSync(temp_file_path(), flags); |
| 1044 EXPECT_EQ(OK, rv); | 1044 EXPECT_EQ(OK, rv); |
| 1045 | 1045 |
| 1046 int64 total_bytes_avail = stream.Available(); | 1046 int64 total_bytes_avail = stream.Available(); |
| 1047 EXPECT_EQ(file_size, total_bytes_avail); | 1047 EXPECT_EQ(file_size, total_bytes_avail); |
| 1048 | 1048 |
| 1049 int64 offset = stream.Seek(FROM_END, 0); | 1049 int64 offset = stream.SeekSync(FROM_END, 0); |
| 1050 EXPECT_EQ(offset, file_size); | 1050 EXPECT_EQ(offset, file_size); |
| 1051 | 1051 |
| 1052 int total_bytes_written = 0; | 1052 int total_bytes_written = 0; |
| 1053 TestWriteCloseCompletionCallback callback(&stream, &total_bytes_written); | 1053 TestWriteCloseCompletionCallback callback(&stream, &total_bytes_written); |
| 1054 | 1054 |
| 1055 scoped_refptr<IOBufferWithSize> buf = CreateTestDataBuffer(); | 1055 scoped_refptr<IOBufferWithSize> buf = CreateTestDataBuffer(); |
| 1056 rv = stream.Write(buf, buf->size(), callback.callback()); | 1056 rv = stream.Write(buf, buf->size(), callback.callback()); |
| 1057 if (rv == ERR_IO_PENDING) | 1057 if (rv == ERR_IO_PENDING) |
| 1058 total_bytes_written = callback.WaitForResult(); | 1058 total_bytes_written = callback.WaitForResult(); |
| 1059 EXPECT_LT(0, total_bytes_written); | 1059 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 | 1215 // Delete the stream without waiting for the close operation to be |
| 1216 // complete. Should be safe. | 1216 // complete. Should be safe. |
| 1217 stream.reset(); | 1217 stream.reset(); |
| 1218 // close_callback won't be called. | 1218 // close_callback won't be called. |
| 1219 EXPECT_FALSE(close_callback.have_result()); | 1219 EXPECT_FALSE(close_callback.have_result()); |
| 1220 } | 1220 } |
| 1221 | 1221 |
| 1222 } // namespace | 1222 } // namespace |
| 1223 | 1223 |
| 1224 } // namespace net | 1224 } // namespace net |
| OLD | NEW |