Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(66)

Side by Side Diff: content/child/resource_dispatcher_unittest.cc

Issue 2597873002: Move URLLoaderClientImpl to a separate file (Closed)
Patch Set: fix Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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>
11 #include <string> 11 #include <string>
12 #include <tuple> 12 #include <tuple>
13 #include <utility> 13 #include <utility>
14 #include <vector> 14 #include <vector>
15 15
16 #include "base/macros.h" 16 #include "base/macros.h"
17 #include "base/memory/ptr_util.h" 17 #include "base/memory/ptr_util.h"
18 #include "base/memory/shared_memory.h" 18 #include "base/memory/shared_memory.h"
19 #include "base/message_loop/message_loop.h" 19 #include "base/message_loop/message_loop.h"
20 #include "base/process/process_handle.h" 20 #include "base/process/process_handle.h"
21 #include "base/run_loop.h" 21 #include "base/run_loop.h"
22 #include "base/test/scoped_feature_list.h" 22 #include "base/test/scoped_feature_list.h"
23 #include "content/child/request_extra_data.h" 23 #include "content/child/request_extra_data.h"
24 #include "content/child/test_request_peer.h"
24 #include "content/common/appcache_interfaces.h" 25 #include "content/common/appcache_interfaces.h"
25 #include "content/common/resource_messages.h" 26 #include "content/common/resource_messages.h"
26 #include "content/common/resource_request.h" 27 #include "content/common/resource_request.h"
27 #include "content/common/resource_request_completion_status.h" 28 #include "content/common/resource_request_completion_status.h"
28 #include "content/common/service_worker/service_worker_types.h" 29 #include "content/common/service_worker/service_worker_types.h"
29 #include "content/public/child/fixed_received_data.h" 30 #include "content/public/child/fixed_received_data.h"
30 #include "content/public/child/request_peer.h" 31 #include "content/public/child/request_peer.h"
31 #include "content/public/child/resource_dispatcher_delegate.h" 32 #include "content/public/child/resource_dispatcher_delegate.h"
32 #include "content/public/common/content_features.h" 33 #include "content/public/common/content_features.h"
33 #include "content/public/common/request_context_frame_type.h" 34 #include "content/public/common/request_context_frame_type.h"
(...skipping 10 matching lines...) Expand all
44 static const char kTestPageUrl[] = "http://www.google.com/"; 45 static const char kTestPageUrl[] = "http://www.google.com/";
45 static const char kTestPageHeaders[] = 46 static const char kTestPageHeaders[] =
46 "HTTP/1.1 200 OK\nContent-Type:text/html\n\n"; 47 "HTTP/1.1 200 OK\nContent-Type:text/html\n\n";
47 static const char kTestPageMimeType[] = "text/html"; 48 static const char kTestPageMimeType[] = "text/html";
48 static const char kTestPageCharset[] = ""; 49 static const char kTestPageCharset[] = "";
49 static const char kTestPageContents[] = 50 static const char kTestPageContents[] =
50 "<html><head><title>Google</title></head><body><h1>Google</h1></body></html>"; 51 "<html><head><title>Google</title></head><body><h1>Google</h1></body></html>";
51 static const char kTestRedirectHeaders[] = 52 static const char kTestRedirectHeaders[] =
52 "HTTP/1.1 302 Found\nLocation:http://www.google.com/\n\n"; 53 "HTTP/1.1 302 Found\nLocation:http://www.google.com/\n\n";
53 54
54 // Listens for request response data and stores it so that it can be compared
55 // to the reference data.
56 class TestRequestPeer : public RequestPeer {
57 public:
58 struct Context;
59 TestRequestPeer(ResourceDispatcher* dispatcher, Context* context)
60 : dispatcher_(dispatcher), context_(context) {}
61
62 void OnUploadProgress(uint64_t position, uint64_t size) override {}
63
64 bool OnReceivedRedirect(const net::RedirectInfo& redirect_info,
65 const ResourceResponseInfo& info) override {
66 EXPECT_FALSE(context_->cancelled);
67 ++context_->seen_redirects;
68 if (context_->defer_on_redirect)
69 dispatcher_->SetDefersLoading(context_->request_id, true);
70 return context_->follow_redirects;
71 }
72
73 void OnReceivedResponse(const ResourceResponseInfo& info) override {
74 EXPECT_FALSE(context_->cancelled);
75 EXPECT_FALSE(context_->received_response);
76 context_->received_response = true;
77 if (context_->cancel_on_receive_response) {
78 dispatcher_->Cancel(context_->request_id);
79 context_->cancelled = true;
80 }
81 }
82
83 void OnDownloadedData(int len, int encoded_data_length) override {
84 EXPECT_FALSE(context_->cancelled);
85 context_->total_downloaded_data_length += len;
86 context_->total_encoded_data_length += encoded_data_length;
87 }
88
89 void OnReceivedData(std::unique_ptr<ReceivedData> data) override {
90 if (context_->cancelled)
91 return;
92 EXPECT_TRUE(context_->received_response);
93 EXPECT_FALSE(context_->complete);
94 context_->data.append(data->payload(), data->length());
95
96 if (context_->cancel_on_receive_data) {
97 dispatcher_->Cancel(context_->request_id);
98 context_->cancelled = true;
99 }
100 }
101
102 void OnTransferSizeUpdated(int transfer_size_diff) override {
103 if (context_->cancelled)
104 return;
105 context_->total_encoded_data_length += transfer_size_diff;
106 }
107
108 void OnCompletedRequest(int error_code,
109 bool was_ignored_by_handler,
110 bool stale_copy_in_cache,
111 const base::TimeTicks& completion_time,
112 int64_t total_transfer_size,
113 int64_t encoded_body_size) override {
114 if (context_->cancelled)
115 return;
116 EXPECT_TRUE(context_->received_response);
117 EXPECT_FALSE(context_->complete);
118 context_->complete = true;
119 }
120
121 struct Context {
122 // True if should follow redirects, false if should cancel them.
123 bool follow_redirects = true;
124 // True if the request should be deferred on redirects.
125 bool defer_on_redirect = false;
126
127 // Number of total redirects seen.
128 int seen_redirects = 0;
129
130 bool cancel_on_receive_response = false;
131 bool cancel_on_receive_data = false;
132 bool received_response = false;
133
134 // Data received. If downloading to file, remains empty.
135 std::string data;
136
137 // Total encoded data length, regardless of whether downloading to a file or
138 // not.
139 int total_encoded_data_length = 0;
140 // Total length when downloading to a file.
141 int total_downloaded_data_length = 0;
142
143 bool complete = false;
144 bool cancelled = false;
145 int request_id = -1;
146 };
147
148 private:
149 ResourceDispatcher* dispatcher_;
150 Context* context_;
151
152 DISALLOW_COPY_AND_ASSIGN(TestRequestPeer);
153 };
154
155 // Sets up the message sender override for the unit test. 55 // Sets up the message sender override for the unit test.
156 class ResourceDispatcherTest : public testing::Test, public IPC::Sender { 56 class ResourceDispatcherTest : public testing::Test, public IPC::Sender {
157 public: 57 public:
158 ResourceDispatcherTest() 58 ResourceDispatcherTest()
159 : dispatcher_(new ResourceDispatcher(this, message_loop_.task_runner())) { 59 : dispatcher_(new ResourceDispatcher(this, message_loop_.task_runner())) {
160 } 60 }
161 61
162 ~ResourceDispatcherTest() override { 62 ~ResourceDispatcherTest() override {
163 shared_memory_map_.clear(); 63 shared_memory_map_.clear();
164 dispatcher_.reset(); 64 dispatcher_.reset();
(...skipping 880 matching lines...) Expand 10 before | Expand all | Expand 10 after
1045 ResourceResponseHead response_head; 945 ResourceResponseHead response_head;
1046 946
1047 PerformTest(response_head); 947 PerformTest(response_head);
1048 948
1049 EXPECT_EQ(base::TimeTicks(), response_info().load_timing.request_start); 949 EXPECT_EQ(base::TimeTicks(), response_info().load_timing.request_start);
1050 EXPECT_EQ(base::TimeTicks(), 950 EXPECT_EQ(base::TimeTicks(),
1051 response_info().load_timing.connect_timing.dns_start); 951 response_info().load_timing.connect_timing.dns_start);
1052 } 952 }
1053 953
1054 } // namespace content 954 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698