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 151 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
162 } | 162 } |
163 | 163 |
164 TEST_F(UploadDataStreamTest, File) { | 164 TEST_F(UploadDataStreamTest, File) { |
165 FilePath temp_file_path; | 165 FilePath temp_file_path; |
166 ASSERT_TRUE(file_util::CreateTemporaryFileInDir(temp_dir_.path(), | 166 ASSERT_TRUE(file_util::CreateTemporaryFileInDir(temp_dir_.path(), |
167 &temp_file_path)); | 167 &temp_file_path)); |
168 ASSERT_EQ(static_cast<int>(kTestDataSize), | 168 ASSERT_EQ(static_cast<int>(kTestDataSize), |
169 file_util::WriteFile(temp_file_path, kTestData, kTestDataSize)); | 169 file_util::WriteFile(temp_file_path, kTestData, kTestDataSize)); |
170 | 170 |
171 element_readers_.push_back(new UploadFileElementReader( | 171 element_readers_.push_back(new UploadFileElementReader( |
| 172 base::MessageLoopProxy::current(), |
172 temp_file_path, 0, kuint64max, base::Time())); | 173 temp_file_path, 0, kuint64max, base::Time())); |
173 | 174 |
174 TestCompletionCallback init_callback; | 175 TestCompletionCallback init_callback; |
175 UploadDataStream stream(&element_readers_, 0); | 176 UploadDataStream stream(&element_readers_, 0); |
176 ASSERT_EQ(ERR_IO_PENDING, stream.Init(init_callback.callback())); | 177 ASSERT_EQ(ERR_IO_PENDING, stream.Init(init_callback.callback())); |
177 ASSERT_EQ(OK, init_callback.WaitForResult()); | 178 ASSERT_EQ(OK, init_callback.WaitForResult()); |
178 EXPECT_FALSE(stream.IsInMemory()); | 179 EXPECT_FALSE(stream.IsInMemory()); |
179 EXPECT_EQ(kTestDataSize, stream.size()); | 180 EXPECT_EQ(kTestDataSize, stream.size()); |
180 EXPECT_EQ(0U, stream.position()); | 181 EXPECT_EQ(0U, stream.position()); |
181 EXPECT_FALSE(stream.IsEOF()); | 182 EXPECT_FALSE(stream.IsEOF()); |
(...skipping 13 matching lines...) Expand all Loading... |
195 ASSERT_TRUE(file_util::CreateTemporaryFileInDir(temp_dir_.path(), | 196 ASSERT_TRUE(file_util::CreateTemporaryFileInDir(temp_dir_.path(), |
196 &temp_file_path)); | 197 &temp_file_path)); |
197 ASSERT_EQ(static_cast<int>(kTestDataSize), | 198 ASSERT_EQ(static_cast<int>(kTestDataSize), |
198 file_util::WriteFile(temp_file_path, kTestData, kTestDataSize)); | 199 file_util::WriteFile(temp_file_path, kTestData, kTestDataSize)); |
199 const uint64 kFakeSize = kTestDataSize*2; | 200 const uint64 kFakeSize = kTestDataSize*2; |
200 | 201 |
201 UploadFileElementReader::ScopedOverridingContentLengthForTests | 202 UploadFileElementReader::ScopedOverridingContentLengthForTests |
202 overriding_content_length(kFakeSize); | 203 overriding_content_length(kFakeSize); |
203 | 204 |
204 element_readers_.push_back(new UploadFileElementReader( | 205 element_readers_.push_back(new UploadFileElementReader( |
| 206 base::MessageLoopProxy::current(), |
205 temp_file_path, 0, kuint64max, base::Time())); | 207 temp_file_path, 0, kuint64max, base::Time())); |
206 | 208 |
207 TestCompletionCallback init_callback; | 209 TestCompletionCallback init_callback; |
208 UploadDataStream stream(&element_readers_, 0); | 210 UploadDataStream stream(&element_readers_, 0); |
209 ASSERT_EQ(ERR_IO_PENDING, stream.Init(init_callback.callback())); | 211 ASSERT_EQ(ERR_IO_PENDING, stream.Init(init_callback.callback())); |
210 ASSERT_EQ(OK, init_callback.WaitForResult()); | 212 ASSERT_EQ(OK, init_callback.WaitForResult()); |
211 EXPECT_FALSE(stream.IsInMemory()); | 213 EXPECT_FALSE(stream.IsInMemory()); |
212 EXPECT_EQ(kFakeSize, stream.size()); | 214 EXPECT_EQ(kFakeSize, stream.size()); |
213 EXPECT_EQ(0U, stream.position()); | 215 EXPECT_EQ(0U, stream.position()); |
214 EXPECT_FALSE(stream.IsEOF()); | 216 EXPECT_FALSE(stream.IsEOF()); |
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
306 TEST_F(UploadDataStreamTest, FileAndBytes) { | 308 TEST_F(UploadDataStreamTest, FileAndBytes) { |
307 FilePath temp_file_path; | 309 FilePath temp_file_path; |
308 ASSERT_TRUE(file_util::CreateTemporaryFileInDir(temp_dir_.path(), | 310 ASSERT_TRUE(file_util::CreateTemporaryFileInDir(temp_dir_.path(), |
309 &temp_file_path)); | 311 &temp_file_path)); |
310 ASSERT_EQ(static_cast<int>(kTestDataSize), | 312 ASSERT_EQ(static_cast<int>(kTestDataSize), |
311 file_util::WriteFile(temp_file_path, kTestData, kTestDataSize)); | 313 file_util::WriteFile(temp_file_path, kTestData, kTestDataSize)); |
312 | 314 |
313 const uint64 kFileRangeOffset = 1; | 315 const uint64 kFileRangeOffset = 1; |
314 const uint64 kFileRangeLength = 4; | 316 const uint64 kFileRangeLength = 4; |
315 element_readers_.push_back(new UploadFileElementReader( | 317 element_readers_.push_back(new UploadFileElementReader( |
| 318 base::MessageLoopProxy::current(), |
316 temp_file_path, kFileRangeOffset, kFileRangeLength, base::Time())); | 319 temp_file_path, kFileRangeOffset, kFileRangeLength, base::Time())); |
317 | 320 |
318 element_readers_.push_back(new UploadBytesElementReader( | 321 element_readers_.push_back(new UploadBytesElementReader( |
319 kTestData, kTestDataSize)); | 322 kTestData, kTestDataSize)); |
320 | 323 |
321 const uint64 kStreamSize = kTestDataSize + kFileRangeLength; | 324 const uint64 kStreamSize = kTestDataSize + kFileRangeLength; |
322 TestCompletionCallback init_callback; | 325 TestCompletionCallback init_callback; |
323 UploadDataStream stream(&element_readers_, 0); | 326 UploadDataStream stream(&element_readers_, 0); |
324 ASSERT_EQ(ERR_IO_PENDING, stream.Init(init_callback.callback())); | 327 ASSERT_EQ(ERR_IO_PENDING, stream.Init(init_callback.callback())); |
325 ASSERT_EQ(OK, init_callback.WaitForResult()); | 328 ASSERT_EQ(OK, init_callback.WaitForResult()); |
(...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
502 stream.Read(buf, kTestDataSize*2, read_callback3.callback())); | 505 stream.Read(buf, kTestDataSize*2, read_callback3.callback())); |
503 EXPECT_EQ(static_cast<int>(kTestDataSize*2), read_callback3.WaitForResult()); | 506 EXPECT_EQ(static_cast<int>(kTestDataSize*2), read_callback3.WaitForResult()); |
504 } | 507 } |
505 | 508 |
506 void UploadDataStreamTest::FileChangedHelper(const FilePath& file_path, | 509 void UploadDataStreamTest::FileChangedHelper(const FilePath& file_path, |
507 const base::Time& time, | 510 const base::Time& time, |
508 bool error_expected) { | 511 bool error_expected) { |
509 // Don't use element_readers_ here, as this function is called twice, and | 512 // Don't use element_readers_ here, as this function is called twice, and |
510 // reusing element_readers_ is wrong. | 513 // reusing element_readers_ is wrong. |
511 ScopedVector<UploadElementReader> element_readers; | 514 ScopedVector<UploadElementReader> element_readers; |
512 element_readers.push_back(new UploadFileElementReader(file_path, 1, 2, time)); | 515 element_readers.push_back(new UploadFileElementReader( |
| 516 base::MessageLoopProxy::current(), file_path, 1, 2, time)); |
513 | 517 |
514 TestCompletionCallback init_callback; | 518 TestCompletionCallback init_callback; |
515 UploadDataStream stream(&element_readers, 0); | 519 UploadDataStream stream(&element_readers, 0); |
516 ASSERT_EQ(ERR_IO_PENDING, stream.Init(init_callback.callback())); | 520 ASSERT_EQ(ERR_IO_PENDING, stream.Init(init_callback.callback())); |
517 int error_code = init_callback.WaitForResult(); | 521 int error_code = init_callback.WaitForResult(); |
518 if (error_expected) | 522 if (error_expected) |
519 ASSERT_EQ(ERR_UPLOAD_FILE_CHANGED, error_code); | 523 ASSERT_EQ(ERR_UPLOAD_FILE_CHANGED, error_code); |
520 else | 524 else |
521 ASSERT_EQ(OK, error_code); | 525 ASSERT_EQ(OK, error_code); |
522 } | 526 } |
(...skipping 21 matching lines...) Expand all Loading... |
544 FilePath temp_file_path; | 548 FilePath temp_file_path; |
545 ASSERT_TRUE(file_util::CreateTemporaryFileInDir(temp_dir_.path(), | 549 ASSERT_TRUE(file_util::CreateTemporaryFileInDir(temp_dir_.path(), |
546 &temp_file_path)); | 550 &temp_file_path)); |
547 ASSERT_EQ(static_cast<int>(kTestDataSize), | 551 ASSERT_EQ(static_cast<int>(kTestDataSize), |
548 file_util::WriteFile(temp_file_path, kTestData, kTestDataSize)); | 552 file_util::WriteFile(temp_file_path, kTestData, kTestDataSize)); |
549 | 553 |
550 // Prepare data. | 554 // Prepare data. |
551 element_readers_.push_back(new UploadBytesElementReader( | 555 element_readers_.push_back(new UploadBytesElementReader( |
552 kTestData, kTestDataSize)); | 556 kTestData, kTestDataSize)); |
553 element_readers_.push_back(new UploadFileElementReader( | 557 element_readers_.push_back(new UploadFileElementReader( |
| 558 base::MessageLoopProxy::current(), |
554 temp_file_path, 0, kuint64max, base::Time())); | 559 temp_file_path, 0, kuint64max, base::Time())); |
555 UploadDataStream stream(&element_readers_, 0); | 560 UploadDataStream stream(&element_readers_, 0); |
556 | 561 |
557 std::string expected_data(kTestData, kTestData + kTestDataSize); | 562 std::string expected_data(kTestData, kTestData + kTestDataSize); |
558 expected_data += expected_data; | 563 expected_data += expected_data; |
559 | 564 |
560 // Call Init(). | 565 // Call Init(). |
561 TestCompletionCallback init_callback1; | 566 TestCompletionCallback init_callback1; |
562 ASSERT_EQ(ERR_IO_PENDING, stream.Init(init_callback1.callback())); | 567 ASSERT_EQ(ERR_IO_PENDING, stream.Init(init_callback1.callback())); |
563 ASSERT_EQ(OK, init_callback1.WaitForResult()); | 568 ASSERT_EQ(OK, init_callback1.WaitForResult()); |
(...skipping 21 matching lines...) Expand all Loading... |
585 ASSERT_TRUE(file_util::CreateTemporaryFileInDir(temp_dir_.path(), | 590 ASSERT_TRUE(file_util::CreateTemporaryFileInDir(temp_dir_.path(), |
586 &temp_file_path)); | 591 &temp_file_path)); |
587 ASSERT_EQ(static_cast<int>(kTestDataSize), | 592 ASSERT_EQ(static_cast<int>(kTestDataSize), |
588 file_util::WriteFile(temp_file_path, kTestData, kTestDataSize)); | 593 file_util::WriteFile(temp_file_path, kTestData, kTestDataSize)); |
589 TestCompletionCallback test_callback; | 594 TestCompletionCallback test_callback; |
590 | 595 |
591 // Prepare data. | 596 // Prepare data. |
592 element_readers_.push_back(new UploadBytesElementReader( | 597 element_readers_.push_back(new UploadBytesElementReader( |
593 kTestData, kTestDataSize)); | 598 kTestData, kTestDataSize)); |
594 element_readers_.push_back(new UploadFileElementReader( | 599 element_readers_.push_back(new UploadFileElementReader( |
| 600 base::MessageLoopProxy::current(), |
595 temp_file_path, 0, kuint64max, base::Time())); | 601 temp_file_path, 0, kuint64max, base::Time())); |
596 UploadDataStream stream(&element_readers_, 0); | 602 UploadDataStream stream(&element_readers_, 0); |
597 | 603 |
598 std::string expected_data(kTestData, kTestData + kTestDataSize); | 604 std::string expected_data(kTestData, kTestData + kTestDataSize); |
599 expected_data += expected_data; | 605 expected_data += expected_data; |
600 | 606 |
601 // Call Init(). | 607 // Call Init(). |
602 ASSERT_EQ(ERR_IO_PENDING, stream.Init(test_callback.callback())); | 608 ASSERT_EQ(ERR_IO_PENDING, stream.Init(test_callback.callback())); |
603 EXPECT_EQ(OK, test_callback.WaitForResult()); | 609 EXPECT_EQ(OK, test_callback.WaitForResult()); |
604 EXPECT_FALSE(stream.IsEOF()); | 610 EXPECT_FALSE(stream.IsEOF()); |
(...skipping 18 matching lines...) Expand all Loading... |
623 FilePath temp_file_path; | 629 FilePath temp_file_path; |
624 ASSERT_TRUE(file_util::CreateTemporaryFileInDir(temp_dir_.path(), | 630 ASSERT_TRUE(file_util::CreateTemporaryFileInDir(temp_dir_.path(), |
625 &temp_file_path)); | 631 &temp_file_path)); |
626 ASSERT_EQ(static_cast<int>(kTestDataSize), | 632 ASSERT_EQ(static_cast<int>(kTestDataSize), |
627 file_util::WriteFile(temp_file_path, kTestData, kTestDataSize)); | 633 file_util::WriteFile(temp_file_path, kTestData, kTestDataSize)); |
628 | 634 |
629 // Prepare data. | 635 // Prepare data. |
630 element_readers_.push_back(new UploadBytesElementReader( | 636 element_readers_.push_back(new UploadBytesElementReader( |
631 kTestData, kTestDataSize)); | 637 kTestData, kTestDataSize)); |
632 element_readers_.push_back(new UploadFileElementReader( | 638 element_readers_.push_back(new UploadFileElementReader( |
| 639 base::MessageLoopProxy::current(), |
633 temp_file_path, 0, kuint64max, base::Time())); | 640 temp_file_path, 0, kuint64max, base::Time())); |
634 UploadDataStream stream(&element_readers_, 0); | 641 UploadDataStream stream(&element_readers_, 0); |
635 | 642 |
636 std::vector<char> expected_data(kTestData, kTestData + kTestDataSize); | 643 std::vector<char> expected_data(kTestData, kTestData + kTestDataSize); |
637 expected_data.insert(expected_data.end(), expected_data.begin(), | 644 expected_data.insert(expected_data.end(), expected_data.begin(), |
638 expected_data.begin() + kTestDataSize); | 645 expected_data.begin() + kTestDataSize); |
639 | 646 |
640 // Call Init(). | 647 // Call Init(). |
641 TestCompletionCallback init_callback1; | 648 TestCompletionCallback init_callback1; |
642 ASSERT_EQ(ERR_IO_PENDING, stream.Init(init_callback1.callback())); | 649 ASSERT_EQ(ERR_IO_PENDING, stream.Init(init_callback1.callback())); |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
674 FilePath temp_file_path; | 681 FilePath temp_file_path; |
675 ASSERT_TRUE(file_util::CreateTemporaryFileInDir(temp_dir_.path(), | 682 ASSERT_TRUE(file_util::CreateTemporaryFileInDir(temp_dir_.path(), |
676 &temp_file_path)); | 683 &temp_file_path)); |
677 ASSERT_EQ(static_cast<int>(kTestDataSize), | 684 ASSERT_EQ(static_cast<int>(kTestDataSize), |
678 file_util::WriteFile(temp_file_path, kTestData, kTestDataSize)); | 685 file_util::WriteFile(temp_file_path, kTestData, kTestDataSize)); |
679 | 686 |
680 // Prepare data. | 687 // Prepare data. |
681 element_readers_.push_back(new UploadBytesElementReader( | 688 element_readers_.push_back(new UploadBytesElementReader( |
682 kTestData, kTestDataSize)); | 689 kTestData, kTestDataSize)); |
683 element_readers_.push_back(new UploadFileElementReader( | 690 element_readers_.push_back(new UploadFileElementReader( |
| 691 base::MessageLoopProxy::current(), |
684 temp_file_path, 0, kuint64max, base::Time())); | 692 temp_file_path, 0, kuint64max, base::Time())); |
685 UploadDataStream stream(&element_readers_, 0); | 693 UploadDataStream stream(&element_readers_, 0); |
686 | 694 |
687 std::vector<char> expected_data(kTestData, kTestData + kTestDataSize); | 695 std::vector<char> expected_data(kTestData, kTestData + kTestDataSize); |
688 expected_data.insert(expected_data.end(), expected_data.begin(), | 696 expected_data.insert(expected_data.end(), expected_data.begin(), |
689 expected_data.begin() + kTestDataSize); | 697 expected_data.begin() + kTestDataSize); |
690 | 698 |
691 // Start Init. | 699 // Start Init. |
692 TestCompletionCallback init_callback1; | 700 TestCompletionCallback init_callback1; |
693 EXPECT_EQ(ERR_IO_PENDING, stream.Init(init_callback1.callback())); | 701 EXPECT_EQ(ERR_IO_PENDING, stream.Init(init_callback1.callback())); |
(...skipping 23 matching lines...) Expand all Loading... |
717 FilePath temp_file_path; | 725 FilePath temp_file_path; |
718 ASSERT_TRUE(file_util::CreateTemporaryFileInDir(temp_dir_.path(), | 726 ASSERT_TRUE(file_util::CreateTemporaryFileInDir(temp_dir_.path(), |
719 &temp_file_path)); | 727 &temp_file_path)); |
720 ASSERT_EQ(static_cast<int>(kTestDataSize), | 728 ASSERT_EQ(static_cast<int>(kTestDataSize), |
721 file_util::WriteFile(temp_file_path, kTestData, kTestDataSize)); | 729 file_util::WriteFile(temp_file_path, kTestData, kTestDataSize)); |
722 | 730 |
723 // Prepare data. | 731 // Prepare data. |
724 element_readers_.push_back(new UploadBytesElementReader( | 732 element_readers_.push_back(new UploadBytesElementReader( |
725 kTestData, kTestDataSize)); | 733 kTestData, kTestDataSize)); |
726 element_readers_.push_back(new UploadFileElementReader( | 734 element_readers_.push_back(new UploadFileElementReader( |
| 735 base::MessageLoopProxy::current(), |
727 temp_file_path, 0, kuint64max, base::Time())); | 736 temp_file_path, 0, kuint64max, base::Time())); |
728 UploadDataStream stream(&element_readers_, 0); | 737 UploadDataStream stream(&element_readers_, 0); |
729 | 738 |
730 std::vector<char> expected_data(kTestData, kTestData + kTestDataSize); | 739 std::vector<char> expected_data(kTestData, kTestData + kTestDataSize); |
731 expected_data.insert(expected_data.end(), expected_data.begin(), | 740 expected_data.insert(expected_data.end(), expected_data.begin(), |
732 expected_data.begin() + kTestDataSize); | 741 expected_data.begin() + kTestDataSize); |
733 | 742 |
734 // Call Init(). | 743 // Call Init(). |
735 TestCompletionCallback init_callback1; | 744 TestCompletionCallback init_callback1; |
736 ASSERT_EQ(ERR_IO_PENDING, stream.Init(init_callback1.callback())); | 745 ASSERT_EQ(ERR_IO_PENDING, stream.Init(init_callback1.callback())); |
(...skipping 23 matching lines...) Expand all Loading... |
760 read_callback2.callback())); | 769 read_callback2.callback())); |
761 EXPECT_EQ(static_cast<int>(buf2.size()), read_callback2.WaitForResult()); | 770 EXPECT_EQ(static_cast<int>(buf2.size()), read_callback2.WaitForResult()); |
762 EXPECT_EQ(expected_data, buf2); | 771 EXPECT_EQ(expected_data, buf2); |
763 EXPECT_TRUE(stream.IsEOF()); | 772 EXPECT_TRUE(stream.IsEOF()); |
764 | 773 |
765 // Make sure callbacks are not called for cancelled operations. | 774 // Make sure callbacks are not called for cancelled operations. |
766 EXPECT_FALSE(read_callback1.have_result()); | 775 EXPECT_FALSE(read_callback1.have_result()); |
767 } | 776 } |
768 | 777 |
769 } // namespace net | 778 } // namespace net |
OLD | NEW |