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/url_request/url_request_test_util.h" | 5 #include "net/url_request/url_request_test_util.h" |
6 | 6 |
7 #include "base/compiler_specific.h" | 7 #include "base/compiler_specific.h" |
8 #include "base/logging.h" | 8 #include "base/logging.h" |
9 #include "base/message_loop/message_loop.h" | 9 #include "base/message_loop/message_loop.h" |
10 #include "base/threading/thread.h" | 10 #include "base/threading/thread.h" |
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
80 context_storage_.set_ssl_config_service(new SSLConfigServiceDefaults); | 80 context_storage_.set_ssl_config_service(new SSLConfigServiceDefaults); |
81 if (!http_auth_handler_factory()) { | 81 if (!http_auth_handler_factory()) { |
82 context_storage_.set_http_auth_handler_factory( | 82 context_storage_.set_http_auth_handler_factory( |
83 HttpAuthHandlerFactory::CreateDefault(host_resolver())); | 83 HttpAuthHandlerFactory::CreateDefault(host_resolver())); |
84 } | 84 } |
85 if (!http_server_properties()) { | 85 if (!http_server_properties()) { |
86 context_storage_.set_http_server_properties( | 86 context_storage_.set_http_server_properties( |
87 scoped_ptr<HttpServerProperties>(new HttpServerPropertiesImpl())); | 87 scoped_ptr<HttpServerProperties>(new HttpServerPropertiesImpl())); |
88 } | 88 } |
89 if (!transport_security_state()) { | 89 if (!transport_security_state()) { |
90 context_storage_.set_transport_security_state( | 90 context_storage_.set_transport_security_state(new TransportSecurityState()); |
91 new TransportSecurityState()); | |
92 } | 91 } |
93 if (http_transaction_factory()) { | 92 if (http_transaction_factory()) { |
94 // Make sure we haven't been passed an object we're not going to use. | 93 // Make sure we haven't been passed an object we're not going to use. |
95 EXPECT_FALSE(client_socket_factory_); | 94 EXPECT_FALSE(client_socket_factory_); |
96 } else { | 95 } else { |
97 HttpNetworkSession::Params params; | 96 HttpNetworkSession::Params params; |
98 params.client_socket_factory = client_socket_factory(); | 97 params.client_socket_factory = client_socket_factory(); |
99 params.host_resolver = host_resolver(); | 98 params.host_resolver = host_resolver(); |
100 params.cert_verifier = cert_verifier(); | 99 params.cert_verifier = cert_verifier(); |
101 params.transport_security_state = transport_security_state(); | 100 params.transport_security_state = transport_security_state(); |
102 params.proxy_service = proxy_service(); | 101 params.proxy_service = proxy_service(); |
103 params.ssl_config_service = ssl_config_service(); | 102 params.ssl_config_service = ssl_config_service(); |
104 params.http_auth_handler_factory = http_auth_handler_factory(); | 103 params.http_auth_handler_factory = http_auth_handler_factory(); |
105 params.network_delegate = network_delegate(); | 104 params.network_delegate = network_delegate(); |
106 params.http_server_properties = http_server_properties(); | 105 params.http_server_properties = http_server_properties(); |
107 params.net_log = net_log(); | 106 params.net_log = net_log(); |
108 context_storage_.set_http_transaction_factory(new HttpCache( | 107 context_storage_.set_http_transaction_factory( |
109 new HttpNetworkSession(params), | 108 new HttpCache(new HttpNetworkSession(params), |
110 HttpCache::DefaultBackend::InMemory(0))); | 109 HttpCache::DefaultBackend::InMemory(0))); |
111 } | 110 } |
112 // In-memory cookie store. | 111 // In-memory cookie store. |
113 if (!cookie_store()) | 112 if (!cookie_store()) |
114 context_storage_.set_cookie_store(new CookieMonster(NULL, NULL)); | 113 context_storage_.set_cookie_store(new CookieMonster(NULL, NULL)); |
115 // In-memory origin bound cert service. | 114 // In-memory origin bound cert service. |
116 if (!server_bound_cert_service()) { | 115 if (!server_bound_cert_service()) { |
117 context_storage_.set_server_bound_cert_service( | 116 context_storage_.set_server_bound_cert_service( |
118 new ServerBoundCertService( | 117 new ServerBoundCertService(new DefaultServerBoundCertStore(NULL), |
119 new DefaultServerBoundCertStore(NULL), | 118 base::WorkerPool::GetTaskRunner(true))); |
120 base::WorkerPool::GetTaskRunner(true))); | |
121 } | 119 } |
122 if (!http_user_agent_settings()) { | 120 if (!http_user_agent_settings()) { |
123 context_storage_.set_http_user_agent_settings( | 121 context_storage_.set_http_user_agent_settings( |
124 new StaticHttpUserAgentSettings("en-us,fr", std::string())); | 122 new StaticHttpUserAgentSettings("en-us,fr", std::string())); |
125 } | 123 } |
126 if (!job_factory()) | 124 if (!job_factory()) |
127 context_storage_.set_job_factory(new URLRequestJobFactoryImpl); | 125 context_storage_.set_job_factory(new URLRequestJobFactoryImpl); |
128 } | 126 } |
129 | 127 |
130 TestURLRequest::TestURLRequest(const GURL& url, | 128 TestURLRequest::TestURLRequest(const GURL& url, |
131 RequestPriority priority, | 129 RequestPriority priority, |
132 Delegate* delegate, | 130 Delegate* delegate, |
133 TestURLRequestContext* context) | 131 TestURLRequestContext* context) |
134 : URLRequest(url, priority, delegate, context) {} | 132 : URLRequest(url, priority, delegate, context) { |
| 133 } |
135 | 134 |
136 TestURLRequest::~TestURLRequest() { | 135 TestURLRequest::~TestURLRequest() { |
137 } | 136 } |
138 | 137 |
139 TestURLRequestContextGetter::TestURLRequestContextGetter( | 138 TestURLRequestContextGetter::TestURLRequestContextGetter( |
140 const scoped_refptr<base::SingleThreadTaskRunner>& network_task_runner) | 139 const scoped_refptr<base::SingleThreadTaskRunner>& network_task_runner) |
141 : network_task_runner_(network_task_runner) { | 140 : network_task_runner_(network_task_runner) { |
142 DCHECK(network_task_runner_.get()); | 141 DCHECK(network_task_runner_.get()); |
143 } | 142 } |
144 | 143 |
145 TestURLRequestContextGetter::TestURLRequestContextGetter( | 144 TestURLRequestContextGetter::TestURLRequestContextGetter( |
146 const scoped_refptr<base::SingleThreadTaskRunner>& network_task_runner, | 145 const scoped_refptr<base::SingleThreadTaskRunner>& network_task_runner, |
147 scoped_ptr<TestURLRequestContext> context) | 146 scoped_ptr<TestURLRequestContext> context) |
148 : network_task_runner_(network_task_runner), context_(context.Pass()) { | 147 : network_task_runner_(network_task_runner), context_(context.Pass()) { |
149 DCHECK(network_task_runner_.get()); | 148 DCHECK(network_task_runner_.get()); |
150 } | 149 } |
151 | 150 |
152 TestURLRequestContextGetter::~TestURLRequestContextGetter() {} | 151 TestURLRequestContextGetter::~TestURLRequestContextGetter() { |
| 152 } |
153 | 153 |
154 TestURLRequestContext* TestURLRequestContextGetter::GetURLRequestContext() { | 154 TestURLRequestContext* TestURLRequestContextGetter::GetURLRequestContext() { |
155 if (!context_.get()) | 155 if (!context_.get()) |
156 context_.reset(new TestURLRequestContext); | 156 context_.reset(new TestURLRequestContext); |
157 return context_.get(); | 157 return context_.get(); |
158 } | 158 } |
159 | 159 |
160 scoped_refptr<base::SingleThreadTaskRunner> | 160 scoped_refptr<base::SingleThreadTaskRunner> |
161 TestURLRequestContextGetter::GetNetworkTaskRunner() const { | 161 TestURLRequestContextGetter::GetNetworkTaskRunner() const { |
162 return network_task_runner_; | 162 return network_task_runner_; |
(...skipping 14 matching lines...) Expand all Loading... |
177 received_before_network_start_count_(0), | 177 received_before_network_start_count_(0), |
178 received_data_before_response_(false), | 178 received_data_before_response_(false), |
179 request_failed_(false), | 179 request_failed_(false), |
180 have_certificate_errors_(false), | 180 have_certificate_errors_(false), |
181 certificate_errors_are_fatal_(false), | 181 certificate_errors_are_fatal_(false), |
182 auth_required_(false), | 182 auth_required_(false), |
183 have_full_request_headers_(false), | 183 have_full_request_headers_(false), |
184 buf_(new IOBuffer(kBufferSize)) { | 184 buf_(new IOBuffer(kBufferSize)) { |
185 } | 185 } |
186 | 186 |
187 TestDelegate::~TestDelegate() {} | 187 TestDelegate::~TestDelegate() { |
| 188 } |
188 | 189 |
189 void TestDelegate::ClearFullRequestHeaders() { | 190 void TestDelegate::ClearFullRequestHeaders() { |
190 full_request_headers_.Clear(); | 191 full_request_headers_.Clear(); |
191 have_full_request_headers_ = false; | 192 have_full_request_headers_ = false; |
192 } | 193 } |
193 | 194 |
194 void TestDelegate::OnReceivedRedirect(URLRequest* request, | 195 void TestDelegate::OnReceivedRedirect(URLRequest* request, |
195 const GURL& new_url, | 196 const GURL& new_url, |
196 bool* defer_redirect) { | 197 bool* defer_redirect) { |
197 EXPECT_TRUE(request->is_redirecting()); | 198 EXPECT_TRUE(request->is_redirecting()); |
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
323 blocked_set_cookie_count_(0), | 324 blocked_set_cookie_count_(0), |
324 set_cookie_count_(0), | 325 set_cookie_count_(0), |
325 has_load_timing_info_before_redirect_(false), | 326 has_load_timing_info_before_redirect_(false), |
326 has_load_timing_info_before_auth_(false), | 327 has_load_timing_info_before_auth_(false), |
327 can_access_files_(true), | 328 can_access_files_(true), |
328 can_throttle_requests_(true) { | 329 can_throttle_requests_(true) { |
329 } | 330 } |
330 | 331 |
331 TestNetworkDelegate::~TestNetworkDelegate() { | 332 TestNetworkDelegate::~TestNetworkDelegate() { |
332 for (std::map<int, int>::iterator i = next_states_.begin(); | 333 for (std::map<int, int>::iterator i = next_states_.begin(); |
333 i != next_states_.end(); ++i) { | 334 i != next_states_.end(); |
| 335 ++i) { |
334 event_order_[i->first] += "~TestNetworkDelegate\n"; | 336 event_order_[i->first] += "~TestNetworkDelegate\n"; |
335 EXPECT_TRUE(i->second & kStageDestruction) << event_order_[i->first]; | 337 EXPECT_TRUE(i->second & kStageDestruction) << event_order_[i->first]; |
336 } | 338 } |
337 } | 339 } |
338 | 340 |
339 bool TestNetworkDelegate::GetLoadTimingInfoBeforeRedirect( | 341 bool TestNetworkDelegate::GetLoadTimingInfoBeforeRedirect( |
340 LoadTimingInfo* load_timing_info_before_redirect) const { | 342 LoadTimingInfo* load_timing_info_before_redirect) const { |
341 *load_timing_info_before_redirect = load_timing_info_before_redirect_; | 343 *load_timing_info_before_redirect = load_timing_info_before_redirect_; |
342 return has_load_timing_info_before_redirect_; | 344 return has_load_timing_info_before_redirect_; |
343 } | 345 } |
344 | 346 |
345 bool TestNetworkDelegate::GetLoadTimingInfoBeforeAuth( | 347 bool TestNetworkDelegate::GetLoadTimingInfoBeforeAuth( |
346 LoadTimingInfo* load_timing_info_before_auth) const { | 348 LoadTimingInfo* load_timing_info_before_auth) const { |
347 *load_timing_info_before_auth = load_timing_info_before_auth_; | 349 *load_timing_info_before_auth = load_timing_info_before_auth_; |
348 return has_load_timing_info_before_auth_; | 350 return has_load_timing_info_before_auth_; |
349 } | 351 } |
350 | 352 |
351 void TestNetworkDelegate::InitRequestStatesIfNew(int request_id) { | 353 void TestNetworkDelegate::InitRequestStatesIfNew(int request_id) { |
352 if (next_states_.find(request_id) == next_states_.end()) { | 354 if (next_states_.find(request_id) == next_states_.end()) { |
353 // TODO(davidben): Although the URLRequest documentation does not allow | 355 // TODO(davidben): Although the URLRequest documentation does not allow |
354 // calling Cancel() before Start(), the ResourceLoader does so. URLRequest's | 356 // calling Cancel() before Start(), the ResourceLoader does so. URLRequest's |
355 // destructor also calls Cancel. Either officially support this or fix the | 357 // destructor also calls Cancel. Either officially support this or fix the |
356 // ResourceLoader code. | 358 // ResourceLoader code. |
357 next_states_[request_id] = kStageBeforeURLRequest | kStageCompletedError; | 359 next_states_[request_id] = kStageBeforeURLRequest | kStageCompletedError; |
358 event_order_[request_id] = ""; | 360 event_order_[request_id] = ""; |
359 } | 361 } |
360 } | 362 } |
361 | 363 |
362 int TestNetworkDelegate::OnBeforeURLRequest( | 364 int TestNetworkDelegate::OnBeforeURLRequest(URLRequest* request, |
363 URLRequest* request, | 365 const CompletionCallback& callback, |
364 const CompletionCallback& callback, | 366 GURL* new_url) { |
365 GURL* new_url ) { | |
366 int req_id = request->identifier(); | 367 int req_id = request->identifier(); |
367 InitRequestStatesIfNew(req_id); | 368 InitRequestStatesIfNew(req_id); |
368 event_order_[req_id] += "OnBeforeURLRequest\n"; | 369 event_order_[req_id] += "OnBeforeURLRequest\n"; |
369 EXPECT_TRUE(next_states_[req_id] & kStageBeforeURLRequest) << | 370 EXPECT_TRUE(next_states_[req_id] & kStageBeforeURLRequest) |
370 event_order_[req_id]; | 371 << event_order_[req_id]; |
371 next_states_[req_id] = | 372 next_states_[req_id] = |
372 kStageBeforeSendHeaders | | 373 kStageBeforeSendHeaders | |
373 kStageResponseStarted | // data: URLs do not trigger sending headers | 374 kStageResponseStarted | // data: URLs do not trigger sending headers |
374 kStageBeforeRedirect | // a delegate can trigger a redirection | 375 kStageBeforeRedirect | // a delegate can trigger a redirection |
375 kStageCompletedError | // request canceled by delegate | 376 kStageCompletedError | // request canceled by delegate |
376 kStageAuthRequired; // Auth can come next for FTP requests | 377 kStageAuthRequired; // Auth can come next for FTP requests |
377 created_requests_++; | 378 created_requests_++; |
378 return OK; | 379 return OK; |
379 } | 380 } |
380 | 381 |
381 int TestNetworkDelegate::OnBeforeSendHeaders( | 382 int TestNetworkDelegate::OnBeforeSendHeaders(URLRequest* request, |
382 URLRequest* request, | 383 const CompletionCallback& callback, |
383 const CompletionCallback& callback, | 384 HttpRequestHeaders* headers) { |
384 HttpRequestHeaders* headers) { | |
385 int req_id = request->identifier(); | 385 int req_id = request->identifier(); |
386 InitRequestStatesIfNew(req_id); | 386 InitRequestStatesIfNew(req_id); |
387 event_order_[req_id] += "OnBeforeSendHeaders\n"; | 387 event_order_[req_id] += "OnBeforeSendHeaders\n"; |
388 EXPECT_TRUE(next_states_[req_id] & kStageBeforeSendHeaders) << | 388 EXPECT_TRUE(next_states_[req_id] & kStageBeforeSendHeaders) |
389 event_order_[req_id]; | 389 << event_order_[req_id]; |
390 next_states_[req_id] = | 390 next_states_[req_id] = |
391 kStageSendHeaders | | 391 kStageSendHeaders | kStageCompletedError; // request canceled by delegate |
392 kStageCompletedError; // request canceled by delegate | |
393 | 392 |
394 return OK; | 393 return OK; |
395 } | 394 } |
396 | 395 |
397 void TestNetworkDelegate::OnSendHeaders( | 396 void TestNetworkDelegate::OnSendHeaders(URLRequest* request, |
398 URLRequest* request, | 397 const HttpRequestHeaders& headers) { |
399 const HttpRequestHeaders& headers) { | |
400 int req_id = request->identifier(); | 398 int req_id = request->identifier(); |
401 InitRequestStatesIfNew(req_id); | 399 InitRequestStatesIfNew(req_id); |
402 event_order_[req_id] += "OnSendHeaders\n"; | 400 event_order_[req_id] += "OnSendHeaders\n"; |
403 EXPECT_TRUE(next_states_[req_id] & kStageSendHeaders) << | 401 EXPECT_TRUE(next_states_[req_id] & kStageSendHeaders) << event_order_[req_id]; |
404 event_order_[req_id]; | 402 next_states_[req_id] = kStageHeadersReceived | kStageCompletedError; |
405 next_states_[req_id] = | |
406 kStageHeadersReceived | | |
407 kStageCompletedError; | |
408 } | 403 } |
409 | 404 |
410 int TestNetworkDelegate::OnHeadersReceived( | 405 int TestNetworkDelegate::OnHeadersReceived( |
411 URLRequest* request, | 406 URLRequest* request, |
412 const CompletionCallback& callback, | 407 const CompletionCallback& callback, |
413 const HttpResponseHeaders* original_response_headers, | 408 const HttpResponseHeaders* original_response_headers, |
414 scoped_refptr<HttpResponseHeaders>* override_response_headers, | 409 scoped_refptr<HttpResponseHeaders>* override_response_headers, |
415 GURL* allowed_unsafe_redirect_url) { | 410 GURL* allowed_unsafe_redirect_url) { |
416 int req_id = request->identifier(); | 411 int req_id = request->identifier(); |
417 event_order_[req_id] += "OnHeadersReceived\n"; | 412 event_order_[req_id] += "OnHeadersReceived\n"; |
418 InitRequestStatesIfNew(req_id); | 413 InitRequestStatesIfNew(req_id); |
419 EXPECT_TRUE(next_states_[req_id] & kStageHeadersReceived) << | 414 EXPECT_TRUE(next_states_[req_id] & kStageHeadersReceived) |
420 event_order_[req_id]; | 415 << event_order_[req_id]; |
421 next_states_[req_id] = | 416 next_states_[req_id] = kStageBeforeRedirect | kStageResponseStarted | |
422 kStageBeforeRedirect | | 417 kStageAuthRequired | |
423 kStageResponseStarted | | 418 kStageCompletedError; // e.g. proxy resolution problem |
424 kStageAuthRequired | | |
425 kStageCompletedError; // e.g. proxy resolution problem | |
426 | 419 |
427 // Basic authentication sends a second request from the URLRequestHttpJob | 420 // Basic authentication sends a second request from the URLRequestHttpJob |
428 // layer before the URLRequest reports that a response has started. | 421 // layer before the URLRequest reports that a response has started. |
429 next_states_[req_id] |= kStageBeforeSendHeaders; | 422 next_states_[req_id] |= kStageBeforeSendHeaders; |
430 | 423 |
431 if (!redirect_on_headers_received_url_.is_empty()) { | 424 if (!redirect_on_headers_received_url_.is_empty()) { |
432 *override_response_headers = | 425 *override_response_headers = |
433 new net::HttpResponseHeaders(original_response_headers->raw_headers()); | 426 new net::HttpResponseHeaders(original_response_headers->raw_headers()); |
434 (*override_response_headers)->ReplaceStatusLine("HTTP/1.1 302 Found"); | 427 (*override_response_headers)->ReplaceStatusLine("HTTP/1.1 302 Found"); |
435 (*override_response_headers)->RemoveHeader("Location"); | 428 (*override_response_headers)->RemoveHeader("Location"); |
436 (*override_response_headers)->AddHeader( | 429 (*override_response_headers) |
437 "Location: " + redirect_on_headers_received_url_.spec()); | 430 ->AddHeader("Location: " + redirect_on_headers_received_url_.spec()); |
438 | 431 |
439 redirect_on_headers_received_url_ = GURL(); | 432 redirect_on_headers_received_url_ = GURL(); |
440 | 433 |
441 if (!allowed_unsafe_redirect_url_.is_empty()) | 434 if (!allowed_unsafe_redirect_url_.is_empty()) |
442 *allowed_unsafe_redirect_url = allowed_unsafe_redirect_url_; | 435 *allowed_unsafe_redirect_url = allowed_unsafe_redirect_url_; |
443 } | 436 } |
444 | 437 |
445 return OK; | 438 return OK; |
446 } | 439 } |
447 | 440 |
448 void TestNetworkDelegate::OnBeforeRedirect(URLRequest* request, | 441 void TestNetworkDelegate::OnBeforeRedirect(URLRequest* request, |
449 const GURL& new_location) { | 442 const GURL& new_location) { |
450 load_timing_info_before_redirect_ = LoadTimingInfo(); | 443 load_timing_info_before_redirect_ = LoadTimingInfo(); |
451 request->GetLoadTimingInfo(&load_timing_info_before_redirect_); | 444 request->GetLoadTimingInfo(&load_timing_info_before_redirect_); |
452 has_load_timing_info_before_redirect_ = true; | 445 has_load_timing_info_before_redirect_ = true; |
453 EXPECT_FALSE(load_timing_info_before_redirect_.request_start_time.is_null()); | 446 EXPECT_FALSE(load_timing_info_before_redirect_.request_start_time.is_null()); |
454 EXPECT_FALSE(load_timing_info_before_redirect_.request_start.is_null()); | 447 EXPECT_FALSE(load_timing_info_before_redirect_.request_start.is_null()); |
455 | 448 |
456 int req_id = request->identifier(); | 449 int req_id = request->identifier(); |
457 InitRequestStatesIfNew(req_id); | 450 InitRequestStatesIfNew(req_id); |
458 event_order_[req_id] += "OnBeforeRedirect\n"; | 451 event_order_[req_id] += "OnBeforeRedirect\n"; |
459 EXPECT_TRUE(next_states_[req_id] & kStageBeforeRedirect) << | 452 EXPECT_TRUE(next_states_[req_id] & kStageBeforeRedirect) |
460 event_order_[req_id]; | 453 << event_order_[req_id]; |
461 next_states_[req_id] = | 454 next_states_[req_id] = |
462 kStageBeforeURLRequest | // HTTP redirects trigger this. | 455 kStageBeforeURLRequest | // HTTP redirects trigger this. |
463 kStageBeforeSendHeaders | // Redirects from the network delegate do not | 456 kStageBeforeSendHeaders | // Redirects from the network delegate do not |
464 // trigger onBeforeURLRequest. | 457 // trigger onBeforeURLRequest. |
465 kStageCompletedError; | 458 kStageCompletedError; |
466 | 459 |
467 // A redirect can lead to a file or a data URL. In this case, we do not send | 460 // A redirect can lead to a file or a data URL. In this case, we do not send |
468 // headers. | 461 // headers. |
469 next_states_[req_id] |= kStageResponseStarted; | 462 next_states_[req_id] |= kStageResponseStarted; |
470 } | 463 } |
471 | 464 |
472 void TestNetworkDelegate::OnResponseStarted(URLRequest* request) { | 465 void TestNetworkDelegate::OnResponseStarted(URLRequest* request) { |
473 LoadTimingInfo load_timing_info; | 466 LoadTimingInfo load_timing_info; |
474 request->GetLoadTimingInfo(&load_timing_info); | 467 request->GetLoadTimingInfo(&load_timing_info); |
475 EXPECT_FALSE(load_timing_info.request_start_time.is_null()); | 468 EXPECT_FALSE(load_timing_info.request_start_time.is_null()); |
476 EXPECT_FALSE(load_timing_info.request_start.is_null()); | 469 EXPECT_FALSE(load_timing_info.request_start.is_null()); |
477 | 470 |
478 int req_id = request->identifier(); | 471 int req_id = request->identifier(); |
479 InitRequestStatesIfNew(req_id); | 472 InitRequestStatesIfNew(req_id); |
480 event_order_[req_id] += "OnResponseStarted\n"; | 473 event_order_[req_id] += "OnResponseStarted\n"; |
481 EXPECT_TRUE(next_states_[req_id] & kStageResponseStarted) << | 474 EXPECT_TRUE(next_states_[req_id] & kStageResponseStarted) |
482 event_order_[req_id]; | 475 << event_order_[req_id]; |
483 next_states_[req_id] = kStageCompletedSuccess | kStageCompletedError; | 476 next_states_[req_id] = kStageCompletedSuccess | kStageCompletedError; |
484 if (request->status().status() == URLRequestStatus::FAILED) { | 477 if (request->status().status() == URLRequestStatus::FAILED) { |
485 error_count_++; | 478 error_count_++; |
486 last_error_ = request->status().error(); | 479 last_error_ = request->status().error(); |
487 } | 480 } |
488 } | 481 } |
489 | 482 |
490 void TestNetworkDelegate::OnRawBytesRead(const URLRequest& request, | 483 void TestNetworkDelegate::OnRawBytesRead(const URLRequest& request, |
491 int bytes_read) { | 484 int bytes_read) { |
492 } | 485 } |
493 | 486 |
494 void TestNetworkDelegate::OnCompleted(URLRequest* request, bool started) { | 487 void TestNetworkDelegate::OnCompleted(URLRequest* request, bool started) { |
495 int req_id = request->identifier(); | 488 int req_id = request->identifier(); |
496 InitRequestStatesIfNew(req_id); | 489 InitRequestStatesIfNew(req_id); |
497 event_order_[req_id] += "OnCompleted\n"; | 490 event_order_[req_id] += "OnCompleted\n"; |
498 // Expect "Success -> (next_states_ & kStageCompletedSuccess)" | 491 // Expect "Success -> (next_states_ & kStageCompletedSuccess)" |
499 // is logically identical to | 492 // is logically identical to |
500 // Expect "!(Success) || (next_states_ & kStageCompletedSuccess)" | 493 // Expect "!(Success) || (next_states_ & kStageCompletedSuccess)" |
501 EXPECT_TRUE(!request->status().is_success() || | 494 EXPECT_TRUE(!request->status().is_success() || |
502 (next_states_[req_id] & kStageCompletedSuccess)) << | 495 (next_states_[req_id] & kStageCompletedSuccess)) |
503 event_order_[req_id]; | 496 << event_order_[req_id]; |
504 EXPECT_TRUE(request->status().is_success() || | 497 EXPECT_TRUE(request->status().is_success() || |
505 (next_states_[req_id] & kStageCompletedError)) << | 498 (next_states_[req_id] & kStageCompletedError)) |
506 event_order_[req_id]; | 499 << event_order_[req_id]; |
507 next_states_[req_id] = kStageURLRequestDestroyed; | 500 next_states_[req_id] = kStageURLRequestDestroyed; |
508 completed_requests_++; | 501 completed_requests_++; |
509 if (request->status().status() == URLRequestStatus::FAILED) { | 502 if (request->status().status() == URLRequestStatus::FAILED) { |
510 error_count_++; | 503 error_count_++; |
511 last_error_ = request->status().error(); | 504 last_error_ = request->status().error(); |
512 } else if (request->status().status() == URLRequestStatus::CANCELED) { | 505 } else if (request->status().status() == URLRequestStatus::CANCELED) { |
513 canceled_requests_++; | 506 canceled_requests_++; |
514 } else { | 507 } else { |
515 DCHECK_EQ(URLRequestStatus::SUCCESS, request->status().status()); | 508 DCHECK_EQ(URLRequestStatus::SUCCESS, request->status().status()); |
516 } | 509 } |
517 } | 510 } |
518 | 511 |
519 void TestNetworkDelegate::OnURLRequestDestroyed(URLRequest* request) { | 512 void TestNetworkDelegate::OnURLRequestDestroyed(URLRequest* request) { |
520 int req_id = request->identifier(); | 513 int req_id = request->identifier(); |
521 InitRequestStatesIfNew(req_id); | 514 InitRequestStatesIfNew(req_id); |
522 event_order_[req_id] += "OnURLRequestDestroyed\n"; | 515 event_order_[req_id] += "OnURLRequestDestroyed\n"; |
523 EXPECT_TRUE(next_states_[req_id] & kStageURLRequestDestroyed) << | 516 EXPECT_TRUE(next_states_[req_id] & kStageURLRequestDestroyed) |
524 event_order_[req_id]; | 517 << event_order_[req_id]; |
525 next_states_[req_id] = kStageDestruction; | 518 next_states_[req_id] = kStageDestruction; |
526 destroyed_requests_++; | 519 destroyed_requests_++; |
527 } | 520 } |
528 | 521 |
529 void TestNetworkDelegate::OnPACScriptError(int line_number, | 522 void TestNetworkDelegate::OnPACScriptError(int line_number, |
530 const base::string16& error) { | 523 const base::string16& error) { |
531 } | 524 } |
532 | 525 |
533 NetworkDelegate::AuthRequiredResponse TestNetworkDelegate::OnAuthRequired( | 526 NetworkDelegate::AuthRequiredResponse TestNetworkDelegate::OnAuthRequired( |
534 URLRequest* request, | 527 URLRequest* request, |
535 const AuthChallengeInfo& auth_info, | 528 const AuthChallengeInfo& auth_info, |
536 const AuthCallback& callback, | 529 const AuthCallback& callback, |
537 AuthCredentials* credentials) { | 530 AuthCredentials* credentials) { |
538 load_timing_info_before_auth_ = LoadTimingInfo(); | 531 load_timing_info_before_auth_ = LoadTimingInfo(); |
539 request->GetLoadTimingInfo(&load_timing_info_before_auth_); | 532 request->GetLoadTimingInfo(&load_timing_info_before_auth_); |
540 has_load_timing_info_before_auth_ = true; | 533 has_load_timing_info_before_auth_ = true; |
541 EXPECT_FALSE(load_timing_info_before_auth_.request_start_time.is_null()); | 534 EXPECT_FALSE(load_timing_info_before_auth_.request_start_time.is_null()); |
542 EXPECT_FALSE(load_timing_info_before_auth_.request_start.is_null()); | 535 EXPECT_FALSE(load_timing_info_before_auth_.request_start.is_null()); |
543 | 536 |
544 int req_id = request->identifier(); | 537 int req_id = request->identifier(); |
545 InitRequestStatesIfNew(req_id); | 538 InitRequestStatesIfNew(req_id); |
546 event_order_[req_id] += "OnAuthRequired\n"; | 539 event_order_[req_id] += "OnAuthRequired\n"; |
547 EXPECT_TRUE(next_states_[req_id] & kStageAuthRequired) << | 540 EXPECT_TRUE(next_states_[req_id] & kStageAuthRequired) |
548 event_order_[req_id]; | 541 << event_order_[req_id]; |
549 next_states_[req_id] = kStageBeforeSendHeaders | | 542 next_states_[req_id] = |
| 543 kStageBeforeSendHeaders | |
550 kStageAuthRequired | // For example, proxy auth followed by server auth. | 544 kStageAuthRequired | // For example, proxy auth followed by server auth. |
551 kStageHeadersReceived | // Request canceled by delegate simulates empty | 545 kStageHeadersReceived | // Request canceled by delegate simulates empty |
552 // response. | 546 // response. |
553 kStageResponseStarted | // data: URLs do not trigger sending headers | 547 kStageResponseStarted | // data: URLs do not trigger sending headers |
554 kStageBeforeRedirect | // a delegate can trigger a redirection | 548 kStageBeforeRedirect | // a delegate can trigger a redirection |
555 kStageCompletedError; // request cancelled before callback | 549 kStageCompletedError; // request cancelled before callback |
556 return NetworkDelegate::AUTH_REQUIRED_RESPONSE_NO_ACTION; | 550 return NetworkDelegate::AUTH_REQUIRED_RESPONSE_NO_ACTION; |
557 } | 551 } |
558 | 552 |
559 bool TestNetworkDelegate::OnCanGetCookies(const URLRequest& request, | 553 bool TestNetworkDelegate::OnCanGetCookies(const URLRequest& request, |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
598 int TestNetworkDelegate::OnBeforeSocketStreamConnect( | 592 int TestNetworkDelegate::OnBeforeSocketStreamConnect( |
599 SocketStream* socket, | 593 SocketStream* socket, |
600 const CompletionCallback& callback) { | 594 const CompletionCallback& callback) { |
601 return OK; | 595 return OK; |
602 } | 596 } |
603 | 597 |
604 // static | 598 // static |
605 std::string ScopedCustomUrlRequestTestHttpHost::value_("127.0.0.1"); | 599 std::string ScopedCustomUrlRequestTestHttpHost::value_("127.0.0.1"); |
606 | 600 |
607 ScopedCustomUrlRequestTestHttpHost::ScopedCustomUrlRequestTestHttpHost( | 601 ScopedCustomUrlRequestTestHttpHost::ScopedCustomUrlRequestTestHttpHost( |
608 const std::string& new_value) | 602 const std::string& new_value) |
609 : old_value_(value_), | 603 : old_value_(value_), new_value_(new_value) { |
610 new_value_(new_value) { | |
611 value_ = new_value_; | 604 value_ = new_value_; |
612 } | 605 } |
613 | 606 |
614 ScopedCustomUrlRequestTestHttpHost::~ScopedCustomUrlRequestTestHttpHost() { | 607 ScopedCustomUrlRequestTestHttpHost::~ScopedCustomUrlRequestTestHttpHost() { |
615 DCHECK_EQ(value_, new_value_); | 608 DCHECK_EQ(value_, new_value_); |
616 value_ = old_value_; | 609 value_ = old_value_; |
617 } | 610 } |
618 | 611 |
619 // static | 612 // static |
620 const std::string& ScopedCustomUrlRequestTestHttpHost::value() { | 613 const std::string& ScopedCustomUrlRequestTestHttpHost::value() { |
621 return value_; | 614 return value_; |
622 } | 615 } |
623 | 616 |
624 TestJobInterceptor::TestJobInterceptor() : main_intercept_job_(NULL) { | 617 TestJobInterceptor::TestJobInterceptor() : main_intercept_job_(NULL) { |
625 } | 618 } |
626 | 619 |
627 URLRequestJob* TestJobInterceptor::MaybeCreateJob( | 620 URLRequestJob* TestJobInterceptor::MaybeCreateJob( |
628 URLRequest* request, | 621 URLRequest* request, |
629 NetworkDelegate* network_delegate) const { | 622 NetworkDelegate* network_delegate) const { |
630 URLRequestJob* job = main_intercept_job_; | 623 URLRequestJob* job = main_intercept_job_; |
631 main_intercept_job_ = NULL; | 624 main_intercept_job_ = NULL; |
632 return job; | 625 return job; |
633 } | 626 } |
634 | 627 |
635 void TestJobInterceptor::set_main_intercept_job(URLRequestJob* job) { | 628 void TestJobInterceptor::set_main_intercept_job(URLRequestJob* job) { |
636 main_intercept_job_ = job; | 629 main_intercept_job_ = job; |
637 } | 630 } |
638 | 631 |
639 } // namespace net | 632 } // namespace net |
OLD | NEW |