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/upload_data_stream.h" | 5 #include "net/base/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 152 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
163 ASSERT_TRUE(stream.IsEOF()); | 163 ASSERT_TRUE(stream.IsEOF()); |
164 } | 164 } |
165 | 165 |
166 TEST_F(UploadDataStreamTest, File) { | 166 TEST_F(UploadDataStreamTest, File) { |
167 base::FilePath temp_file_path; | 167 base::FilePath temp_file_path; |
168 ASSERT_TRUE(file_util::CreateTemporaryFileInDir(temp_dir_.path(), | 168 ASSERT_TRUE(file_util::CreateTemporaryFileInDir(temp_dir_.path(), |
169 &temp_file_path)); | 169 &temp_file_path)); |
170 ASSERT_EQ(static_cast<int>(kTestDataSize), | 170 ASSERT_EQ(static_cast<int>(kTestDataSize), |
171 file_util::WriteFile(temp_file_path, kTestData, kTestDataSize)); | 171 file_util::WriteFile(temp_file_path, kTestData, kTestDataSize)); |
172 | 172 |
173 element_readers_.push_back(new UploadFileElementReader( | 173 element_readers_.push_back( |
174 base::MessageLoopProxy::current(), | 174 new UploadFileElementReader(base::MessageLoopProxy::current().get(), |
175 temp_file_path, 0, kuint64max, base::Time())); | 175 temp_file_path, |
| 176 0, |
| 177 kuint64max, |
| 178 base::Time())); |
176 | 179 |
177 TestCompletionCallback init_callback; | 180 TestCompletionCallback init_callback; |
178 UploadDataStream stream(&element_readers_, 0); | 181 UploadDataStream stream(&element_readers_, 0); |
179 ASSERT_EQ(ERR_IO_PENDING, stream.Init(init_callback.callback())); | 182 ASSERT_EQ(ERR_IO_PENDING, stream.Init(init_callback.callback())); |
180 ASSERT_EQ(OK, init_callback.WaitForResult()); | 183 ASSERT_EQ(OK, init_callback.WaitForResult()); |
181 EXPECT_FALSE(stream.IsInMemory()); | 184 EXPECT_FALSE(stream.IsInMemory()); |
182 EXPECT_EQ(kTestDataSize, stream.size()); | 185 EXPECT_EQ(kTestDataSize, stream.size()); |
183 EXPECT_EQ(0U, stream.position()); | 186 EXPECT_EQ(0U, stream.position()); |
184 EXPECT_FALSE(stream.IsEOF()); | 187 EXPECT_FALSE(stream.IsEOF()); |
185 scoped_refptr<IOBuffer> buf = new IOBuffer(kTestBufferSize); | 188 scoped_refptr<IOBuffer> buf = new IOBuffer(kTestBufferSize); |
(...skipping 12 matching lines...) Expand all Loading... |
198 base::FilePath temp_file_path; | 201 base::FilePath temp_file_path; |
199 ASSERT_TRUE(file_util::CreateTemporaryFileInDir(temp_dir_.path(), | 202 ASSERT_TRUE(file_util::CreateTemporaryFileInDir(temp_dir_.path(), |
200 &temp_file_path)); | 203 &temp_file_path)); |
201 ASSERT_EQ(static_cast<int>(kTestDataSize), | 204 ASSERT_EQ(static_cast<int>(kTestDataSize), |
202 file_util::WriteFile(temp_file_path, kTestData, kTestDataSize)); | 205 file_util::WriteFile(temp_file_path, kTestData, kTestDataSize)); |
203 const uint64 kFakeSize = kTestDataSize*2; | 206 const uint64 kFakeSize = kTestDataSize*2; |
204 | 207 |
205 UploadFileElementReader::ScopedOverridingContentLengthForTests | 208 UploadFileElementReader::ScopedOverridingContentLengthForTests |
206 overriding_content_length(kFakeSize); | 209 overriding_content_length(kFakeSize); |
207 | 210 |
208 element_readers_.push_back(new UploadFileElementReader( | 211 element_readers_.push_back( |
209 base::MessageLoopProxy::current(), | 212 new UploadFileElementReader(base::MessageLoopProxy::current().get(), |
210 temp_file_path, 0, kuint64max, base::Time())); | 213 temp_file_path, |
| 214 0, |
| 215 kuint64max, |
| 216 base::Time())); |
211 | 217 |
212 TestCompletionCallback init_callback; | 218 TestCompletionCallback init_callback; |
213 UploadDataStream stream(&element_readers_, 0); | 219 UploadDataStream stream(&element_readers_, 0); |
214 ASSERT_EQ(ERR_IO_PENDING, stream.Init(init_callback.callback())); | 220 ASSERT_EQ(ERR_IO_PENDING, stream.Init(init_callback.callback())); |
215 ASSERT_EQ(OK, init_callback.WaitForResult()); | 221 ASSERT_EQ(OK, init_callback.WaitForResult()); |
216 EXPECT_FALSE(stream.IsInMemory()); | 222 EXPECT_FALSE(stream.IsInMemory()); |
217 EXPECT_EQ(kFakeSize, stream.size()); | 223 EXPECT_EQ(kFakeSize, stream.size()); |
218 EXPECT_EQ(0U, stream.position()); | 224 EXPECT_EQ(0U, stream.position()); |
219 EXPECT_FALSE(stream.IsEOF()); | 225 EXPECT_FALSE(stream.IsEOF()); |
220 uint64 read_counter = 0; | 226 uint64 read_counter = 0; |
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
311 | 317 |
312 TEST_F(UploadDataStreamTest, FileAndBytes) { | 318 TEST_F(UploadDataStreamTest, FileAndBytes) { |
313 base::FilePath temp_file_path; | 319 base::FilePath temp_file_path; |
314 ASSERT_TRUE(file_util::CreateTemporaryFileInDir(temp_dir_.path(), | 320 ASSERT_TRUE(file_util::CreateTemporaryFileInDir(temp_dir_.path(), |
315 &temp_file_path)); | 321 &temp_file_path)); |
316 ASSERT_EQ(static_cast<int>(kTestDataSize), | 322 ASSERT_EQ(static_cast<int>(kTestDataSize), |
317 file_util::WriteFile(temp_file_path, kTestData, kTestDataSize)); | 323 file_util::WriteFile(temp_file_path, kTestData, kTestDataSize)); |
318 | 324 |
319 const uint64 kFileRangeOffset = 1; | 325 const uint64 kFileRangeOffset = 1; |
320 const uint64 kFileRangeLength = 4; | 326 const uint64 kFileRangeLength = 4; |
321 element_readers_.push_back(new UploadFileElementReader( | 327 element_readers_.push_back( |
322 base::MessageLoopProxy::current(), | 328 new UploadFileElementReader(base::MessageLoopProxy::current().get(), |
323 temp_file_path, kFileRangeOffset, kFileRangeLength, base::Time())); | 329 temp_file_path, |
| 330 kFileRangeOffset, |
| 331 kFileRangeLength, |
| 332 base::Time())); |
324 | 333 |
325 element_readers_.push_back(new UploadBytesElementReader( | 334 element_readers_.push_back(new UploadBytesElementReader( |
326 kTestData, kTestDataSize)); | 335 kTestData, kTestDataSize)); |
327 | 336 |
328 const uint64 kStreamSize = kTestDataSize + kFileRangeLength; | 337 const uint64 kStreamSize = kTestDataSize + kFileRangeLength; |
329 TestCompletionCallback init_callback; | 338 TestCompletionCallback init_callback; |
330 UploadDataStream stream(&element_readers_, 0); | 339 UploadDataStream stream(&element_readers_, 0); |
331 ASSERT_EQ(ERR_IO_PENDING, stream.Init(init_callback.callback())); | 340 ASSERT_EQ(ERR_IO_PENDING, stream.Init(init_callback.callback())); |
332 ASSERT_EQ(OK, init_callback.WaitForResult()); | 341 ASSERT_EQ(OK, init_callback.WaitForResult()); |
333 EXPECT_FALSE(stream.IsInMemory()); | 342 EXPECT_FALSE(stream.IsInMemory()); |
(...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
513 read_callback3.WaitForResult()); | 522 read_callback3.WaitForResult()); |
514 } | 523 } |
515 | 524 |
516 void UploadDataStreamTest::FileChangedHelper(const base::FilePath& file_path, | 525 void UploadDataStreamTest::FileChangedHelper(const base::FilePath& file_path, |
517 const base::Time& time, | 526 const base::Time& time, |
518 bool error_expected) { | 527 bool error_expected) { |
519 // Don't use element_readers_ here, as this function is called twice, and | 528 // Don't use element_readers_ here, as this function is called twice, and |
520 // reusing element_readers_ is wrong. | 529 // reusing element_readers_ is wrong. |
521 ScopedVector<UploadElementReader> element_readers; | 530 ScopedVector<UploadElementReader> element_readers; |
522 element_readers.push_back(new UploadFileElementReader( | 531 element_readers.push_back(new UploadFileElementReader( |
523 base::MessageLoopProxy::current(), file_path, 1, 2, time)); | 532 base::MessageLoopProxy::current().get(), file_path, 1, 2, time)); |
524 | 533 |
525 TestCompletionCallback init_callback; | 534 TestCompletionCallback init_callback; |
526 UploadDataStream stream(&element_readers, 0); | 535 UploadDataStream stream(&element_readers, 0); |
527 ASSERT_EQ(ERR_IO_PENDING, stream.Init(init_callback.callback())); | 536 ASSERT_EQ(ERR_IO_PENDING, stream.Init(init_callback.callback())); |
528 int error_code = init_callback.WaitForResult(); | 537 int error_code = init_callback.WaitForResult(); |
529 if (error_expected) | 538 if (error_expected) |
530 ASSERT_EQ(ERR_UPLOAD_FILE_CHANGED, error_code); | 539 ASSERT_EQ(ERR_UPLOAD_FILE_CHANGED, error_code); |
531 else | 540 else |
532 ASSERT_EQ(OK, error_code); | 541 ASSERT_EQ(OK, error_code); |
533 } | 542 } |
(...skipping 20 matching lines...) Expand all Loading... |
554 TEST_F(UploadDataStreamTest, MultipleInit) { | 563 TEST_F(UploadDataStreamTest, MultipleInit) { |
555 base::FilePath temp_file_path; | 564 base::FilePath temp_file_path; |
556 ASSERT_TRUE(file_util::CreateTemporaryFileInDir(temp_dir_.path(), | 565 ASSERT_TRUE(file_util::CreateTemporaryFileInDir(temp_dir_.path(), |
557 &temp_file_path)); | 566 &temp_file_path)); |
558 ASSERT_EQ(static_cast<int>(kTestDataSize), | 567 ASSERT_EQ(static_cast<int>(kTestDataSize), |
559 file_util::WriteFile(temp_file_path, kTestData, kTestDataSize)); | 568 file_util::WriteFile(temp_file_path, kTestData, kTestDataSize)); |
560 | 569 |
561 // Prepare data. | 570 // Prepare data. |
562 element_readers_.push_back(new UploadBytesElementReader( | 571 element_readers_.push_back(new UploadBytesElementReader( |
563 kTestData, kTestDataSize)); | 572 kTestData, kTestDataSize)); |
564 element_readers_.push_back(new UploadFileElementReader( | 573 element_readers_.push_back( |
565 base::MessageLoopProxy::current(), | 574 new UploadFileElementReader(base::MessageLoopProxy::current().get(), |
566 temp_file_path, 0, kuint64max, base::Time())); | 575 temp_file_path, |
| 576 0, |
| 577 kuint64max, |
| 578 base::Time())); |
567 UploadDataStream stream(&element_readers_, 0); | 579 UploadDataStream stream(&element_readers_, 0); |
568 | 580 |
569 std::string expected_data(kTestData, kTestData + kTestDataSize); | 581 std::string expected_data(kTestData, kTestData + kTestDataSize); |
570 expected_data += expected_data; | 582 expected_data += expected_data; |
571 | 583 |
572 // Call Init(). | 584 // Call Init(). |
573 TestCompletionCallback init_callback1; | 585 TestCompletionCallback init_callback1; |
574 ASSERT_EQ(ERR_IO_PENDING, stream.Init(init_callback1.callback())); | 586 ASSERT_EQ(ERR_IO_PENDING, stream.Init(init_callback1.callback())); |
575 ASSERT_EQ(OK, init_callback1.WaitForResult()); | 587 ASSERT_EQ(OK, init_callback1.WaitForResult()); |
576 EXPECT_FALSE(stream.IsEOF()); | 588 EXPECT_FALSE(stream.IsEOF()); |
(...skipping 19 matching lines...) Expand all Loading... |
596 base::FilePath temp_file_path; | 608 base::FilePath temp_file_path; |
597 ASSERT_TRUE(file_util::CreateTemporaryFileInDir(temp_dir_.path(), | 609 ASSERT_TRUE(file_util::CreateTemporaryFileInDir(temp_dir_.path(), |
598 &temp_file_path)); | 610 &temp_file_path)); |
599 ASSERT_EQ(static_cast<int>(kTestDataSize), | 611 ASSERT_EQ(static_cast<int>(kTestDataSize), |
600 file_util::WriteFile(temp_file_path, kTestData, kTestDataSize)); | 612 file_util::WriteFile(temp_file_path, kTestData, kTestDataSize)); |
601 TestCompletionCallback test_callback; | 613 TestCompletionCallback test_callback; |
602 | 614 |
603 // Prepare data. | 615 // Prepare data. |
604 element_readers_.push_back(new UploadBytesElementReader( | 616 element_readers_.push_back(new UploadBytesElementReader( |
605 kTestData, kTestDataSize)); | 617 kTestData, kTestDataSize)); |
606 element_readers_.push_back(new UploadFileElementReader( | 618 element_readers_.push_back( |
607 base::MessageLoopProxy::current(), | 619 new UploadFileElementReader(base::MessageLoopProxy::current().get(), |
608 temp_file_path, 0, kuint64max, base::Time())); | 620 temp_file_path, |
| 621 0, |
| 622 kuint64max, |
| 623 base::Time())); |
609 UploadDataStream stream(&element_readers_, 0); | 624 UploadDataStream stream(&element_readers_, 0); |
610 | 625 |
611 std::string expected_data(kTestData, kTestData + kTestDataSize); | 626 std::string expected_data(kTestData, kTestData + kTestDataSize); |
612 expected_data += expected_data; | 627 expected_data += expected_data; |
613 | 628 |
614 // Call Init(). | 629 // Call Init(). |
615 ASSERT_EQ(ERR_IO_PENDING, stream.Init(test_callback.callback())); | 630 ASSERT_EQ(ERR_IO_PENDING, stream.Init(test_callback.callback())); |
616 EXPECT_EQ(OK, test_callback.WaitForResult()); | 631 EXPECT_EQ(OK, test_callback.WaitForResult()); |
617 EXPECT_FALSE(stream.IsEOF()); | 632 EXPECT_FALSE(stream.IsEOF()); |
618 EXPECT_EQ(kTestDataSize*2, stream.size()); | 633 EXPECT_EQ(kTestDataSize*2, stream.size()); |
(...skipping 16 matching lines...) Expand all Loading... |
635 TEST_F(UploadDataStreamTest, InitToReset) { | 650 TEST_F(UploadDataStreamTest, InitToReset) { |
636 base::FilePath temp_file_path; | 651 base::FilePath temp_file_path; |
637 ASSERT_TRUE(file_util::CreateTemporaryFileInDir(temp_dir_.path(), | 652 ASSERT_TRUE(file_util::CreateTemporaryFileInDir(temp_dir_.path(), |
638 &temp_file_path)); | 653 &temp_file_path)); |
639 ASSERT_EQ(static_cast<int>(kTestDataSize), | 654 ASSERT_EQ(static_cast<int>(kTestDataSize), |
640 file_util::WriteFile(temp_file_path, kTestData, kTestDataSize)); | 655 file_util::WriteFile(temp_file_path, kTestData, kTestDataSize)); |
641 | 656 |
642 // Prepare data. | 657 // Prepare data. |
643 element_readers_.push_back(new UploadBytesElementReader( | 658 element_readers_.push_back(new UploadBytesElementReader( |
644 kTestData, kTestDataSize)); | 659 kTestData, kTestDataSize)); |
645 element_readers_.push_back(new UploadFileElementReader( | 660 element_readers_.push_back( |
646 base::MessageLoopProxy::current(), | 661 new UploadFileElementReader(base::MessageLoopProxy::current().get(), |
647 temp_file_path, 0, kuint64max, base::Time())); | 662 temp_file_path, |
| 663 0, |
| 664 kuint64max, |
| 665 base::Time())); |
648 UploadDataStream stream(&element_readers_, 0); | 666 UploadDataStream stream(&element_readers_, 0); |
649 | 667 |
650 std::vector<char> expected_data(kTestData, kTestData + kTestDataSize); | 668 std::vector<char> expected_data(kTestData, kTestData + kTestDataSize); |
651 expected_data.insert(expected_data.end(), expected_data.begin(), | 669 expected_data.insert(expected_data.end(), expected_data.begin(), |
652 expected_data.begin() + kTestDataSize); | 670 expected_data.begin() + kTestDataSize); |
653 | 671 |
654 // Call Init(). | 672 // Call Init(). |
655 TestCompletionCallback init_callback1; | 673 TestCompletionCallback init_callback1; |
656 ASSERT_EQ(ERR_IO_PENDING, stream.Init(init_callback1.callback())); | 674 ASSERT_EQ(ERR_IO_PENDING, stream.Init(init_callback1.callback())); |
657 EXPECT_EQ(OK, init_callback1.WaitForResult()); | 675 EXPECT_EQ(OK, init_callback1.WaitForResult()); |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
689 TEST_F(UploadDataStreamTest, InitDuringAsyncInit) { | 707 TEST_F(UploadDataStreamTest, InitDuringAsyncInit) { |
690 base::FilePath temp_file_path; | 708 base::FilePath temp_file_path; |
691 ASSERT_TRUE(file_util::CreateTemporaryFileInDir(temp_dir_.path(), | 709 ASSERT_TRUE(file_util::CreateTemporaryFileInDir(temp_dir_.path(), |
692 &temp_file_path)); | 710 &temp_file_path)); |
693 ASSERT_EQ(static_cast<int>(kTestDataSize), | 711 ASSERT_EQ(static_cast<int>(kTestDataSize), |
694 file_util::WriteFile(temp_file_path, kTestData, kTestDataSize)); | 712 file_util::WriteFile(temp_file_path, kTestData, kTestDataSize)); |
695 | 713 |
696 // Prepare data. | 714 // Prepare data. |
697 element_readers_.push_back(new UploadBytesElementReader( | 715 element_readers_.push_back(new UploadBytesElementReader( |
698 kTestData, kTestDataSize)); | 716 kTestData, kTestDataSize)); |
699 element_readers_.push_back(new UploadFileElementReader( | 717 element_readers_.push_back( |
700 base::MessageLoopProxy::current(), | 718 new UploadFileElementReader(base::MessageLoopProxy::current().get(), |
701 temp_file_path, 0, kuint64max, base::Time())); | 719 temp_file_path, |
| 720 0, |
| 721 kuint64max, |
| 722 base::Time())); |
702 UploadDataStream stream(&element_readers_, 0); | 723 UploadDataStream stream(&element_readers_, 0); |
703 | 724 |
704 std::vector<char> expected_data(kTestData, kTestData + kTestDataSize); | 725 std::vector<char> expected_data(kTestData, kTestData + kTestDataSize); |
705 expected_data.insert(expected_data.end(), expected_data.begin(), | 726 expected_data.insert(expected_data.end(), expected_data.begin(), |
706 expected_data.begin() + kTestDataSize); | 727 expected_data.begin() + kTestDataSize); |
707 | 728 |
708 // Start Init. | 729 // Start Init. |
709 TestCompletionCallback init_callback1; | 730 TestCompletionCallback init_callback1; |
710 EXPECT_EQ(ERR_IO_PENDING, stream.Init(init_callback1.callback())); | 731 EXPECT_EQ(ERR_IO_PENDING, stream.Init(init_callback1.callback())); |
711 | 732 |
(...skipping 22 matching lines...) Expand all Loading... |
734 TEST_F(UploadDataStreamTest, InitDuringAsyncRead) { | 755 TEST_F(UploadDataStreamTest, InitDuringAsyncRead) { |
735 base::FilePath temp_file_path; | 756 base::FilePath temp_file_path; |
736 ASSERT_TRUE(file_util::CreateTemporaryFileInDir(temp_dir_.path(), | 757 ASSERT_TRUE(file_util::CreateTemporaryFileInDir(temp_dir_.path(), |
737 &temp_file_path)); | 758 &temp_file_path)); |
738 ASSERT_EQ(static_cast<int>(kTestDataSize), | 759 ASSERT_EQ(static_cast<int>(kTestDataSize), |
739 file_util::WriteFile(temp_file_path, kTestData, kTestDataSize)); | 760 file_util::WriteFile(temp_file_path, kTestData, kTestDataSize)); |
740 | 761 |
741 // Prepare data. | 762 // Prepare data. |
742 element_readers_.push_back(new UploadBytesElementReader( | 763 element_readers_.push_back(new UploadBytesElementReader( |
743 kTestData, kTestDataSize)); | 764 kTestData, kTestDataSize)); |
744 element_readers_.push_back(new UploadFileElementReader( | 765 element_readers_.push_back( |
745 base::MessageLoopProxy::current(), | 766 new UploadFileElementReader(base::MessageLoopProxy::current().get(), |
746 temp_file_path, 0, kuint64max, base::Time())); | 767 temp_file_path, |
| 768 0, |
| 769 kuint64max, |
| 770 base::Time())); |
747 UploadDataStream stream(&element_readers_, 0); | 771 UploadDataStream stream(&element_readers_, 0); |
748 | 772 |
749 std::vector<char> expected_data(kTestData, kTestData + kTestDataSize); | 773 std::vector<char> expected_data(kTestData, kTestData + kTestDataSize); |
750 expected_data.insert(expected_data.end(), expected_data.begin(), | 774 expected_data.insert(expected_data.end(), expected_data.begin(), |
751 expected_data.begin() + kTestDataSize); | 775 expected_data.begin() + kTestDataSize); |
752 | 776 |
753 // Call Init(). | 777 // Call Init(). |
754 TestCompletionCallback init_callback1; | 778 TestCompletionCallback init_callback1; |
755 ASSERT_EQ(ERR_IO_PENDING, stream.Init(init_callback1.callback())); | 779 ASSERT_EQ(ERR_IO_PENDING, stream.Init(init_callback1.callback())); |
756 EXPECT_EQ(OK, init_callback1.WaitForResult()); | 780 EXPECT_EQ(OK, init_callback1.WaitForResult()); |
(...skipping 24 matching lines...) Expand all Loading... |
781 wrapped_buffer2.get(), buf2.size(), read_callback2.callback())); | 805 wrapped_buffer2.get(), buf2.size(), read_callback2.callback())); |
782 EXPECT_EQ(static_cast<int>(buf2.size()), read_callback2.WaitForResult()); | 806 EXPECT_EQ(static_cast<int>(buf2.size()), read_callback2.WaitForResult()); |
783 EXPECT_EQ(expected_data, buf2); | 807 EXPECT_EQ(expected_data, buf2); |
784 EXPECT_TRUE(stream.IsEOF()); | 808 EXPECT_TRUE(stream.IsEOF()); |
785 | 809 |
786 // Make sure callbacks are not called for cancelled operations. | 810 // Make sure callbacks are not called for cancelled operations. |
787 EXPECT_FALSE(read_callback1.have_result()); | 811 EXPECT_FALSE(read_callback1.have_result()); |
788 } | 812 } |
789 | 813 |
790 } // namespace net | 814 } // namespace net |
OLD | NEW |