| 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 |