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