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