Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(32)

Side by Side Diff: net/base/file_stream_unittest.cc

Issue 887863002: The ReadFile API on Windows invoked by the FileStream::Context class which is used by URLRequestFil… (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Pass the result of ReadFile on failure only Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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/file_stream.h" 5 #include "net/base/file_stream.h"
6 6
7 #include "base/bind.h" 7 #include "base/bind.h"
8 #include "base/callback.h" 8 #include "base/callback.h"
9 #include "base/files/file.h" 9 #include "base/files/file.h"
10 #include "base/files/file_util.h" 10 #include "base/files/file_util.h"
(...skipping 528 matching lines...) Expand 10 before | Expand all | Expand 10 after
539 waiting_for_result_ = true; 539 waiting_for_result_ = true;
540 base::RunLoop().Run(); 540 base::RunLoop().Run();
541 waiting_for_result_ = false; 541 waiting_for_result_ = false;
542 } 542 }
543 have_result_ = false; // auto-reset for next callback 543 have_result_ = false; // auto-reset for next callback
544 return result_; 544 return result_;
545 } 545 }
546 546
547 const CompletionCallback& callback() const { return callback_; } 547 const CompletionCallback& callback() const { return callback_; }
548 548
549 void ValidateWrittenData() {
550 TestCompletionCallback callback;
551 int rv = 0;
552 for (;;) {
553 scoped_refptr<IOBufferWithSize> buf = new IOBufferWithSize(4);
554 rv = stream_->Read(buf.get(), buf->size(), callback.callback());
555 if (rv == ERR_IO_PENDING) {
556 base::MessageLoop::ScopedNestableTaskAllower allow(
557 base::MessageLoop::current());
558 rv = callback.WaitForResult();
559 }
560 EXPECT_LE(0, rv);
561 if (rv <= 0)
562 break;
563 *total_bytes_read_ += rv;
564 data_read_->append(buf->data(), rv);
565 }
566 }
567
549 private: 568 private:
550 void OnComplete(int result) { 569 void OnComplete(int result) {
551 DCHECK_LT(0, result); 570 DCHECK_LT(0, result);
552 *total_bytes_written_ += result; 571 *total_bytes_written_ += result;
553 572
554 int rv; 573 int rv;
555 574
556 if (*total_bytes_written_ != kTestDataSize) { 575 if (*total_bytes_written_ != kTestDataSize) {
557 // Recurse to finish writing all data. 576 // Recurse to finish writing all data.
558 int total_bytes_written = 0, total_bytes_read = 0; 577 int total_bytes_written = 0, total_bytes_read = 0;
(...skipping 11 matching lines...) Expand all
570 } else { // We're done writing all data. Start reading the data. 589 } else { // We're done writing all data. Start reading the data.
571 TestInt64CompletionCallback callback64; 590 TestInt64CompletionCallback callback64;
572 EXPECT_EQ(ERR_IO_PENDING, 591 EXPECT_EQ(ERR_IO_PENDING,
573 stream_->Seek(base::File::FROM_BEGIN, 0, 592 stream_->Seek(base::File::FROM_BEGIN, 0,
574 callback64.callback())); 593 callback64.callback()));
575 { 594 {
576 base::MessageLoop::ScopedNestableTaskAllower allow( 595 base::MessageLoop::ScopedNestableTaskAllower allow(
577 base::MessageLoop::current()); 596 base::MessageLoop::current());
578 EXPECT_LE(0, callback64.WaitForResult()); 597 EXPECT_LE(0, callback64.WaitForResult());
579 } 598 }
580
581 TestCompletionCallback callback;
582 for (;;) {
583 scoped_refptr<IOBufferWithSize> buf = new IOBufferWithSize(4);
584 rv = stream_->Read(buf.get(), buf->size(), callback.callback());
585 if (rv == ERR_IO_PENDING) {
586 base::MessageLoop::ScopedNestableTaskAllower allow(
587 base::MessageLoop::current());
588 rv = callback.WaitForResult();
589 }
590 EXPECT_LE(0, rv);
591 if (rv <= 0)
592 break;
593 *total_bytes_read_ += rv;
594 data_read_->append(buf->data(), rv);
595 }
596 } 599 }
597 600
598 result_ = *total_bytes_written_; 601 result_ = *total_bytes_written_;
599 have_result_ = true; 602 have_result_ = true;
600 if (waiting_for_result_) 603 if (waiting_for_result_)
601 base::MessageLoop::current()->Quit(); 604 base::MessageLoop::current()->Quit();
602 } 605 }
603 606
604 int result_; 607 int result_;
605 bool have_result_; 608 bool have_result_;
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
639 TestWriteReadCompletionCallback callback(stream.get(), &total_bytes_written, 642 TestWriteReadCompletionCallback callback(stream.get(), &total_bytes_written,
640 &total_bytes_read, &data_read); 643 &total_bytes_read, &data_read);
641 644
642 scoped_refptr<IOBufferWithSize> buf = CreateTestDataBuffer(); 645 scoped_refptr<IOBufferWithSize> buf = CreateTestDataBuffer();
643 rv = stream->Write(buf.get(), buf->size(), callback.callback()); 646 rv = stream->Write(buf.get(), buf->size(), callback.callback());
644 if (rv == ERR_IO_PENDING) 647 if (rv == ERR_IO_PENDING)
645 rv = callback.WaitForResult(); 648 rv = callback.WaitForResult();
646 EXPECT_LT(0, rv); 649 EXPECT_LT(0, rv);
647 EXPECT_EQ(kTestDataSize, total_bytes_written); 650 EXPECT_EQ(kTestDataSize, total_bytes_written);
648 651
652 callback.ValidateWrittenData();
653
649 stream.reset(); 654 stream.reset();
650 655
651 EXPECT_TRUE(base::GetFileSize(temp_file_path(), &file_size)); 656 EXPECT_TRUE(base::GetFileSize(temp_file_path(), &file_size));
652 EXPECT_EQ(kTestDataSize * 2, file_size); 657 EXPECT_EQ(kTestDataSize * 2, file_size);
653 658
654 EXPECT_EQ(kTestDataSize * 2, total_bytes_read); 659 EXPECT_EQ(kTestDataSize * 2, total_bytes_read);
655 const std::string kExpectedFileData = 660 const std::string kExpectedFileData =
656 std::string(kTestData) + std::string(kTestData); 661 std::string(kTestData) + std::string(kTestData);
657 EXPECT_EQ(kExpectedFileData, data_read); 662 EXPECT_EQ(kExpectedFileData, data_read);
658 } 663 }
(...skipping 215 matching lines...) Expand 10 before | Expand all | Expand 10 after
874 total_bytes_read += rv; 879 total_bytes_read += rv;
875 data_read.append(buf->data(), rv); 880 data_read.append(buf->data(), rv);
876 } 881 }
877 EXPECT_EQ(file_size, total_bytes_read); 882 EXPECT_EQ(file_size, total_bytes_read);
878 } 883 }
879 #endif 884 #endif
880 885
881 } // namespace 886 } // namespace
882 887
883 } // namespace net 888 } // namespace net
OLDNEW
« net/base/file_stream_context_win.cc ('K') | « net/base/file_stream_context_win.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698