| 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 "content/child/resource_dispatcher.h" | 5 #include "content/child/resource_dispatcher.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 #include <stdint.h> | 8 #include <stdint.h> |
| 9 | 9 |
| 10 #include <memory> | 10 #include <memory> |
| (...skipping 13 matching lines...) Expand all Loading... |
| 24 #include "content/child/request_extra_data.h" | 24 #include "content/child/request_extra_data.h" |
| 25 #include "content/child/request_info.h" | 25 #include "content/child/request_info.h" |
| 26 #include "content/common/appcache_interfaces.h" | 26 #include "content/common/appcache_interfaces.h" |
| 27 #include "content/common/resource_messages.h" | 27 #include "content/common/resource_messages.h" |
| 28 #include "content/common/resource_request.h" | 28 #include "content/common/resource_request.h" |
| 29 #include "content/common/resource_request_completion_status.h" | 29 #include "content/common/resource_request_completion_status.h" |
| 30 #include "content/common/service_worker/service_worker_types.h" | 30 #include "content/common/service_worker/service_worker_types.h" |
| 31 #include "content/public/child/fixed_received_data.h" | 31 #include "content/public/child/fixed_received_data.h" |
| 32 #include "content/public/child/request_peer.h" | 32 #include "content/public/child/request_peer.h" |
| 33 #include "content/public/child/resource_dispatcher_delegate.h" | 33 #include "content/public/child/resource_dispatcher_delegate.h" |
| 34 #include "content/public/common/content_features.cc" | 34 #include "content/public/common/content_features.h" |
| 35 #include "content/public/common/resource_response.h" | 35 #include "content/public/common/resource_response.h" |
| 36 #include "net/base/net_errors.h" | 36 #include "net/base/net_errors.h" |
| 37 #include "net/http/http_response_headers.h" | 37 #include "net/http/http_response_headers.h" |
| 38 #include "testing/gtest/include/gtest/gtest.h" | 38 #include "testing/gtest/include/gtest/gtest.h" |
| 39 | 39 |
| 40 namespace content { | 40 namespace content { |
| 41 | 41 |
| 42 static const char kTestPageUrl[] = "http://www.google.com/"; | 42 static const char kTestPageUrl[] = "http://www.google.com/"; |
| 43 static const char kTestPageHeaders[] = | 43 static const char kTestPageHeaders[] = |
| 44 "HTTP/1.1 200 OK\nContent-Type:text/html\n\n"; | 44 "HTTP/1.1 200 OK\nContent-Type:text/html\n\n"; |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 83 context_->total_downloaded_data_length += len; | 83 context_->total_downloaded_data_length += len; |
| 84 context_->total_encoded_data_length += encoded_data_length; | 84 context_->total_encoded_data_length += encoded_data_length; |
| 85 } | 85 } |
| 86 | 86 |
| 87 void OnReceivedData(std::unique_ptr<ReceivedData> data) override { | 87 void OnReceivedData(std::unique_ptr<ReceivedData> data) override { |
| 88 if (context_->cancelled) | 88 if (context_->cancelled) |
| 89 return; | 89 return; |
| 90 EXPECT_TRUE(context_->received_response); | 90 EXPECT_TRUE(context_->received_response); |
| 91 EXPECT_FALSE(context_->complete); | 91 EXPECT_FALSE(context_->complete); |
| 92 context_->data.append(data->payload(), data->length()); | 92 context_->data.append(data->payload(), data->length()); |
| 93 context_->total_encoded_data_length += data->encoded_length(); | 93 context_->total_encoded_data_length += data->encoded_data_length(); |
| 94 } | 94 } |
| 95 | 95 |
| 96 void OnCompletedRequest(int error_code, | 96 void OnCompletedRequest(int error_code, |
| 97 bool was_ignored_by_handler, | 97 bool was_ignored_by_handler, |
| 98 bool stale_copy_in_cache, | 98 bool stale_copy_in_cache, |
| 99 const std::string& security_info, | 99 const std::string& security_info, |
| 100 const base::TimeTicks& completion_time, | 100 const base::TimeTicks& completion_time, |
| 101 int64_t total_transfer_size) override { | 101 int64_t total_transfer_size) override { |
| 102 if (context_->cancelled) | 102 if (context_->cancelled) |
| 103 return; | 103 return; |
| (...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 283 | 283 |
| 284 void NotifyInlinedDataChunkReceived(int request_id, | 284 void NotifyInlinedDataChunkReceived(int request_id, |
| 285 const std::vector<char>& data) { | 285 const std::vector<char>& data) { |
| 286 auto size = data.size(); | 286 auto size = data.size(); |
| 287 EXPECT_TRUE(dispatcher_->OnMessageReceived( | 287 EXPECT_TRUE(dispatcher_->OnMessageReceived( |
| 288 ResourceMsg_InlinedDataChunkReceived(request_id, data, size, size))); | 288 ResourceMsg_InlinedDataChunkReceived(request_id, data, size, size))); |
| 289 } | 289 } |
| 290 | 290 |
| 291 void NotifyDataDownloaded(int request_id, | 291 void NotifyDataDownloaded(int request_id, |
| 292 int decoded_length, | 292 int decoded_length, |
| 293 int encoded_length) { | 293 int encoded_data_length) { |
| 294 EXPECT_TRUE(dispatcher_->OnMessageReceived(ResourceMsg_DataDownloaded( | 294 EXPECT_TRUE(dispatcher_->OnMessageReceived(ResourceMsg_DataDownloaded( |
| 295 request_id, decoded_length, encoded_length))); | 295 request_id, decoded_length, encoded_data_length))); |
| 296 } | 296 } |
| 297 | 297 |
| 298 void NotifyRequestComplete(int request_id, size_t total_size) { | 298 void NotifyRequestComplete(int request_id, size_t total_size) { |
| 299 ResourceRequestCompletionStatus request_complete_data; | 299 ResourceRequestCompletionStatus request_complete_data; |
| 300 request_complete_data.error_code = net::OK; | 300 request_complete_data.error_code = net::OK; |
| 301 request_complete_data.was_ignored_by_handler = false; | 301 request_complete_data.was_ignored_by_handler = false; |
| 302 request_complete_data.exists_in_cache = false; | 302 request_complete_data.exists_in_cache = false; |
| 303 request_complete_data.encoded_data_length = total_size; | 303 request_complete_data.encoded_data_length = total_size; |
| 304 EXPECT_TRUE(dispatcher_->OnMessageReceived( | 304 EXPECT_TRUE(dispatcher_->OnMessageReceived( |
| 305 ResourceMsg_RequestComplete(request_id, request_complete_data))); | 305 ResourceMsg_RequestComplete(request_id, request_complete_data))); |
| (...skipping 237 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 543 } | 543 } |
| 544 | 544 |
| 545 void OnCompletedRequest(int error_code, | 545 void OnCompletedRequest(int error_code, |
| 546 bool was_ignored_by_handler, | 546 bool was_ignored_by_handler, |
| 547 bool stale_copy_in_cache, | 547 bool stale_copy_in_cache, |
| 548 const std::string& security_info, | 548 const std::string& security_info, |
| 549 const base::TimeTicks& completion_time, | 549 const base::TimeTicks& completion_time, |
| 550 int64_t total_transfer_size) override { | 550 int64_t total_transfer_size) override { |
| 551 original_peer_->OnReceivedResponse(response_info_); | 551 original_peer_->OnReceivedResponse(response_info_); |
| 552 if (!data_.empty()) { | 552 if (!data_.empty()) { |
| 553 original_peer_->OnReceivedData(base::WrapUnique( | 553 original_peer_->OnReceivedData(base::WrapUnique(new FixedReceivedData( |
| 554 new FixedReceivedData(data_.data(), data_.size(), -1))); | 554 data_.data(), data_.size(), -1, data_.size()))); |
| 555 } | 555 } |
| 556 original_peer_->OnCompletedRequest(error_code, was_ignored_by_handler, | 556 original_peer_->OnCompletedRequest(error_code, was_ignored_by_handler, |
| 557 stale_copy_in_cache, security_info, | 557 stale_copy_in_cache, security_info, |
| 558 completion_time, total_transfer_size); | 558 completion_time, total_transfer_size); |
| 559 } | 559 } |
| 560 | 560 |
| 561 private: | 561 private: |
| 562 std::unique_ptr<RequestPeer> original_peer_; | 562 std::unique_ptr<RequestPeer> original_peer_; |
| 563 ResourceResponseInfo response_info_; | 563 ResourceResponseInfo response_info_; |
| 564 std::string data_; | 564 std::string data_; |
| (...skipping 251 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 816 const int kEncodedIncrement = 50; | 816 const int kEncodedIncrement = 50; |
| 817 | 817 |
| 818 int id = ConsumeRequestResource(); | 818 int id = ConsumeRequestResource(); |
| 819 EXPECT_EQ(0u, queued_messages()); | 819 EXPECT_EQ(0u, queued_messages()); |
| 820 | 820 |
| 821 NotifyReceivedResponse(id); | 821 NotifyReceivedResponse(id); |
| 822 EXPECT_EQ(0u, queued_messages()); | 822 EXPECT_EQ(0u, queued_messages()); |
| 823 EXPECT_TRUE(peer_context.received_response); | 823 EXPECT_TRUE(peer_context.received_response); |
| 824 | 824 |
| 825 int expected_total_downloaded_length = 0; | 825 int expected_total_downloaded_length = 0; |
| 826 int expected_total_encoded_length = 0; | 826 int expected_total_encoded_data_length = 0; |
| 827 for (int i = 0; i < 10; ++i) { | 827 for (int i = 0; i < 10; ++i) { |
| 828 NotifyDataDownloaded(id, kDownloadedIncrement, kEncodedIncrement); | 828 NotifyDataDownloaded(id, kDownloadedIncrement, kEncodedIncrement); |
| 829 ConsumeDataDownloaded_ACK(id); | 829 ConsumeDataDownloaded_ACK(id); |
| 830 expected_total_downloaded_length += kDownloadedIncrement; | 830 expected_total_downloaded_length += kDownloadedIncrement; |
| 831 expected_total_encoded_length += kEncodedIncrement; | 831 expected_total_encoded_data_length += kEncodedIncrement; |
| 832 EXPECT_EQ(expected_total_downloaded_length, | 832 EXPECT_EQ(expected_total_downloaded_length, |
| 833 peer_context.total_downloaded_data_length); | 833 peer_context.total_downloaded_data_length); |
| 834 EXPECT_EQ(expected_total_encoded_length, | 834 EXPECT_EQ(expected_total_encoded_data_length, |
| 835 peer_context.total_encoded_data_length); | 835 peer_context.total_encoded_data_length); |
| 836 } | 836 } |
| 837 | 837 |
| 838 NotifyRequestComplete(id, strlen(kTestPageContents)); | 838 NotifyRequestComplete(id, strlen(kTestPageContents)); |
| 839 EXPECT_EQ("", peer_context.data); | 839 EXPECT_EQ("", peer_context.data); |
| 840 EXPECT_TRUE(peer_context.complete); | 840 EXPECT_TRUE(peer_context.complete); |
| 841 EXPECT_EQ(0u, queued_messages()); | 841 EXPECT_EQ(0u, queued_messages()); |
| 842 | 842 |
| 843 dispatcher()->RemovePendingRequest(request_id); | 843 dispatcher()->RemovePendingRequest(request_id); |
| 844 ConsumeReleaseDownloadedFile(id); | 844 ConsumeReleaseDownloadedFile(id); |
| 845 EXPECT_EQ(0u, queued_messages()); | 845 EXPECT_EQ(0u, queued_messages()); |
| 846 EXPECT_EQ(expected_total_downloaded_length, | 846 EXPECT_EQ(expected_total_downloaded_length, |
| 847 peer_context.total_downloaded_data_length); | 847 peer_context.total_downloaded_data_length); |
| 848 EXPECT_EQ(expected_total_encoded_length, | 848 EXPECT_EQ(expected_total_encoded_data_length, |
| 849 peer_context.total_encoded_data_length); | 849 peer_context.total_encoded_data_length); |
| 850 } | 850 } |
| 851 | 851 |
| 852 // Make sure that when a download to file is cancelled, the file is destroyed. | 852 // Make sure that when a download to file is cancelled, the file is destroyed. |
| 853 TEST_F(ResourceDispatcherTest, CancelDownloadToFile) { | 853 TEST_F(ResourceDispatcherTest, CancelDownloadToFile) { |
| 854 std::unique_ptr<RequestInfo> request_info(CreateRequestInfo(true)); | 854 std::unique_ptr<RequestInfo> request_info(CreateRequestInfo(true)); |
| 855 TestRequestPeer::Context peer_context; | 855 TestRequestPeer::Context peer_context; |
| 856 int request_id = StartAsync(*request_info.get(), NULL, &peer_context); | 856 int request_id = StartAsync(*request_info.get(), NULL, &peer_context); |
| 857 | 857 |
| 858 int id = ConsumeRequestResource(); | 858 int id = ConsumeRequestResource(); |
| (...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 934 ResourceResponseHead response_head; | 934 ResourceResponseHead response_head; |
| 935 | 935 |
| 936 PerformTest(response_head); | 936 PerformTest(response_head); |
| 937 | 937 |
| 938 EXPECT_EQ(base::TimeTicks(), response_info().load_timing.request_start); | 938 EXPECT_EQ(base::TimeTicks(), response_info().load_timing.request_start); |
| 939 EXPECT_EQ(base::TimeTicks(), | 939 EXPECT_EQ(base::TimeTicks(), |
| 940 response_info().load_timing.connect_timing.dns_start); | 940 response_info().load_timing.connect_timing.dns_start); |
| 941 } | 941 } |
| 942 | 942 |
| 943 } // namespace content | 943 } // namespace content |
| OLD | NEW |