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_fetcher_core.h" | 5 #include "net/url_request/url_fetcher_core.h" |
6 | 6 |
7 #include <stdint.h> | 7 #include <stdint.h> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/logging.h" | 10 #include "base/logging.h" |
11 #include "base/metrics/histogram.h" | 11 #include "base/metrics/histogram.h" |
| 12 #include "base/profiler/scoped_tracker.h" |
12 #include "base/sequenced_task_runner.h" | 13 #include "base/sequenced_task_runner.h" |
13 #include "base/single_thread_task_runner.h" | 14 #include "base/single_thread_task_runner.h" |
14 #include "base/stl_util.h" | 15 #include "base/stl_util.h" |
15 #include "base/thread_task_runner_handle.h" | 16 #include "base/thread_task_runner_handle.h" |
16 #include "base/tracked_objects.h" | 17 #include "base/tracked_objects.h" |
17 #include "net/base/elements_upload_data_stream.h" | 18 #include "net/base/elements_upload_data_stream.h" |
18 #include "net/base/io_buffer.h" | 19 #include "net/base/io_buffer.h" |
19 #include "net/base/load_flags.h" | 20 #include "net/base/load_flags.h" |
20 #include "net/base/net_errors.h" | 21 #include "net/base/net_errors.h" |
21 #include "net/base/request_priority.h" | 22 #include "net/base/request_priority.h" |
(...skipping 361 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
383 stopped_on_redirect_ = true; | 384 stopped_on_redirect_ = true; |
384 url_ = redirect_info.new_url; | 385 url_ = redirect_info.new_url; |
385 response_code_ = request_->GetResponseCode(); | 386 response_code_ = request_->GetResponseCode(); |
386 was_fetched_via_proxy_ = request_->was_fetched_via_proxy(); | 387 was_fetched_via_proxy_ = request_->was_fetched_via_proxy(); |
387 request->Cancel(); | 388 request->Cancel(); |
388 OnReadCompleted(request, 0); | 389 OnReadCompleted(request, 0); |
389 } | 390 } |
390 } | 391 } |
391 | 392 |
392 void URLFetcherCore::OnResponseStarted(URLRequest* request) { | 393 void URLFetcherCore::OnResponseStarted(URLRequest* request) { |
| 394 // TODO(vadimt): Remove ScopedTracker below once crbug.com/423948 is fixed. |
| 395 tracked_objects::ScopedTracker tracking_profile( |
| 396 FROM_HERE_WITH_EXPLICIT_FUNCTION( |
| 397 "423948 URLFetcherCore::OnResponseStarted")); |
| 398 |
393 DCHECK_EQ(request, request_.get()); | 399 DCHECK_EQ(request, request_.get()); |
394 DCHECK(network_task_runner_->BelongsToCurrentThread()); | 400 DCHECK(network_task_runner_->BelongsToCurrentThread()); |
395 if (request_->status().is_success()) { | 401 if (request_->status().is_success()) { |
396 response_code_ = request_->GetResponseCode(); | 402 response_code_ = request_->GetResponseCode(); |
397 response_headers_ = request_->response_headers(); | 403 response_headers_ = request_->response_headers(); |
398 socket_address_ = request_->GetSocketAddress(); | 404 socket_address_ = request_->GetSocketAddress(); |
399 was_fetched_via_proxy_ = request_->was_fetched_via_proxy(); | 405 was_fetched_via_proxy_ = request_->was_fetched_via_proxy(); |
400 total_response_bytes_ = request_->GetExpectedContentSize(); | 406 total_response_bytes_ = request_->GetExpectedContentSize(); |
401 } | 407 } |
402 | 408 |
403 ReadResponse(); | 409 ReadResponse(); |
404 } | 410 } |
405 | 411 |
406 void URLFetcherCore::OnCertificateRequested( | 412 void URLFetcherCore::OnCertificateRequested( |
407 URLRequest* request, | 413 URLRequest* request, |
408 SSLCertRequestInfo* cert_request_info) { | 414 SSLCertRequestInfo* cert_request_info) { |
409 DCHECK_EQ(request, request_.get()); | 415 DCHECK_EQ(request, request_.get()); |
410 DCHECK(network_task_runner_->BelongsToCurrentThread()); | 416 DCHECK(network_task_runner_->BelongsToCurrentThread()); |
411 | 417 |
412 if (g_ignore_certificate_requests) { | 418 if (g_ignore_certificate_requests) { |
413 request->ContinueWithCertificate(NULL); | 419 request->ContinueWithCertificate(NULL); |
414 } else { | 420 } else { |
415 request->Cancel(); | 421 request->Cancel(); |
416 } | 422 } |
417 } | 423 } |
418 | 424 |
419 void URLFetcherCore::OnReadCompleted(URLRequest* request, | 425 void URLFetcherCore::OnReadCompleted(URLRequest* request, |
420 int bytes_read) { | 426 int bytes_read) { |
| 427 // TODO(vadimt): Remove ScopedTracker below once crbug.com/423948 is fixed. |
| 428 tracked_objects::ScopedTracker tracking_profile( |
| 429 FROM_HERE_WITH_EXPLICIT_FUNCTION( |
| 430 "423948 URLFetcherCore::OnReadCompleted")); |
| 431 |
421 DCHECK(request == request_); | 432 DCHECK(request == request_); |
422 DCHECK(network_task_runner_->BelongsToCurrentThread()); | 433 DCHECK(network_task_runner_->BelongsToCurrentThread()); |
423 | 434 |
424 if (!stopped_on_redirect_) | 435 if (!stopped_on_redirect_) |
425 url_ = request->url(); | 436 url_ = request->url(); |
426 URLRequestThrottlerManager* throttler_manager = | 437 URLRequestThrottlerManager* throttler_manager = |
427 request->context()->throttler_manager(); | 438 request->context()->throttler_manager(); |
428 if (throttler_manager) { | 439 if (throttler_manager) { |
429 url_throttler_entry_ = throttler_manager->RegisterRequestUrl(url_); | 440 url_throttler_entry_ = throttler_manager->RegisterRequestUrl(url_); |
430 } | 441 } |
(...skipping 464 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
895 } | 906 } |
896 | 907 |
897 void URLFetcherCore::InformDelegateDownloadProgressInDelegateThread( | 908 void URLFetcherCore::InformDelegateDownloadProgressInDelegateThread( |
898 int64 current, int64 total) { | 909 int64 current, int64 total) { |
899 DCHECK(delegate_task_runner_->BelongsToCurrentThread()); | 910 DCHECK(delegate_task_runner_->BelongsToCurrentThread()); |
900 if (delegate_) | 911 if (delegate_) |
901 delegate_->OnURLFetchDownloadProgress(fetcher_, current, total); | 912 delegate_->OnURLFetchDownloadProgress(fetcher_, current, total); |
902 } | 913 } |
903 | 914 |
904 } // namespace net | 915 } // namespace net |
OLD | NEW |