| 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 <algorithm> | 7 #include <algorithm> |
| 8 #include <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "base/basictypes.h" | 10 #include "base/basictypes.h" |
| 11 #include "base/bind.h" | 11 #include "base/bind.h" |
| 12 #include "base/files/file_path.h" | 12 #include "base/files/file_path.h" |
| 13 #include "base/files/file_util.h" | 13 #include "base/files/file_util.h" |
| 14 #include "base/files/scoped_temp_dir.h" | 14 #include "base/files/scoped_temp_dir.h" |
| 15 #include "base/memory/scoped_ptr.h" | 15 #include "base/memory/scoped_ptr.h" |
| 16 #include "base/message_loop/message_loop.h" | 16 #include "base/message_loop/message_loop.h" |
| 17 #include "base/run_loop.h" | 17 #include "base/run_loop.h" |
| 18 #include "base/thread_task_runner_handle.h" |
| 18 #include "base/time/time.h" | 19 #include "base/time/time.h" |
| 19 #include "net/base/io_buffer.h" | 20 #include "net/base/io_buffer.h" |
| 20 #include "net/base/net_errors.h" | 21 #include "net/base/net_errors.h" |
| 21 #include "net/base/test_completion_callback.h" | 22 #include "net/base/test_completion_callback.h" |
| 22 #include "net/base/upload_bytes_element_reader.h" | 23 #include "net/base/upload_bytes_element_reader.h" |
| 23 #include "net/base/upload_data_stream.h" | 24 #include "net/base/upload_data_stream.h" |
| 24 #include "net/base/upload_file_element_reader.h" | 25 #include "net/base/upload_file_element_reader.h" |
| 25 #include "testing/gmock/include/gmock/gmock.h" | 26 #include "testing/gmock/include/gmock/gmock.h" |
| 26 #include "testing/gtest/include/gtest/gtest.h" | 27 #include "testing/gtest/include/gtest/gtest.h" |
| 27 #include "testing/platform_test.h" | 28 #include "testing/platform_test.h" |
| (...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 173 } | 174 } |
| 174 | 175 |
| 175 TEST_F(ElementsUploadDataStreamTest, File) { | 176 TEST_F(ElementsUploadDataStreamTest, File) { |
| 176 base::FilePath temp_file_path; | 177 base::FilePath temp_file_path; |
| 177 ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_dir_.path(), | 178 ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_dir_.path(), |
| 178 &temp_file_path)); | 179 &temp_file_path)); |
| 179 ASSERT_EQ(static_cast<int>(kTestDataSize), | 180 ASSERT_EQ(static_cast<int>(kTestDataSize), |
| 180 base::WriteFile(temp_file_path, kTestData, kTestDataSize)); | 181 base::WriteFile(temp_file_path, kTestData, kTestDataSize)); |
| 181 | 182 |
| 182 element_readers_.push_back( | 183 element_readers_.push_back( |
| 183 new UploadFileElementReader(base::MessageLoopProxy::current().get(), | 184 new UploadFileElementReader(base::ThreadTaskRunnerHandle::Get().get(), |
| 184 temp_file_path, | 185 temp_file_path, 0, kuint64max, base::Time())); |
| 185 0, | |
| 186 kuint64max, | |
| 187 base::Time())); | |
| 188 | 186 |
| 189 TestCompletionCallback init_callback; | 187 TestCompletionCallback init_callback; |
| 190 scoped_ptr<UploadDataStream> stream( | 188 scoped_ptr<UploadDataStream> stream( |
| 191 new ElementsUploadDataStream(element_readers_.Pass(), 0)); | 189 new ElementsUploadDataStream(element_readers_.Pass(), 0)); |
| 192 ASSERT_EQ(ERR_IO_PENDING, stream->Init(init_callback.callback())); | 190 ASSERT_EQ(ERR_IO_PENDING, stream->Init(init_callback.callback())); |
| 193 ASSERT_EQ(OK, init_callback.WaitForResult()); | 191 ASSERT_EQ(OK, init_callback.WaitForResult()); |
| 194 EXPECT_FALSE(stream->IsInMemory()); | 192 EXPECT_FALSE(stream->IsInMemory()); |
| 195 EXPECT_EQ(kTestDataSize, stream->size()); | 193 EXPECT_EQ(kTestDataSize, stream->size()); |
| 196 EXPECT_EQ(0U, stream->position()); | 194 EXPECT_EQ(0U, stream->position()); |
| 197 EXPECT_FALSE(stream->IsEOF()); | 195 EXPECT_FALSE(stream->IsEOF()); |
| (...skipping 14 matching lines...) Expand all Loading... |
| 212 ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_dir_.path(), | 210 ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_dir_.path(), |
| 213 &temp_file_path)); | 211 &temp_file_path)); |
| 214 ASSERT_EQ(static_cast<int>(kTestDataSize), | 212 ASSERT_EQ(static_cast<int>(kTestDataSize), |
| 215 base::WriteFile(temp_file_path, kTestData, kTestDataSize)); | 213 base::WriteFile(temp_file_path, kTestData, kTestDataSize)); |
| 216 const uint64 kFakeSize = kTestDataSize*2; | 214 const uint64 kFakeSize = kTestDataSize*2; |
| 217 | 215 |
| 218 UploadFileElementReader::ScopedOverridingContentLengthForTests | 216 UploadFileElementReader::ScopedOverridingContentLengthForTests |
| 219 overriding_content_length(kFakeSize); | 217 overriding_content_length(kFakeSize); |
| 220 | 218 |
| 221 element_readers_.push_back( | 219 element_readers_.push_back( |
| 222 new UploadFileElementReader(base::MessageLoopProxy::current().get(), | 220 new UploadFileElementReader(base::ThreadTaskRunnerHandle::Get().get(), |
| 223 temp_file_path, | 221 temp_file_path, 0, kuint64max, base::Time())); |
| 224 0, | |
| 225 kuint64max, | |
| 226 base::Time())); | |
| 227 | 222 |
| 228 TestCompletionCallback init_callback; | 223 TestCompletionCallback init_callback; |
| 229 scoped_ptr<UploadDataStream> stream( | 224 scoped_ptr<UploadDataStream> stream( |
| 230 new ElementsUploadDataStream(element_readers_.Pass(), 0)); | 225 new ElementsUploadDataStream(element_readers_.Pass(), 0)); |
| 231 ASSERT_EQ(ERR_IO_PENDING, stream->Init(init_callback.callback())); | 226 ASSERT_EQ(ERR_IO_PENDING, stream->Init(init_callback.callback())); |
| 232 ASSERT_EQ(OK, init_callback.WaitForResult()); | 227 ASSERT_EQ(OK, init_callback.WaitForResult()); |
| 233 EXPECT_FALSE(stream->IsInMemory()); | 228 EXPECT_FALSE(stream->IsInMemory()); |
| 234 EXPECT_EQ(kFakeSize, stream->size()); | 229 EXPECT_EQ(kFakeSize, stream->size()); |
| 235 EXPECT_EQ(0U, stream->position()); | 230 EXPECT_EQ(0U, stream->position()); |
| 236 EXPECT_FALSE(stream->IsEOF()); | 231 EXPECT_FALSE(stream->IsEOF()); |
| (...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 330 | 325 |
| 331 TEST_F(ElementsUploadDataStreamTest, FileAndBytes) { | 326 TEST_F(ElementsUploadDataStreamTest, FileAndBytes) { |
| 332 base::FilePath temp_file_path; | 327 base::FilePath temp_file_path; |
| 333 ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_dir_.path(), | 328 ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_dir_.path(), |
| 334 &temp_file_path)); | 329 &temp_file_path)); |
| 335 ASSERT_EQ(static_cast<int>(kTestDataSize), | 330 ASSERT_EQ(static_cast<int>(kTestDataSize), |
| 336 base::WriteFile(temp_file_path, kTestData, kTestDataSize)); | 331 base::WriteFile(temp_file_path, kTestData, kTestDataSize)); |
| 337 | 332 |
| 338 const uint64 kFileRangeOffset = 1; | 333 const uint64 kFileRangeOffset = 1; |
| 339 const uint64 kFileRangeLength = 4; | 334 const uint64 kFileRangeLength = 4; |
| 340 element_readers_.push_back( | 335 element_readers_.push_back(new UploadFileElementReader( |
| 341 new UploadFileElementReader(base::MessageLoopProxy::current().get(), | 336 base::ThreadTaskRunnerHandle::Get().get(), temp_file_path, |
| 342 temp_file_path, | 337 kFileRangeOffset, kFileRangeLength, base::Time())); |
| 343 kFileRangeOffset, | |
| 344 kFileRangeLength, | |
| 345 base::Time())); | |
| 346 | 338 |
| 347 element_readers_.push_back(new UploadBytesElementReader( | 339 element_readers_.push_back(new UploadBytesElementReader( |
| 348 kTestData, kTestDataSize)); | 340 kTestData, kTestDataSize)); |
| 349 | 341 |
| 350 const uint64 kStreamSize = kTestDataSize + kFileRangeLength; | 342 const uint64 kStreamSize = kTestDataSize + kFileRangeLength; |
| 351 TestCompletionCallback init_callback; | 343 TestCompletionCallback init_callback; |
| 352 scoped_ptr<UploadDataStream> stream( | 344 scoped_ptr<UploadDataStream> stream( |
| 353 new ElementsUploadDataStream(element_readers_.Pass(), 0)); | 345 new ElementsUploadDataStream(element_readers_.Pass(), 0)); |
| 354 ASSERT_EQ(ERR_IO_PENDING, stream->Init(init_callback.callback())); | 346 ASSERT_EQ(ERR_IO_PENDING, stream->Init(init_callback.callback())); |
| 355 ASSERT_EQ(OK, init_callback.WaitForResult()); | 347 ASSERT_EQ(OK, init_callback.WaitForResult()); |
| (...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 521 } | 513 } |
| 522 | 514 |
| 523 void ElementsUploadDataStreamTest::FileChangedHelper( | 515 void ElementsUploadDataStreamTest::FileChangedHelper( |
| 524 const base::FilePath& file_path, | 516 const base::FilePath& file_path, |
| 525 const base::Time& time, | 517 const base::Time& time, |
| 526 bool error_expected) { | 518 bool error_expected) { |
| 527 // Don't use element_readers_ here, as this function is called twice, and | 519 // Don't use element_readers_ here, as this function is called twice, and |
| 528 // reusing element_readers_ is wrong. | 520 // reusing element_readers_ is wrong. |
| 529 ScopedVector<UploadElementReader> element_readers; | 521 ScopedVector<UploadElementReader> element_readers; |
| 530 element_readers.push_back(new UploadFileElementReader( | 522 element_readers.push_back(new UploadFileElementReader( |
| 531 base::MessageLoopProxy::current().get(), file_path, 1, 2, time)); | 523 base::ThreadTaskRunnerHandle::Get().get(), file_path, 1, 2, time)); |
| 532 | 524 |
| 533 TestCompletionCallback init_callback; | 525 TestCompletionCallback init_callback; |
| 534 scoped_ptr<UploadDataStream> stream( | 526 scoped_ptr<UploadDataStream> stream( |
| 535 new ElementsUploadDataStream(element_readers.Pass(), 0)); | 527 new ElementsUploadDataStream(element_readers.Pass(), 0)); |
| 536 ASSERT_EQ(ERR_IO_PENDING, stream->Init(init_callback.callback())); | 528 ASSERT_EQ(ERR_IO_PENDING, stream->Init(init_callback.callback())); |
| 537 int error_code = init_callback.WaitForResult(); | 529 int error_code = init_callback.WaitForResult(); |
| 538 if (error_expected) | 530 if (error_expected) |
| 539 ASSERT_EQ(ERR_UPLOAD_FILE_CHANGED, error_code); | 531 ASSERT_EQ(ERR_UPLOAD_FILE_CHANGED, error_code); |
| 540 else | 532 else |
| 541 ASSERT_EQ(OK, error_code); | 533 ASSERT_EQ(OK, error_code); |
| (...skipping 22 matching lines...) Expand all Loading... |
| 564 base::FilePath temp_file_path; | 556 base::FilePath temp_file_path; |
| 565 ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_dir_.path(), | 557 ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_dir_.path(), |
| 566 &temp_file_path)); | 558 &temp_file_path)); |
| 567 ASSERT_EQ(static_cast<int>(kTestDataSize), | 559 ASSERT_EQ(static_cast<int>(kTestDataSize), |
| 568 base::WriteFile(temp_file_path, kTestData, kTestDataSize)); | 560 base::WriteFile(temp_file_path, kTestData, kTestDataSize)); |
| 569 | 561 |
| 570 // Prepare data. | 562 // Prepare data. |
| 571 element_readers_.push_back(new UploadBytesElementReader( | 563 element_readers_.push_back(new UploadBytesElementReader( |
| 572 kTestData, kTestDataSize)); | 564 kTestData, kTestDataSize)); |
| 573 element_readers_.push_back( | 565 element_readers_.push_back( |
| 574 new UploadFileElementReader(base::MessageLoopProxy::current().get(), | 566 new UploadFileElementReader(base::ThreadTaskRunnerHandle::Get().get(), |
| 575 temp_file_path, | 567 temp_file_path, 0, kuint64max, base::Time())); |
| 576 0, | |
| 577 kuint64max, | |
| 578 base::Time())); | |
| 579 scoped_ptr<UploadDataStream> stream( | 568 scoped_ptr<UploadDataStream> stream( |
| 580 new ElementsUploadDataStream(element_readers_.Pass(), 0)); | 569 new ElementsUploadDataStream(element_readers_.Pass(), 0)); |
| 581 | 570 |
| 582 std::string expected_data(kTestData, kTestData + kTestDataSize); | 571 std::string expected_data(kTestData, kTestData + kTestDataSize); |
| 583 expected_data += expected_data; | 572 expected_data += expected_data; |
| 584 | 573 |
| 585 // Call Init(). | 574 // Call Init(). |
| 586 TestCompletionCallback init_callback1; | 575 TestCompletionCallback init_callback1; |
| 587 ASSERT_EQ(ERR_IO_PENDING, stream->Init(init_callback1.callback())); | 576 ASSERT_EQ(ERR_IO_PENDING, stream->Init(init_callback1.callback())); |
| 588 ASSERT_EQ(OK, init_callback1.WaitForResult()); | 577 ASSERT_EQ(OK, init_callback1.WaitForResult()); |
| (...skipping 21 matching lines...) Expand all Loading... |
| 610 ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_dir_.path(), | 599 ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_dir_.path(), |
| 611 &temp_file_path)); | 600 &temp_file_path)); |
| 612 ASSERT_EQ(static_cast<int>(kTestDataSize), | 601 ASSERT_EQ(static_cast<int>(kTestDataSize), |
| 613 base::WriteFile(temp_file_path, kTestData, kTestDataSize)); | 602 base::WriteFile(temp_file_path, kTestData, kTestDataSize)); |
| 614 TestCompletionCallback test_callback; | 603 TestCompletionCallback test_callback; |
| 615 | 604 |
| 616 // Prepare data. | 605 // Prepare data. |
| 617 element_readers_.push_back(new UploadBytesElementReader( | 606 element_readers_.push_back(new UploadBytesElementReader( |
| 618 kTestData, kTestDataSize)); | 607 kTestData, kTestDataSize)); |
| 619 element_readers_.push_back( | 608 element_readers_.push_back( |
| 620 new UploadFileElementReader(base::MessageLoopProxy::current().get(), | 609 new UploadFileElementReader(base::ThreadTaskRunnerHandle::Get().get(), |
| 621 temp_file_path, | 610 temp_file_path, 0, kuint64max, base::Time())); |
| 622 0, | |
| 623 kuint64max, | |
| 624 base::Time())); | |
| 625 scoped_ptr<UploadDataStream> stream( | 611 scoped_ptr<UploadDataStream> stream( |
| 626 new ElementsUploadDataStream(element_readers_.Pass(), 0)); | 612 new ElementsUploadDataStream(element_readers_.Pass(), 0)); |
| 627 | 613 |
| 628 std::string expected_data(kTestData, kTestData + kTestDataSize); | 614 std::string expected_data(kTestData, kTestData + kTestDataSize); |
| 629 expected_data += expected_data; | 615 expected_data += expected_data; |
| 630 | 616 |
| 631 // Call Init(). | 617 // Call Init(). |
| 632 ASSERT_EQ(ERR_IO_PENDING, stream->Init(test_callback.callback())); | 618 ASSERT_EQ(ERR_IO_PENDING, stream->Init(test_callback.callback())); |
| 633 EXPECT_EQ(OK, test_callback.WaitForResult()); | 619 EXPECT_EQ(OK, test_callback.WaitForResult()); |
| 634 EXPECT_FALSE(stream->IsEOF()); | 620 EXPECT_FALSE(stream->IsEOF()); |
| (...skipping 18 matching lines...) Expand all Loading... |
| 653 base::FilePath temp_file_path; | 639 base::FilePath temp_file_path; |
| 654 ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_dir_.path(), | 640 ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_dir_.path(), |
| 655 &temp_file_path)); | 641 &temp_file_path)); |
| 656 ASSERT_EQ(static_cast<int>(kTestDataSize), | 642 ASSERT_EQ(static_cast<int>(kTestDataSize), |
| 657 base::WriteFile(temp_file_path, kTestData, kTestDataSize)); | 643 base::WriteFile(temp_file_path, kTestData, kTestDataSize)); |
| 658 | 644 |
| 659 // Prepare data. | 645 // Prepare data. |
| 660 element_readers_.push_back(new UploadBytesElementReader( | 646 element_readers_.push_back(new UploadBytesElementReader( |
| 661 kTestData, kTestDataSize)); | 647 kTestData, kTestDataSize)); |
| 662 element_readers_.push_back( | 648 element_readers_.push_back( |
| 663 new UploadFileElementReader(base::MessageLoopProxy::current().get(), | 649 new UploadFileElementReader(base::ThreadTaskRunnerHandle::Get().get(), |
| 664 temp_file_path, | 650 temp_file_path, 0, kuint64max, base::Time())); |
| 665 0, | |
| 666 kuint64max, | |
| 667 base::Time())); | |
| 668 scoped_ptr<UploadDataStream> stream( | 651 scoped_ptr<UploadDataStream> stream( |
| 669 new ElementsUploadDataStream(element_readers_.Pass(), 0)); | 652 new ElementsUploadDataStream(element_readers_.Pass(), 0)); |
| 670 | 653 |
| 671 std::vector<char> expected_data(kTestData, kTestData + kTestDataSize); | 654 std::vector<char> expected_data(kTestData, kTestData + kTestDataSize); |
| 672 expected_data.insert(expected_data.end(), kTestData, | 655 expected_data.insert(expected_data.end(), kTestData, |
| 673 kTestData + kTestDataSize); | 656 kTestData + kTestDataSize); |
| 674 | 657 |
| 675 // Call Init(). | 658 // Call Init(). |
| 676 TestCompletionCallback init_callback1; | 659 TestCompletionCallback init_callback1; |
| 677 ASSERT_EQ(ERR_IO_PENDING, stream->Init(init_callback1.callback())); | 660 ASSERT_EQ(ERR_IO_PENDING, stream->Init(init_callback1.callback())); |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 712 base::FilePath temp_file_path; | 695 base::FilePath temp_file_path; |
| 713 ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_dir_.path(), | 696 ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_dir_.path(), |
| 714 &temp_file_path)); | 697 &temp_file_path)); |
| 715 ASSERT_EQ(static_cast<int>(kTestDataSize), | 698 ASSERT_EQ(static_cast<int>(kTestDataSize), |
| 716 base::WriteFile(temp_file_path, kTestData, kTestDataSize)); | 699 base::WriteFile(temp_file_path, kTestData, kTestDataSize)); |
| 717 | 700 |
| 718 // Prepare data. | 701 // Prepare data. |
| 719 element_readers_.push_back(new UploadBytesElementReader( | 702 element_readers_.push_back(new UploadBytesElementReader( |
| 720 kTestData, kTestDataSize)); | 703 kTestData, kTestDataSize)); |
| 721 element_readers_.push_back( | 704 element_readers_.push_back( |
| 722 new UploadFileElementReader(base::MessageLoopProxy::current().get(), | 705 new UploadFileElementReader(base::ThreadTaskRunnerHandle::Get().get(), |
| 723 temp_file_path, | 706 temp_file_path, 0, kuint64max, base::Time())); |
| 724 0, | |
| 725 kuint64max, | |
| 726 base::Time())); | |
| 727 scoped_ptr<UploadDataStream> stream( | 707 scoped_ptr<UploadDataStream> stream( |
| 728 new ElementsUploadDataStream(element_readers_.Pass(), 0)); | 708 new ElementsUploadDataStream(element_readers_.Pass(), 0)); |
| 729 | 709 |
| 730 std::vector<char> expected_data(kTestData, kTestData + kTestDataSize); | 710 std::vector<char> expected_data(kTestData, kTestData + kTestDataSize); |
| 731 expected_data.insert(expected_data.end(), kTestData, | 711 expected_data.insert(expected_data.end(), kTestData, |
| 732 kTestData + kTestDataSize); | 712 kTestData + kTestDataSize); |
| 733 | 713 |
| 734 // Start Init. | 714 // Start Init. |
| 735 TestCompletionCallback init_callback1; | 715 TestCompletionCallback init_callback1; |
| 736 EXPECT_EQ(ERR_IO_PENDING, stream->Init(init_callback1.callback())); | 716 EXPECT_EQ(ERR_IO_PENDING, stream->Init(init_callback1.callback())); |
| (...skipping 24 matching lines...) Expand all Loading... |
| 761 base::FilePath temp_file_path; | 741 base::FilePath temp_file_path; |
| 762 ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_dir_.path(), | 742 ASSERT_TRUE(base::CreateTemporaryFileInDir(temp_dir_.path(), |
| 763 &temp_file_path)); | 743 &temp_file_path)); |
| 764 ASSERT_EQ(static_cast<int>(kTestDataSize), | 744 ASSERT_EQ(static_cast<int>(kTestDataSize), |
| 765 base::WriteFile(temp_file_path, kTestData, kTestDataSize)); | 745 base::WriteFile(temp_file_path, kTestData, kTestDataSize)); |
| 766 | 746 |
| 767 // Prepare data. | 747 // Prepare data. |
| 768 element_readers_.push_back(new UploadBytesElementReader( | 748 element_readers_.push_back(new UploadBytesElementReader( |
| 769 kTestData, kTestDataSize)); | 749 kTestData, kTestDataSize)); |
| 770 element_readers_.push_back( | 750 element_readers_.push_back( |
| 771 new UploadFileElementReader(base::MessageLoopProxy::current().get(), | 751 new UploadFileElementReader(base::ThreadTaskRunnerHandle::Get().get(), |
| 772 temp_file_path, | 752 temp_file_path, 0, kuint64max, base::Time())); |
| 773 0, | |
| 774 kuint64max, | |
| 775 base::Time())); | |
| 776 scoped_ptr<UploadDataStream> stream( | 753 scoped_ptr<UploadDataStream> stream( |
| 777 new ElementsUploadDataStream(element_readers_.Pass(), 0)); | 754 new ElementsUploadDataStream(element_readers_.Pass(), 0)); |
| 778 | 755 |
| 779 std::vector<char> expected_data(kTestData, kTestData + kTestDataSize); | 756 std::vector<char> expected_data(kTestData, kTestData + kTestDataSize); |
| 780 expected_data.insert(expected_data.end(), kTestData, | 757 expected_data.insert(expected_data.end(), kTestData, |
| 781 kTestData + kTestDataSize); | 758 kTestData + kTestDataSize); |
| 782 | 759 |
| 783 // Call Init(). | 760 // Call Init(). |
| 784 TestCompletionCallback init_callback1; | 761 TestCompletionCallback init_callback1; |
| 785 ASSERT_EQ(ERR_IO_PENDING, stream->Init(init_callback1.callback())); | 762 ASSERT_EQ(ERR_IO_PENDING, stream->Init(init_callback1.callback())); |
| (...skipping 26 matching lines...) Expand all Loading... |
| 812 wrapped_buffer2.get(), buf2.size(), read_callback2.callback())); | 789 wrapped_buffer2.get(), buf2.size(), read_callback2.callback())); |
| 813 EXPECT_EQ(static_cast<int>(buf2.size()), read_callback2.WaitForResult()); | 790 EXPECT_EQ(static_cast<int>(buf2.size()), read_callback2.WaitForResult()); |
| 814 EXPECT_EQ(expected_data, buf2); | 791 EXPECT_EQ(expected_data, buf2); |
| 815 EXPECT_TRUE(stream->IsEOF()); | 792 EXPECT_TRUE(stream->IsEOF()); |
| 816 | 793 |
| 817 // Make sure callbacks are not called for cancelled operations. | 794 // Make sure callbacks are not called for cancelled operations. |
| 818 EXPECT_FALSE(read_callback1.have_result()); | 795 EXPECT_FALSE(read_callback1.have_result()); |
| 819 } | 796 } |
| 820 | 797 |
| 821 } // namespace net | 798 } // namespace net |
| OLD | NEW |