| 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/elements_upload_data_stream.h" | 5 #include "net/base/elements_upload_data_stream.h" |
| 6 | 6 |
| 7 #include <stdint.h> |
| 8 |
| 7 #include <algorithm> | 9 #include <algorithm> |
| 10 #include <limits> |
| 8 #include <vector> | 11 #include <vector> |
| 9 | 12 |
| 10 #include "base/basictypes.h" | 13 #include "base/basictypes.h" |
| 11 #include "base/bind.h" | 14 #include "base/bind.h" |
| 12 #include "base/files/file_path.h" | 15 #include "base/files/file_path.h" |
| 13 #include "base/files/file_util.h" | 16 #include "base/files/file_util.h" |
| 14 #include "base/files/scoped_temp_dir.h" | 17 #include "base/files/scoped_temp_dir.h" |
| 15 #include "base/location.h" | 18 #include "base/location.h" |
| 16 #include "base/memory/scoped_ptr.h" | 19 #include "base/memory/scoped_ptr.h" |
| 17 #include "base/message_loop/message_loop.h" | 20 #include "base/message_loop/message_loop.h" |
| (...skipping 158 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 176 } | 179 } |
| 177 | 180 |
| 178 TEST_F(ElementsUploadDataStreamTest, File) { | 181 TEST_F(ElementsUploadDataStreamTest, File) { |
| 179 base::FilePath temp_file_path; | 182 base::FilePath temp_file_path; |
| 180 ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_dir_.path(), | 183 ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_dir_.path(), |
| 181 &temp_file_path)); | 184 &temp_file_path)); |
| 182 ASSERT_EQ(static_cast<int>(kTestDataSize), | 185 ASSERT_EQ(static_cast<int>(kTestDataSize), |
| 183 base::WriteFile(temp_file_path, kTestData, kTestDataSize)); | 186 base::WriteFile(temp_file_path, kTestData, kTestDataSize)); |
| 184 | 187 |
| 185 element_readers_.push_back(make_scoped_ptr(new UploadFileElementReader( | 188 element_readers_.push_back(make_scoped_ptr(new UploadFileElementReader( |
| 186 base::ThreadTaskRunnerHandle::Get().get(), temp_file_path, 0, kuint64max, | 189 base::ThreadTaskRunnerHandle::Get().get(), temp_file_path, 0, |
| 187 base::Time()))); | 190 std::numeric_limits<uint64_t>::max(), base::Time()))); |
| 188 | 191 |
| 189 TestCompletionCallback init_callback; | 192 TestCompletionCallback init_callback; |
| 190 scoped_ptr<UploadDataStream> stream( | 193 scoped_ptr<UploadDataStream> stream( |
| 191 new ElementsUploadDataStream(std::move(element_readers_), 0)); | 194 new ElementsUploadDataStream(std::move(element_readers_), 0)); |
| 192 ASSERT_EQ(ERR_IO_PENDING, stream->Init(init_callback.callback())); | 195 ASSERT_EQ(ERR_IO_PENDING, stream->Init(init_callback.callback())); |
| 193 ASSERT_EQ(OK, init_callback.WaitForResult()); | 196 ASSERT_EQ(OK, init_callback.WaitForResult()); |
| 194 EXPECT_FALSE(stream->IsInMemory()); | 197 EXPECT_FALSE(stream->IsInMemory()); |
| 195 EXPECT_EQ(kTestDataSize, stream->size()); | 198 EXPECT_EQ(kTestDataSize, stream->size()); |
| 196 EXPECT_EQ(0U, stream->position()); | 199 EXPECT_EQ(0U, stream->position()); |
| 197 EXPECT_FALSE(stream->IsEOF()); | 200 EXPECT_FALSE(stream->IsEOF()); |
| (...skipping 14 matching lines...) Expand all Loading... |
| 212 ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_dir_.path(), | 215 ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_dir_.path(), |
| 213 &temp_file_path)); | 216 &temp_file_path)); |
| 214 ASSERT_EQ(static_cast<int>(kTestDataSize), | 217 ASSERT_EQ(static_cast<int>(kTestDataSize), |
| 215 base::WriteFile(temp_file_path, kTestData, kTestDataSize)); | 218 base::WriteFile(temp_file_path, kTestData, kTestDataSize)); |
| 216 const uint64_t kFakeSize = kTestDataSize * 2; | 219 const uint64_t kFakeSize = kTestDataSize * 2; |
| 217 | 220 |
| 218 UploadFileElementReader::ScopedOverridingContentLengthForTests | 221 UploadFileElementReader::ScopedOverridingContentLengthForTests |
| 219 overriding_content_length(kFakeSize); | 222 overriding_content_length(kFakeSize); |
| 220 | 223 |
| 221 element_readers_.push_back(make_scoped_ptr(new UploadFileElementReader( | 224 element_readers_.push_back(make_scoped_ptr(new UploadFileElementReader( |
| 222 base::ThreadTaskRunnerHandle::Get().get(), temp_file_path, 0, kuint64max, | 225 base::ThreadTaskRunnerHandle::Get().get(), temp_file_path, 0, |
| 223 base::Time()))); | 226 std::numeric_limits<uint64_t>::max(), base::Time()))); |
| 224 | 227 |
| 225 TestCompletionCallback init_callback; | 228 TestCompletionCallback init_callback; |
| 226 scoped_ptr<UploadDataStream> stream( | 229 scoped_ptr<UploadDataStream> stream( |
| 227 new ElementsUploadDataStream(std::move(element_readers_), 0)); | 230 new ElementsUploadDataStream(std::move(element_readers_), 0)); |
| 228 ASSERT_EQ(ERR_IO_PENDING, stream->Init(init_callback.callback())); | 231 ASSERT_EQ(ERR_IO_PENDING, stream->Init(init_callback.callback())); |
| 229 ASSERT_EQ(OK, init_callback.WaitForResult()); | 232 ASSERT_EQ(OK, init_callback.WaitForResult()); |
| 230 EXPECT_FALSE(stream->IsInMemory()); | 233 EXPECT_FALSE(stream->IsInMemory()); |
| 231 EXPECT_EQ(kFakeSize, stream->size()); | 234 EXPECT_EQ(kFakeSize, stream->size()); |
| 232 EXPECT_EQ(0U, stream->position()); | 235 EXPECT_EQ(0U, stream->position()); |
| 233 EXPECT_FALSE(stream->IsEOF()); | 236 EXPECT_FALSE(stream->IsEOF()); |
| (...skipping 328 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 562 base::FilePath temp_file_path; | 565 base::FilePath temp_file_path; |
| 563 ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_dir_.path(), | 566 ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_dir_.path(), |
| 564 &temp_file_path)); | 567 &temp_file_path)); |
| 565 ASSERT_EQ(static_cast<int>(kTestDataSize), | 568 ASSERT_EQ(static_cast<int>(kTestDataSize), |
| 566 base::WriteFile(temp_file_path, kTestData, kTestDataSize)); | 569 base::WriteFile(temp_file_path, kTestData, kTestDataSize)); |
| 567 | 570 |
| 568 // Prepare data. | 571 // Prepare data. |
| 569 element_readers_.push_back( | 572 element_readers_.push_back( |
| 570 make_scoped_ptr(new UploadBytesElementReader(kTestData, kTestDataSize))); | 573 make_scoped_ptr(new UploadBytesElementReader(kTestData, kTestDataSize))); |
| 571 element_readers_.push_back(make_scoped_ptr(new UploadFileElementReader( | 574 element_readers_.push_back(make_scoped_ptr(new UploadFileElementReader( |
| 572 base::ThreadTaskRunnerHandle::Get().get(), temp_file_path, 0, kuint64max, | 575 base::ThreadTaskRunnerHandle::Get().get(), temp_file_path, 0, |
| 573 base::Time()))); | 576 std::numeric_limits<uint64_t>::max(), base::Time()))); |
| 574 scoped_ptr<UploadDataStream> stream( | 577 scoped_ptr<UploadDataStream> stream( |
| 575 new ElementsUploadDataStream(std::move(element_readers_), 0)); | 578 new ElementsUploadDataStream(std::move(element_readers_), 0)); |
| 576 | 579 |
| 577 std::string expected_data(kTestData, kTestData + kTestDataSize); | 580 std::string expected_data(kTestData, kTestData + kTestDataSize); |
| 578 expected_data += expected_data; | 581 expected_data += expected_data; |
| 579 | 582 |
| 580 // Call Init(). | 583 // Call Init(). |
| 581 TestCompletionCallback init_callback1; | 584 TestCompletionCallback init_callback1; |
| 582 ASSERT_EQ(ERR_IO_PENDING, stream->Init(init_callback1.callback())); | 585 ASSERT_EQ(ERR_IO_PENDING, stream->Init(init_callback1.callback())); |
| 583 ASSERT_EQ(OK, init_callback1.WaitForResult()); | 586 ASSERT_EQ(OK, init_callback1.WaitForResult()); |
| (...skipping 21 matching lines...) Expand all Loading... |
| 605 ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_dir_.path(), | 608 ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_dir_.path(), |
| 606 &temp_file_path)); | 609 &temp_file_path)); |
| 607 ASSERT_EQ(static_cast<int>(kTestDataSize), | 610 ASSERT_EQ(static_cast<int>(kTestDataSize), |
| 608 base::WriteFile(temp_file_path, kTestData, kTestDataSize)); | 611 base::WriteFile(temp_file_path, kTestData, kTestDataSize)); |
| 609 TestCompletionCallback test_callback; | 612 TestCompletionCallback test_callback; |
| 610 | 613 |
| 611 // Prepare data. | 614 // Prepare data. |
| 612 element_readers_.push_back( | 615 element_readers_.push_back( |
| 613 make_scoped_ptr(new UploadBytesElementReader(kTestData, kTestDataSize))); | 616 make_scoped_ptr(new UploadBytesElementReader(kTestData, kTestDataSize))); |
| 614 element_readers_.push_back(make_scoped_ptr(new UploadFileElementReader( | 617 element_readers_.push_back(make_scoped_ptr(new UploadFileElementReader( |
| 615 base::ThreadTaskRunnerHandle::Get().get(), temp_file_path, 0, kuint64max, | 618 base::ThreadTaskRunnerHandle::Get().get(), temp_file_path, 0, |
| 616 base::Time()))); | 619 std::numeric_limits<uint64_t>::max(), base::Time()))); |
| 617 scoped_ptr<UploadDataStream> stream( | 620 scoped_ptr<UploadDataStream> stream( |
| 618 new ElementsUploadDataStream(std::move(element_readers_), 0)); | 621 new ElementsUploadDataStream(std::move(element_readers_), 0)); |
| 619 | 622 |
| 620 std::string expected_data(kTestData, kTestData + kTestDataSize); | 623 std::string expected_data(kTestData, kTestData + kTestDataSize); |
| 621 expected_data += expected_data; | 624 expected_data += expected_data; |
| 622 | 625 |
| 623 // Call Init(). | 626 // Call Init(). |
| 624 ASSERT_EQ(ERR_IO_PENDING, stream->Init(test_callback.callback())); | 627 ASSERT_EQ(ERR_IO_PENDING, stream->Init(test_callback.callback())); |
| 625 EXPECT_EQ(OK, test_callback.WaitForResult()); | 628 EXPECT_EQ(OK, test_callback.WaitForResult()); |
| 626 EXPECT_FALSE(stream->IsEOF()); | 629 EXPECT_FALSE(stream->IsEOF()); |
| (...skipping 18 matching lines...) Expand all Loading... |
| 645 base::FilePath temp_file_path; | 648 base::FilePath temp_file_path; |
| 646 ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_dir_.path(), | 649 ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_dir_.path(), |
| 647 &temp_file_path)); | 650 &temp_file_path)); |
| 648 ASSERT_EQ(static_cast<int>(kTestDataSize), | 651 ASSERT_EQ(static_cast<int>(kTestDataSize), |
| 649 base::WriteFile(temp_file_path, kTestData, kTestDataSize)); | 652 base::WriteFile(temp_file_path, kTestData, kTestDataSize)); |
| 650 | 653 |
| 651 // Prepare data. | 654 // Prepare data. |
| 652 element_readers_.push_back( | 655 element_readers_.push_back( |
| 653 make_scoped_ptr(new UploadBytesElementReader(kTestData, kTestDataSize))); | 656 make_scoped_ptr(new UploadBytesElementReader(kTestData, kTestDataSize))); |
| 654 element_readers_.push_back(make_scoped_ptr(new UploadFileElementReader( | 657 element_readers_.push_back(make_scoped_ptr(new UploadFileElementReader( |
| 655 base::ThreadTaskRunnerHandle::Get().get(), temp_file_path, 0, kuint64max, | 658 base::ThreadTaskRunnerHandle::Get().get(), temp_file_path, 0, |
| 656 base::Time()))); | 659 std::numeric_limits<uint64_t>::max(), base::Time()))); |
| 657 scoped_ptr<UploadDataStream> stream( | 660 scoped_ptr<UploadDataStream> stream( |
| 658 new ElementsUploadDataStream(std::move(element_readers_), 0)); | 661 new ElementsUploadDataStream(std::move(element_readers_), 0)); |
| 659 | 662 |
| 660 std::vector<char> expected_data(kTestData, kTestData + kTestDataSize); | 663 std::vector<char> expected_data(kTestData, kTestData + kTestDataSize); |
| 661 expected_data.insert(expected_data.end(), kTestData, | 664 expected_data.insert(expected_data.end(), kTestData, |
| 662 kTestData + kTestDataSize); | 665 kTestData + kTestDataSize); |
| 663 | 666 |
| 664 // Call Init(). | 667 // Call Init(). |
| 665 TestCompletionCallback init_callback1; | 668 TestCompletionCallback init_callback1; |
| 666 ASSERT_EQ(ERR_IO_PENDING, stream->Init(init_callback1.callback())); | 669 ASSERT_EQ(ERR_IO_PENDING, stream->Init(init_callback1.callback())); |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 701 base::FilePath temp_file_path; | 704 base::FilePath temp_file_path; |
| 702 ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_dir_.path(), | 705 ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_dir_.path(), |
| 703 &temp_file_path)); | 706 &temp_file_path)); |
| 704 ASSERT_EQ(static_cast<int>(kTestDataSize), | 707 ASSERT_EQ(static_cast<int>(kTestDataSize), |
| 705 base::WriteFile(temp_file_path, kTestData, kTestDataSize)); | 708 base::WriteFile(temp_file_path, kTestData, kTestDataSize)); |
| 706 | 709 |
| 707 // Prepare data. | 710 // Prepare data. |
| 708 element_readers_.push_back( | 711 element_readers_.push_back( |
| 709 make_scoped_ptr(new UploadBytesElementReader(kTestData, kTestDataSize))); | 712 make_scoped_ptr(new UploadBytesElementReader(kTestData, kTestDataSize))); |
| 710 element_readers_.push_back(make_scoped_ptr(new UploadFileElementReader( | 713 element_readers_.push_back(make_scoped_ptr(new UploadFileElementReader( |
| 711 base::ThreadTaskRunnerHandle::Get().get(), temp_file_path, 0, kuint64max, | 714 base::ThreadTaskRunnerHandle::Get().get(), temp_file_path, 0, |
| 712 base::Time()))); | 715 std::numeric_limits<uint64_t>::max(), base::Time()))); |
| 713 scoped_ptr<UploadDataStream> stream( | 716 scoped_ptr<UploadDataStream> stream( |
| 714 new ElementsUploadDataStream(std::move(element_readers_), 0)); | 717 new ElementsUploadDataStream(std::move(element_readers_), 0)); |
| 715 | 718 |
| 716 std::vector<char> expected_data(kTestData, kTestData + kTestDataSize); | 719 std::vector<char> expected_data(kTestData, kTestData + kTestDataSize); |
| 717 expected_data.insert(expected_data.end(), kTestData, | 720 expected_data.insert(expected_data.end(), kTestData, |
| 718 kTestData + kTestDataSize); | 721 kTestData + kTestDataSize); |
| 719 | 722 |
| 720 // Start Init. | 723 // Start Init. |
| 721 TestCompletionCallback init_callback1; | 724 TestCompletionCallback init_callback1; |
| 722 EXPECT_EQ(ERR_IO_PENDING, stream->Init(init_callback1.callback())); | 725 EXPECT_EQ(ERR_IO_PENDING, stream->Init(init_callback1.callback())); |
| (...skipping 24 matching lines...) Expand all Loading... |
| 747 base::FilePath temp_file_path; | 750 base::FilePath temp_file_path; |
| 748 ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_dir_.path(), | 751 ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_dir_.path(), |
| 749 &temp_file_path)); | 752 &temp_file_path)); |
| 750 ASSERT_EQ(static_cast<int>(kTestDataSize), | 753 ASSERT_EQ(static_cast<int>(kTestDataSize), |
| 751 base::WriteFile(temp_file_path, kTestData, kTestDataSize)); | 754 base::WriteFile(temp_file_path, kTestData, kTestDataSize)); |
| 752 | 755 |
| 753 // Prepare data. | 756 // Prepare data. |
| 754 element_readers_.push_back( | 757 element_readers_.push_back( |
| 755 make_scoped_ptr(new UploadBytesElementReader(kTestData, kTestDataSize))); | 758 make_scoped_ptr(new UploadBytesElementReader(kTestData, kTestDataSize))); |
| 756 element_readers_.push_back(make_scoped_ptr(new UploadFileElementReader( | 759 element_readers_.push_back(make_scoped_ptr(new UploadFileElementReader( |
| 757 base::ThreadTaskRunnerHandle::Get().get(), temp_file_path, 0, kuint64max, | 760 base::ThreadTaskRunnerHandle::Get().get(), temp_file_path, 0, |
| 758 base::Time()))); | 761 std::numeric_limits<uint64_t>::max(), base::Time()))); |
| 759 scoped_ptr<UploadDataStream> stream( | 762 scoped_ptr<UploadDataStream> stream( |
| 760 new ElementsUploadDataStream(std::move(element_readers_), 0)); | 763 new ElementsUploadDataStream(std::move(element_readers_), 0)); |
| 761 | 764 |
| 762 std::vector<char> expected_data(kTestData, kTestData + kTestDataSize); | 765 std::vector<char> expected_data(kTestData, kTestData + kTestDataSize); |
| 763 expected_data.insert(expected_data.end(), kTestData, | 766 expected_data.insert(expected_data.end(), kTestData, |
| 764 kTestData + kTestDataSize); | 767 kTestData + kTestDataSize); |
| 765 | 768 |
| 766 // Call Init(). | 769 // Call Init(). |
| 767 TestCompletionCallback init_callback1; | 770 TestCompletionCallback init_callback1; |
| 768 ASSERT_EQ(ERR_IO_PENDING, stream->Init(init_callback1.callback())); | 771 ASSERT_EQ(ERR_IO_PENDING, stream->Init(init_callback1.callback())); |
| (...skipping 26 matching lines...) Expand all Loading... |
| 795 wrapped_buffer2.get(), buf2.size(), read_callback2.callback())); | 798 wrapped_buffer2.get(), buf2.size(), read_callback2.callback())); |
| 796 EXPECT_EQ(static_cast<int>(buf2.size()), read_callback2.WaitForResult()); | 799 EXPECT_EQ(static_cast<int>(buf2.size()), read_callback2.WaitForResult()); |
| 797 EXPECT_EQ(expected_data, buf2); | 800 EXPECT_EQ(expected_data, buf2); |
| 798 EXPECT_TRUE(stream->IsEOF()); | 801 EXPECT_TRUE(stream->IsEOF()); |
| 799 | 802 |
| 800 // Make sure callbacks are not called for cancelled operations. | 803 // Make sure callbacks are not called for cancelled operations. |
| 801 EXPECT_FALSE(read_callback1.have_result()); | 804 EXPECT_FALSE(read_callback1.have_result()); |
| 802 } | 805 } |
| 803 | 806 |
| 804 } // namespace net | 807 } // namespace net |
| OLD | NEW |