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

Side by Side Diff: net/http/http_transaction_test_util.cc

Issue 2886483002: Adds a new class HttpCache::Writers for multiple cache transactions reading from the network. (Closed)
Patch Set: Fix test class memory leak Created 3 years, 5 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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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/http/http_transaction_test_util.h" 5 #include "net/http/http_transaction_test_util.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <unordered_map> 8 #include <unordered_map>
9 #include <utility> 9 #include <utility>
10 10
(...skipping 219 matching lines...) Expand 10 before | Expand all | Expand 10 after
230 data_cursor_(0), 230 data_cursor_(0),
231 content_length_(0), 231 content_length_(0),
232 priority_(priority), 232 priority_(priority),
233 read_handler_(nullptr), 233 read_handler_(nullptr),
234 websocket_handshake_stream_create_helper_(nullptr), 234 websocket_handshake_stream_create_helper_(nullptr),
235 transaction_factory_(factory->AsWeakPtr()), 235 transaction_factory_(factory->AsWeakPtr()),
236 received_bytes_(0), 236 received_bytes_(0),
237 sent_bytes_(0), 237 sent_bytes_(0),
238 socket_log_id_(NetLogSource::kInvalidId), 238 socket_log_id_(NetLogSource::kInvalidId),
239 done_reading_called_(false), 239 done_reading_called_(false),
240 read_error_(0),
240 weak_factory_(this) {} 241 weak_factory_(this) {}
241 242
242 MockNetworkTransaction::~MockNetworkTransaction() { 243 MockNetworkTransaction::~MockNetworkTransaction() {
243 // Use request_ as in ~HttpNetworkTransaction to make sure its valid and not 244 // Use request_ as in ~HttpNetworkTransaction to make sure its valid and not
244 // already freed by the consumer. See crbug.com/734037. 245 // already freed by the consumer. See crbug.com/734037.
245 if (request_) 246 if (request_)
246 DCHECK(request_->load_flags >= 0); 247 DCHECK(request_->load_flags >= 0);
247 } 248 }
248 249
249 int MockNetworkTransaction::Start(const HttpRequestInfo* request, 250 int MockNetworkTransaction::Start(const HttpRequestInfo* request,
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
298 // Allow the mock server to decide whether authentication is required or not. 299 // Allow the mock server to decide whether authentication is required or not.
299 std::string status_line = response_.headers->GetStatusLine(); 300 std::string status_line = response_.headers->GetStatusLine();
300 return status_line.find(" 401 ") != std::string::npos || 301 return status_line.find(" 401 ") != std::string::npos ||
301 status_line.find(" 407 ") != std::string::npos; 302 status_line.find(" 407 ") != std::string::npos;
302 } 303 }
303 304
304 int MockNetworkTransaction::Read(net::IOBuffer* buf, 305 int MockNetworkTransaction::Read(net::IOBuffer* buf,
305 int buf_len, 306 int buf_len,
306 const CompletionCallback& callback) { 307 const CompletionCallback& callback) {
307 CHECK(!done_reading_called_); 308 CHECK(!done_reading_called_);
308 int num = 0; 309 int num = read_error_;
309 if (read_handler_) { 310
310 num = (*read_handler_)(content_length_, data_cursor_, buf, buf_len); 311 if (OK == num) {
311 data_cursor_ += num; 312 if (read_handler_) {
312 } else { 313 num = (*read_handler_)(content_length_, data_cursor_, buf, buf_len);
313 int data_len = static_cast<int>(data_.size());
314 num = std::min(static_cast<int64_t>(buf_len), data_len - data_cursor_);
315 if (test_mode_ & TEST_MODE_SLOW_READ)
316 num = std::min(num, 1);
317 if (num) {
318 memcpy(buf->data(), data_.data() + data_cursor_, num);
319 data_cursor_ += num; 314 data_cursor_ += num;
315 } else {
316 int data_len = static_cast<int>(data_.size());
317 num = std::min(static_cast<int64_t>(buf_len), data_len - data_cursor_);
318 if (test_mode_ & TEST_MODE_SLOW_READ)
319 num = std::min(num, 1);
320 if (num) {
321 memcpy(buf->data(), data_.data() + data_cursor_, num);
322 data_cursor_ += num;
323 }
320 } 324 }
321 } 325 }
326
322 if (test_mode_ & TEST_MODE_SYNC_NET_READ) 327 if (test_mode_ & TEST_MODE_SYNC_NET_READ)
323 return num; 328 return num;
324 329
325 CallbackLater(callback, num); 330 CallbackLater(callback, num);
326 return ERR_IO_PENDING; 331 return ERR_IO_PENDING;
327 } 332 }
328 333
329 void MockNetworkTransaction::StopCaching() { 334 void MockNetworkTransaction::StopCaching() {
330 if (transaction_factory_.get()) 335 if (transaction_factory_.get())
331 transaction_factory_->TransactionStopCaching(); 336 transaction_factory_->TransactionStopCaching();
(...skipping 161 matching lines...) Expand 10 before | Expand all | Expand 10 after
493 DCHECK(!resume_start_callback_.is_null()); 498 DCHECK(!resume_start_callback_.is_null());
494 CallbackLater(resume_start_callback_, OK); 499 CallbackLater(resume_start_callback_, OK);
495 return ERR_IO_PENDING; 500 return ERR_IO_PENDING;
496 } 501 }
497 502
498 void MockNetworkTransaction::GetConnectionAttempts( 503 void MockNetworkTransaction::GetConnectionAttempts(
499 ConnectionAttempts* out) const { 504 ConnectionAttempts* out) const {
500 NOTIMPLEMENTED(); 505 NOTIMPLEMENTED();
501 } 506 }
502 507
508 void MockNetworkTransaction::SetReadError(int error) {
509 read_error_ = error;
510 }
511
503 void MockNetworkTransaction::CallbackLater(const CompletionCallback& callback, 512 void MockNetworkTransaction::CallbackLater(const CompletionCallback& callback,
504 int result) { 513 int result) {
505 base::ThreadTaskRunnerHandle::Get()->PostTask( 514 base::ThreadTaskRunnerHandle::Get()->PostTask(
506 FROM_HERE, base::Bind(&MockNetworkTransaction::RunCallback, 515 FROM_HERE, base::Bind(&MockNetworkTransaction::RunCallback,
507 weak_factory_.GetWeakPtr(), callback, result)); 516 weak_factory_.GetWeakPtr(), callback, result));
508 } 517 }
509 518
510 void MockNetworkTransaction::RunCallback(const CompletionCallback& callback, 519 void MockNetworkTransaction::RunCallback(const CompletionCallback& callback,
511 int result) { 520 int result) {
512 callback.Run(result); 521 callback.Run(result);
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
587 content.append(buf->data(), rv); 596 content.append(buf->data(), rv);
588 else if (rv < 0) 597 else if (rv < 0)
589 return rv; 598 return rv;
590 } while (rv > 0); 599 } while (rv > 0);
591 600
592 result->swap(content); 601 result->swap(content);
593 return OK; 602 return OK;
594 } 603 }
595 604
596 } // namespace net 605 } // namespace net
OLDNEW
« net/http/http_transaction_test_util.h ('K') | « net/http/http_transaction_test_util.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698