| Index: net/http/http_transaction_test_util.cc
|
| diff --git a/net/http/http_transaction_test_util.cc b/net/http/http_transaction_test_util.cc
|
| index cb46c907ab1793c5825a0bf465ff99e36920147b..a3cc760017accdc29003e3e38133cc2019c080c9 100644
|
| --- a/net/http/http_transaction_test_util.cc
|
| +++ b/net/http/http_transaction_test_util.cc
|
| @@ -237,6 +237,7 @@ MockNetworkTransaction::MockNetworkTransaction(RequestPriority priority,
|
| sent_bytes_(0),
|
| socket_log_id_(NetLogSource::kInvalidId),
|
| done_reading_called_(false),
|
| + read_error_(0),
|
| weak_factory_(this) {}
|
|
|
| MockNetworkTransaction::~MockNetworkTransaction() {
|
| @@ -305,20 +306,24 @@ int MockNetworkTransaction::Read(net::IOBuffer* buf,
|
| int buf_len,
|
| const CompletionCallback& callback) {
|
| CHECK(!done_reading_called_);
|
| - int num = 0;
|
| - if (read_handler_) {
|
| - num = (*read_handler_)(content_length_, data_cursor_, buf, buf_len);
|
| - data_cursor_ += num;
|
| - } else {
|
| - int data_len = static_cast<int>(data_.size());
|
| - num = std::min(static_cast<int64_t>(buf_len), data_len - data_cursor_);
|
| - if (test_mode_ & TEST_MODE_SLOW_READ)
|
| - num = std::min(num, 1);
|
| - if (num) {
|
| - memcpy(buf->data(), data_.data() + data_cursor_, num);
|
| + int num = read_error_;
|
| +
|
| + if (OK == num) {
|
| + if (read_handler_) {
|
| + num = (*read_handler_)(content_length_, data_cursor_, buf, buf_len);
|
| data_cursor_ += num;
|
| + } else {
|
| + int data_len = static_cast<int>(data_.size());
|
| + num = std::min(static_cast<int64_t>(buf_len), data_len - data_cursor_);
|
| + if (test_mode_ & TEST_MODE_SLOW_READ)
|
| + num = std::min(num, 1);
|
| + if (num) {
|
| + memcpy(buf->data(), data_.data() + data_cursor_, num);
|
| + data_cursor_ += num;
|
| + }
|
| }
|
| }
|
| +
|
| if (test_mode_ & TEST_MODE_SYNC_NET_READ)
|
| return num;
|
|
|
| @@ -500,6 +505,10 @@ void MockNetworkTransaction::GetConnectionAttempts(
|
| NOTIMPLEMENTED();
|
| }
|
|
|
| +void MockNetworkTransaction::SetReadError(int error) {
|
| + read_error_ = error;
|
| +}
|
| +
|
| void MockNetworkTransaction::CallbackLater(const CompletionCallback& callback,
|
| int result) {
|
| base::ThreadTaskRunnerHandle::Get()->PostTask(
|
|
|