OLD | NEW |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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_job.h" | 5 #include "net/url_request/url_request_job.h" |
6 | 6 |
7 #include "base/message_loop.h" | 7 #include "base/message_loop.h" |
8 #include "base/metrics/histogram.h" | 8 #include "base/metrics/histogram.h" |
9 #include "base/string_number_conversions.h" | 9 #include "base/string_number_conversions.h" |
10 #include "base/string_util.h" | 10 #include "base/string_util.h" |
11 #include "net/base/auth.h" | 11 #include "net/base/auth.h" |
12 #include "net/base/io_buffer.h" | 12 #include "net/base/io_buffer.h" |
13 #include "net/base/load_flags.h" | 13 #include "net/base/load_flags.h" |
14 #include "net/base/mime_util.h" | 14 #include "net/base/mime_util.h" |
15 #include "net/base/net_errors.h" | 15 #include "net/base/net_errors.h" |
| 16 #include "net/http/http_network_delegate.h" |
16 #include "net/http/http_response_headers.h" | 17 #include "net/http/http_response_headers.h" |
17 #include "net/url_request/url_request.h" | 18 #include "net/url_request/url_request.h" |
| 19 #include "net/url_request/url_request_context.h" |
18 #include "net/url_request/url_request_job_metrics.h" | 20 #include "net/url_request/url_request_job_metrics.h" |
19 #include "net/url_request/url_request_job_tracker.h" | 21 #include "net/url_request/url_request_job_tracker.h" |
20 | 22 |
21 using base::Time; | 23 using base::Time; |
22 using base::TimeTicks; | 24 using base::TimeTicks; |
23 | 25 |
24 namespace net { | 26 namespace net { |
25 | 27 |
26 // Buffer size allocated when de-compressing data. | 28 // Buffer size allocated when de-compressing data. |
27 // static | 29 // static |
(...skipping 495 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
523 | 525 |
524 prefilter_bytes_read_ += bytes_read; | 526 prefilter_bytes_read_ += bytes_read; |
525 if (filter_.get()) { | 527 if (filter_.get()) { |
526 // Tell the filter that it has more data | 528 // Tell the filter that it has more data |
527 FilteredDataRead(bytes_read); | 529 FilteredDataRead(bytes_read); |
528 | 530 |
529 // Filter the data. | 531 // Filter the data. |
530 int filter_bytes_read = 0; | 532 int filter_bytes_read = 0; |
531 if (ReadFilteredData(&filter_bytes_read)) { | 533 if (ReadFilteredData(&filter_bytes_read)) { |
532 postfilter_bytes_read_ += filter_bytes_read; | 534 postfilter_bytes_read_ += filter_bytes_read; |
| 535 if (request_->context() && request_->context()->network_delegate()) { |
| 536 request_->context()->network_delegate()->OnReadCompleted( |
| 537 request_, filter_bytes_read); |
| 538 } |
533 request_->delegate()->OnReadCompleted(request_, filter_bytes_read); | 539 request_->delegate()->OnReadCompleted(request_, filter_bytes_read); |
534 } | 540 } |
535 } else { | 541 } else { |
536 postfilter_bytes_read_ += bytes_read; | 542 postfilter_bytes_read_ += bytes_read; |
| 543 if (request_->context() && request_->context()->network_delegate()) { |
| 544 request_->context()->network_delegate()->OnReadCompleted( |
| 545 request_, bytes_read); |
| 546 } |
537 request_->delegate()->OnReadCompleted(request_, bytes_read); | 547 request_->delegate()->OnReadCompleted(request_, bytes_read); |
538 } | 548 } |
539 } | 549 } |
540 | 550 |
541 void URLRequestJob::NotifyStartError(const URLRequestStatus &status) { | 551 void URLRequestJob::NotifyStartError(const URLRequestStatus &status) { |
542 DCHECK(!has_handled_response_); | 552 DCHECK(!has_handled_response_); |
543 has_handled_response_ = true; | 553 has_handled_response_ = true; |
544 if (request_) { | 554 if (request_) { |
545 request_->set_status(status); | 555 request_->set_status(status); |
546 request_->ResponseStarted(); | 556 request_->ResponseStarted(); |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
598 | 608 |
599 void URLRequestJob::CompleteNotifyDone() { | 609 void URLRequestJob::CompleteNotifyDone() { |
600 // Check if we should notify the delegate that we're done because of an error. | 610 // Check if we should notify the delegate that we're done because of an error. |
601 if (request_ && | 611 if (request_ && |
602 !request_->status().is_success() && | 612 !request_->status().is_success() && |
603 request_->delegate()) { | 613 request_->delegate()) { |
604 // We report the error differently depending on whether we've called | 614 // We report the error differently depending on whether we've called |
605 // OnResponseStarted yet. | 615 // OnResponseStarted yet. |
606 if (has_handled_response_) { | 616 if (has_handled_response_) { |
607 // We signal the error by calling OnReadComplete with a bytes_read of -1. | 617 // We signal the error by calling OnReadComplete with a bytes_read of -1. |
| 618 if (request_->context() && request_->context()->network_delegate()) |
| 619 request_->context()->network_delegate()->OnReadCompleted(request_, -1); |
608 request_->delegate()->OnReadCompleted(request_, -1); | 620 request_->delegate()->OnReadCompleted(request_, -1); |
609 } else { | 621 } else { |
610 has_handled_response_ = true; | 622 has_handled_response_ = true; |
611 request_->ResponseStarted(); | 623 request_->ResponseStarted(); |
612 } | 624 } |
613 } | 625 } |
614 } | 626 } |
615 | 627 |
616 void URLRequestJob::NotifyCanceled() { | 628 void URLRequestJob::NotifyCanceled() { |
617 if (!done_) { | 629 if (!done_) { |
(...skipping 309 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
927 | 939 |
928 if (is_compressed_) { | 940 if (is_compressed_) { |
929 COMPRESSION_HISTOGRAM("NoProxy.BytesBeforeCompression", compressed_B); | 941 COMPRESSION_HISTOGRAM("NoProxy.BytesBeforeCompression", compressed_B); |
930 COMPRESSION_HISTOGRAM("NoProxy.BytesAfterCompression", decompressed_B); | 942 COMPRESSION_HISTOGRAM("NoProxy.BytesAfterCompression", decompressed_B); |
931 } else { | 943 } else { |
932 COMPRESSION_HISTOGRAM("NoProxy.ShouldHaveBeenCompressed", decompressed_B); | 944 COMPRESSION_HISTOGRAM("NoProxy.ShouldHaveBeenCompressed", decompressed_B); |
933 } | 945 } |
934 } | 946 } |
935 | 947 |
936 } // namespace net | 948 } // namespace net |
OLD | NEW |