OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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/url_loader_client_impl.h" | 5 #include "content/child/url_loader_client_impl.h" |
6 | 6 |
7 #include <vector> | 7 #include <vector> |
8 #include "base/memory/ptr_util.h" | 8 #include "base/memory/ptr_util.h" |
9 #include "base/message_loop/message_loop.h" | 9 #include "base/message_loop/message_loop.h" |
10 #include "base/run_loop.h" | 10 #include "base/run_loop.h" |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
46 } | 46 } |
47 | 47 |
48 bool Send(IPC::Message* message) override { | 48 bool Send(IPC::Message* message) override { |
49 ADD_FAILURE() << "IPC::Sender::Send should not be called."; | 49 ADD_FAILURE() << "IPC::Sender::Send should not be called."; |
50 return false; | 50 return false; |
51 } | 51 } |
52 | 52 |
53 void CreateLoaderAndStart(mojom::URLLoaderAssociatedRequest request, | 53 void CreateLoaderAndStart(mojom::URLLoaderAssociatedRequest request, |
54 int32_t routing_id, | 54 int32_t routing_id, |
55 int32_t request_id, | 55 int32_t request_id, |
| 56 uint32_t options, |
56 const ResourceRequest& url_request, | 57 const ResourceRequest& url_request, |
57 mojom::URLLoaderClientPtr client) override { | 58 mojom::URLLoaderClientPtr client) override { |
58 url_loader_client_ = std::move(client); | 59 url_loader_client_ = std::move(client); |
59 } | 60 } |
60 | 61 |
61 void SyncLoad(int32_t routing_id, | 62 void SyncLoad(int32_t routing_id, |
62 int32_t request_id, | 63 int32_t request_id, |
63 const ResourceRequest& request, | 64 const ResourceRequest& request, |
64 const SyncLoadCallback& callback) override { | 65 const SyncLoadCallback& callback) override { |
65 NOTREACHED(); | 66 NOTREACHED(); |
(...skipping 13 matching lines...) Expand all Loading... |
79 TestRequestPeer::Context request_peer_context_; | 80 TestRequestPeer::Context request_peer_context_; |
80 int request_id_ = 0; | 81 int request_id_ = 0; |
81 mojom::URLLoaderClientPtr url_loader_client_; | 82 mojom::URLLoaderClientPtr url_loader_client_; |
82 mojom::URLLoaderFactoryPtr url_loader_factory_proxy_; | 83 mojom::URLLoaderFactoryPtr url_loader_factory_proxy_; |
83 mojo::Binding<mojom::URLLoaderFactory> mojo_binding_; | 84 mojo::Binding<mojom::URLLoaderFactory> mojo_binding_; |
84 }; | 85 }; |
85 | 86 |
86 TEST_F(URLLoaderClientImplTest, OnReceiveResponse) { | 87 TEST_F(URLLoaderClientImplTest, OnReceiveResponse) { |
87 ResourceResponseHead response_head; | 88 ResourceResponseHead response_head; |
88 | 89 |
89 url_loader_client_->OnReceiveResponse(response_head, nullptr); | 90 url_loader_client_->OnReceiveResponse(response_head, base::nullopt, nullptr); |
90 | 91 |
91 EXPECT_FALSE(request_peer_context_.received_response); | 92 EXPECT_FALSE(request_peer_context_.received_response); |
92 base::RunLoop().RunUntilIdle(); | 93 base::RunLoop().RunUntilIdle(); |
93 EXPECT_TRUE(request_peer_context_.received_response); | 94 EXPECT_TRUE(request_peer_context_.received_response); |
94 } | 95 } |
95 | 96 |
96 TEST_F(URLLoaderClientImplTest, ResponseBody) { | 97 TEST_F(URLLoaderClientImplTest, ResponseBody) { |
97 ResourceResponseHead response_head; | 98 ResourceResponseHead response_head; |
98 | 99 |
99 url_loader_client_->OnReceiveResponse(response_head, nullptr); | 100 url_loader_client_->OnReceiveResponse(response_head, base::nullopt, nullptr); |
100 | 101 |
101 EXPECT_FALSE(request_peer_context_.received_response); | 102 EXPECT_FALSE(request_peer_context_.received_response); |
102 base::RunLoop().RunUntilIdle(); | 103 base::RunLoop().RunUntilIdle(); |
103 EXPECT_TRUE(request_peer_context_.received_response); | 104 EXPECT_TRUE(request_peer_context_.received_response); |
104 | 105 |
105 mojo::DataPipe data_pipe(DataPipeOptions()); | 106 mojo::DataPipe data_pipe(DataPipeOptions()); |
106 url_loader_client_->OnStartLoadingResponseBody( | 107 url_loader_client_->OnStartLoadingResponseBody( |
107 std::move(data_pipe.consumer_handle)); | 108 std::move(data_pipe.consumer_handle)); |
108 uint32_t size = 5; | 109 uint32_t size = 5; |
109 MojoResult result = | 110 MojoResult result = |
(...skipping 13 matching lines...) Expand all Loading... |
123 url_loader_client_->OnReceiveRedirect(redirect_info, response_head); | 124 url_loader_client_->OnReceiveRedirect(redirect_info, response_head); |
124 | 125 |
125 EXPECT_EQ(0, request_peer_context_.seen_redirects); | 126 EXPECT_EQ(0, request_peer_context_.seen_redirects); |
126 base::RunLoop().RunUntilIdle(); | 127 base::RunLoop().RunUntilIdle(); |
127 EXPECT_EQ(1, request_peer_context_.seen_redirects); | 128 EXPECT_EQ(1, request_peer_context_.seen_redirects); |
128 } | 129 } |
129 | 130 |
130 TEST_F(URLLoaderClientImplTest, OnDataDownloaded) { | 131 TEST_F(URLLoaderClientImplTest, OnDataDownloaded) { |
131 ResourceResponseHead response_head; | 132 ResourceResponseHead response_head; |
132 | 133 |
133 url_loader_client_->OnReceiveResponse(response_head, nullptr); | 134 url_loader_client_->OnReceiveResponse(response_head, base::nullopt, nullptr); |
134 url_loader_client_->OnDataDownloaded(8, 13); | 135 url_loader_client_->OnDataDownloaded(8, 13); |
135 url_loader_client_->OnDataDownloaded(2, 1); | 136 url_loader_client_->OnDataDownloaded(2, 1); |
136 | 137 |
137 EXPECT_FALSE(request_peer_context_.received_response); | 138 EXPECT_FALSE(request_peer_context_.received_response); |
138 EXPECT_EQ(0, request_peer_context_.total_downloaded_data_length); | 139 EXPECT_EQ(0, request_peer_context_.total_downloaded_data_length); |
139 EXPECT_EQ(0, request_peer_context_.total_encoded_data_length); | 140 EXPECT_EQ(0, request_peer_context_.total_encoded_data_length); |
140 base::RunLoop().RunUntilIdle(); | 141 base::RunLoop().RunUntilIdle(); |
141 EXPECT_TRUE(request_peer_context_.received_response); | 142 EXPECT_TRUE(request_peer_context_.received_response); |
142 EXPECT_EQ(10, request_peer_context_.total_downloaded_data_length); | 143 EXPECT_EQ(10, request_peer_context_.total_downloaded_data_length); |
143 EXPECT_EQ(14, request_peer_context_.total_encoded_data_length); | 144 EXPECT_EQ(14, request_peer_context_.total_encoded_data_length); |
144 } | 145 } |
145 | 146 |
146 TEST_F(URLLoaderClientImplTest, OnReceiveCachedMetadata) { | 147 TEST_F(URLLoaderClientImplTest, OnReceiveCachedMetadata) { |
147 ResourceResponseHead response_head; | 148 ResourceResponseHead response_head; |
148 std::vector<uint8_t> metadata; | 149 std::vector<uint8_t> metadata; |
149 metadata.push_back('a'); | 150 metadata.push_back('a'); |
150 | 151 |
151 url_loader_client_->OnReceiveResponse(response_head, nullptr); | 152 url_loader_client_->OnReceiveResponse(response_head, base::nullopt, nullptr); |
152 url_loader_client_->OnReceiveCachedMetadata(metadata); | 153 url_loader_client_->OnReceiveCachedMetadata(metadata); |
153 | 154 |
154 EXPECT_FALSE(request_peer_context_.received_response); | 155 EXPECT_FALSE(request_peer_context_.received_response); |
155 EXPECT_TRUE(request_peer_context_.cached_metadata.empty()); | 156 EXPECT_TRUE(request_peer_context_.cached_metadata.empty()); |
156 base::RunLoop().RunUntilIdle(); | 157 base::RunLoop().RunUntilIdle(); |
157 EXPECT_TRUE(request_peer_context_.received_response); | 158 EXPECT_TRUE(request_peer_context_.received_response); |
158 ASSERT_EQ(1u, request_peer_context_.cached_metadata.size()); | 159 ASSERT_EQ(1u, request_peer_context_.cached_metadata.size()); |
159 EXPECT_EQ('a', request_peer_context_.cached_metadata[0]); | 160 EXPECT_EQ('a', request_peer_context_.cached_metadata[0]); |
160 } | 161 } |
161 | 162 |
162 TEST_F(URLLoaderClientImplTest, OnTransferSizeUpdated) { | 163 TEST_F(URLLoaderClientImplTest, OnTransferSizeUpdated) { |
163 ResourceResponseHead response_head; | 164 ResourceResponseHead response_head; |
164 | 165 |
165 url_loader_client_->OnReceiveResponse(response_head, nullptr); | 166 url_loader_client_->OnReceiveResponse(response_head, base::nullopt, nullptr); |
166 url_loader_client_->OnTransferSizeUpdated(4); | 167 url_loader_client_->OnTransferSizeUpdated(4); |
167 url_loader_client_->OnTransferSizeUpdated(4); | 168 url_loader_client_->OnTransferSizeUpdated(4); |
168 | 169 |
169 EXPECT_FALSE(request_peer_context_.received_response); | 170 EXPECT_FALSE(request_peer_context_.received_response); |
170 EXPECT_EQ(0, request_peer_context_.total_encoded_data_length); | 171 EXPECT_EQ(0, request_peer_context_.total_encoded_data_length); |
171 base::RunLoop().RunUntilIdle(); | 172 base::RunLoop().RunUntilIdle(); |
172 EXPECT_TRUE(request_peer_context_.received_response); | 173 EXPECT_TRUE(request_peer_context_.received_response); |
173 EXPECT_EQ(8, request_peer_context_.total_encoded_data_length); | 174 EXPECT_EQ(8, request_peer_context_.total_encoded_data_length); |
174 } | 175 } |
175 | 176 |
176 TEST_F(URLLoaderClientImplTest, OnCompleteWithoutResponseBody) { | 177 TEST_F(URLLoaderClientImplTest, OnCompleteWithoutResponseBody) { |
177 ResourceResponseHead response_head; | 178 ResourceResponseHead response_head; |
178 ResourceRequestCompletionStatus completion_status; | 179 ResourceRequestCompletionStatus completion_status; |
179 | 180 |
180 url_loader_client_->OnReceiveResponse(response_head, nullptr); | 181 url_loader_client_->OnReceiveResponse(response_head, base::nullopt, nullptr); |
181 url_loader_client_->OnComplete(completion_status); | 182 url_loader_client_->OnComplete(completion_status); |
182 | 183 |
183 EXPECT_FALSE(request_peer_context_.received_response); | 184 EXPECT_FALSE(request_peer_context_.received_response); |
184 EXPECT_FALSE(request_peer_context_.complete); | 185 EXPECT_FALSE(request_peer_context_.complete); |
185 base::RunLoop().RunUntilIdle(); | 186 base::RunLoop().RunUntilIdle(); |
186 EXPECT_TRUE(request_peer_context_.received_response); | 187 EXPECT_TRUE(request_peer_context_.received_response); |
187 EXPECT_TRUE(request_peer_context_.complete); | 188 EXPECT_TRUE(request_peer_context_.complete); |
188 } | 189 } |
189 | 190 |
190 TEST_F(URLLoaderClientImplTest, OnCompleteWithResponseBody) { | 191 TEST_F(URLLoaderClientImplTest, OnCompleteWithResponseBody) { |
191 ResourceResponseHead response_head; | 192 ResourceResponseHead response_head; |
192 ResourceRequestCompletionStatus completion_status; | 193 ResourceRequestCompletionStatus completion_status; |
193 | 194 |
194 url_loader_client_->OnReceiveResponse(response_head, nullptr); | 195 url_loader_client_->OnReceiveResponse(response_head, base::nullopt, nullptr); |
195 mojo::DataPipe data_pipe(DataPipeOptions()); | 196 mojo::DataPipe data_pipe(DataPipeOptions()); |
196 url_loader_client_->OnStartLoadingResponseBody( | 197 url_loader_client_->OnStartLoadingResponseBody( |
197 std::move(data_pipe.consumer_handle)); | 198 std::move(data_pipe.consumer_handle)); |
198 uint32_t size = 5; | 199 uint32_t size = 5; |
199 MojoResult result = | 200 MojoResult result = |
200 mojo::WriteDataRaw(data_pipe.producer_handle.get(), "hello", &size, | 201 mojo::WriteDataRaw(data_pipe.producer_handle.get(), "hello", &size, |
201 MOJO_WRITE_DATA_FLAG_NONE); | 202 MOJO_WRITE_DATA_FLAG_NONE); |
202 ASSERT_EQ(MOJO_RESULT_OK, result); | 203 ASSERT_EQ(MOJO_RESULT_OK, result); |
203 EXPECT_EQ(5u, size); | 204 EXPECT_EQ(5u, size); |
204 data_pipe.producer_handle.reset(); | 205 data_pipe.producer_handle.reset(); |
(...skipping 14 matching lines...) Expand all Loading... |
219 EXPECT_TRUE(request_peer_context_.complete); | 220 EXPECT_TRUE(request_peer_context_.complete); |
220 } | 221 } |
221 | 222 |
222 // Due to the lack of ordering guarantee, it is possible that the response body | 223 // Due to the lack of ordering guarantee, it is possible that the response body |
223 // bytes arrives after the completion message. URLLoaderClientImpl should | 224 // bytes arrives after the completion message. URLLoaderClientImpl should |
224 // restore the order. | 225 // restore the order. |
225 TEST_F(URLLoaderClientImplTest, OnCompleteShouldBeTheLastMessage) { | 226 TEST_F(URLLoaderClientImplTest, OnCompleteShouldBeTheLastMessage) { |
226 ResourceResponseHead response_head; | 227 ResourceResponseHead response_head; |
227 ResourceRequestCompletionStatus completion_status; | 228 ResourceRequestCompletionStatus completion_status; |
228 | 229 |
229 url_loader_client_->OnReceiveResponse(response_head, nullptr); | 230 url_loader_client_->OnReceiveResponse(response_head, base::nullopt, nullptr); |
230 mojo::DataPipe data_pipe(DataPipeOptions()); | 231 mojo::DataPipe data_pipe(DataPipeOptions()); |
231 url_loader_client_->OnStartLoadingResponseBody( | 232 url_loader_client_->OnStartLoadingResponseBody( |
232 std::move(data_pipe.consumer_handle)); | 233 std::move(data_pipe.consumer_handle)); |
233 url_loader_client_->OnComplete(completion_status); | 234 url_loader_client_->OnComplete(completion_status); |
234 | 235 |
235 base::RunLoop().RunUntilIdle(); | 236 base::RunLoop().RunUntilIdle(); |
236 EXPECT_TRUE(request_peer_context_.received_response); | 237 EXPECT_TRUE(request_peer_context_.received_response); |
237 EXPECT_FALSE(request_peer_context_.complete); | 238 EXPECT_FALSE(request_peer_context_.complete); |
238 | 239 |
239 uint32_t size = 5; | 240 uint32_t size = 5; |
(...skipping 12 matching lines...) Expand all Loading... |
252 EXPECT_EQ("hello", request_peer_context_.data); | 253 EXPECT_EQ("hello", request_peer_context_.data); |
253 EXPECT_TRUE(request_peer_context_.complete); | 254 EXPECT_TRUE(request_peer_context_.complete); |
254 } | 255 } |
255 | 256 |
256 TEST_F(URLLoaderClientImplTest, CancelOnReceiveResponse) { | 257 TEST_F(URLLoaderClientImplTest, CancelOnReceiveResponse) { |
257 request_peer_context_.cancel_on_receive_response = true; | 258 request_peer_context_.cancel_on_receive_response = true; |
258 | 259 |
259 ResourceResponseHead response_head; | 260 ResourceResponseHead response_head; |
260 ResourceRequestCompletionStatus completion_status; | 261 ResourceRequestCompletionStatus completion_status; |
261 | 262 |
262 url_loader_client_->OnReceiveResponse(response_head, nullptr); | 263 url_loader_client_->OnReceiveResponse(response_head, base::nullopt, nullptr); |
263 mojo::DataPipe data_pipe(DataPipeOptions()); | 264 mojo::DataPipe data_pipe(DataPipeOptions()); |
264 url_loader_client_->OnStartLoadingResponseBody( | 265 url_loader_client_->OnStartLoadingResponseBody( |
265 std::move(data_pipe.consumer_handle)); | 266 std::move(data_pipe.consumer_handle)); |
266 url_loader_client_->OnComplete(completion_status); | 267 url_loader_client_->OnComplete(completion_status); |
267 | 268 |
268 EXPECT_FALSE(request_peer_context_.received_response); | 269 EXPECT_FALSE(request_peer_context_.received_response); |
269 EXPECT_FALSE(request_peer_context_.complete); | 270 EXPECT_FALSE(request_peer_context_.complete); |
270 EXPECT_FALSE(request_peer_context_.cancelled); | 271 EXPECT_FALSE(request_peer_context_.cancelled); |
271 | 272 |
272 base::RunLoop().RunUntilIdle(); | 273 base::RunLoop().RunUntilIdle(); |
273 EXPECT_TRUE(request_peer_context_.received_response); | 274 EXPECT_TRUE(request_peer_context_.received_response); |
274 EXPECT_FALSE(request_peer_context_.complete); | 275 EXPECT_FALSE(request_peer_context_.complete); |
275 EXPECT_TRUE(request_peer_context_.cancelled); | 276 EXPECT_TRUE(request_peer_context_.cancelled); |
276 } | 277 } |
277 | 278 |
278 TEST_F(URLLoaderClientImplTest, CancelOnReceiveData) { | 279 TEST_F(URLLoaderClientImplTest, CancelOnReceiveData) { |
279 request_peer_context_.cancel_on_receive_data = true; | 280 request_peer_context_.cancel_on_receive_data = true; |
280 | 281 |
281 ResourceResponseHead response_head; | 282 ResourceResponseHead response_head; |
282 ResourceRequestCompletionStatus completion_status; | 283 ResourceRequestCompletionStatus completion_status; |
283 | 284 |
284 mojo::DataPipe data_pipe(DataPipeOptions()); | 285 mojo::DataPipe data_pipe(DataPipeOptions()); |
285 uint32_t size = 5; | 286 uint32_t size = 5; |
286 MojoResult result = | 287 MojoResult result = |
287 mojo::WriteDataRaw(data_pipe.producer_handle.get(), "hello", &size, | 288 mojo::WriteDataRaw(data_pipe.producer_handle.get(), "hello", &size, |
288 MOJO_WRITE_DATA_FLAG_NONE); | 289 MOJO_WRITE_DATA_FLAG_NONE); |
289 ASSERT_EQ(MOJO_RESULT_OK, result); | 290 ASSERT_EQ(MOJO_RESULT_OK, result); |
290 EXPECT_EQ(5u, size); | 291 EXPECT_EQ(5u, size); |
291 | 292 |
292 url_loader_client_->OnReceiveResponse(response_head, nullptr); | 293 url_loader_client_->OnReceiveResponse(response_head, base::nullopt, nullptr); |
293 url_loader_client_->OnStartLoadingResponseBody( | 294 url_loader_client_->OnStartLoadingResponseBody( |
294 std::move(data_pipe.consumer_handle)); | 295 std::move(data_pipe.consumer_handle)); |
295 url_loader_client_->OnComplete(completion_status); | 296 url_loader_client_->OnComplete(completion_status); |
296 | 297 |
297 EXPECT_FALSE(request_peer_context_.received_response); | 298 EXPECT_FALSE(request_peer_context_.received_response); |
298 EXPECT_EQ("", request_peer_context_.data); | 299 EXPECT_EQ("", request_peer_context_.data); |
299 EXPECT_FALSE(request_peer_context_.complete); | 300 EXPECT_FALSE(request_peer_context_.complete); |
300 EXPECT_FALSE(request_peer_context_.cancelled); | 301 EXPECT_FALSE(request_peer_context_.cancelled); |
301 | 302 |
302 base::RunLoop().RunUntilIdle(); | 303 base::RunLoop().RunUntilIdle(); |
303 EXPECT_TRUE(request_peer_context_.received_response); | 304 EXPECT_TRUE(request_peer_context_.received_response); |
304 EXPECT_EQ("hello", request_peer_context_.data); | 305 EXPECT_EQ("hello", request_peer_context_.data); |
305 EXPECT_FALSE(request_peer_context_.complete); | 306 EXPECT_FALSE(request_peer_context_.complete); |
306 EXPECT_TRUE(request_peer_context_.cancelled); | 307 EXPECT_TRUE(request_peer_context_.cancelled); |
307 } | 308 } |
308 | 309 |
309 TEST_F(URLLoaderClientImplTest, Defer) { | 310 TEST_F(URLLoaderClientImplTest, Defer) { |
310 ResourceResponseHead response_head; | 311 ResourceResponseHead response_head; |
311 ResourceRequestCompletionStatus completion_status; | 312 ResourceRequestCompletionStatus completion_status; |
312 | 313 |
313 url_loader_client_->OnReceiveResponse(response_head, nullptr); | 314 url_loader_client_->OnReceiveResponse(response_head, base::nullopt, nullptr); |
314 url_loader_client_->OnComplete(completion_status); | 315 url_loader_client_->OnComplete(completion_status); |
315 | 316 |
316 EXPECT_FALSE(request_peer_context_.received_response); | 317 EXPECT_FALSE(request_peer_context_.received_response); |
317 EXPECT_FALSE(request_peer_context_.complete); | 318 EXPECT_FALSE(request_peer_context_.complete); |
318 | 319 |
319 dispatcher_->SetDefersLoading(request_id_, true); | 320 dispatcher_->SetDefersLoading(request_id_, true); |
320 | 321 |
321 base::RunLoop().RunUntilIdle(); | 322 base::RunLoop().RunUntilIdle(); |
322 EXPECT_FALSE(request_peer_context_.received_response); | 323 EXPECT_FALSE(request_peer_context_.received_response); |
323 EXPECT_FALSE(request_peer_context_.complete); | 324 EXPECT_FALSE(request_peer_context_.complete); |
324 | 325 |
325 dispatcher_->SetDefersLoading(request_id_, false); | 326 dispatcher_->SetDefersLoading(request_id_, false); |
326 EXPECT_FALSE(request_peer_context_.received_response); | 327 EXPECT_FALSE(request_peer_context_.received_response); |
327 EXPECT_FALSE(request_peer_context_.complete); | 328 EXPECT_FALSE(request_peer_context_.complete); |
328 | 329 |
329 base::RunLoop().RunUntilIdle(); | 330 base::RunLoop().RunUntilIdle(); |
330 EXPECT_TRUE(request_peer_context_.received_response); | 331 EXPECT_TRUE(request_peer_context_.received_response); |
331 EXPECT_TRUE(request_peer_context_.complete); | 332 EXPECT_TRUE(request_peer_context_.complete); |
332 } | 333 } |
333 | 334 |
334 TEST_F(URLLoaderClientImplTest, DeferWithResponseBody) { | 335 TEST_F(URLLoaderClientImplTest, DeferWithResponseBody) { |
335 ResourceResponseHead response_head; | 336 ResourceResponseHead response_head; |
336 ResourceRequestCompletionStatus completion_status; | 337 ResourceRequestCompletionStatus completion_status; |
337 | 338 |
338 url_loader_client_->OnReceiveResponse(response_head, nullptr); | 339 url_loader_client_->OnReceiveResponse(response_head, base::nullopt, nullptr); |
339 mojo::DataPipe data_pipe(DataPipeOptions()); | 340 mojo::DataPipe data_pipe(DataPipeOptions()); |
340 uint32_t size = 5; | 341 uint32_t size = 5; |
341 MojoResult result = | 342 MojoResult result = |
342 mojo::WriteDataRaw(data_pipe.producer_handle.get(), "hello", &size, | 343 mojo::WriteDataRaw(data_pipe.producer_handle.get(), "hello", &size, |
343 MOJO_WRITE_DATA_FLAG_NONE); | 344 MOJO_WRITE_DATA_FLAG_NONE); |
344 ASSERT_EQ(MOJO_RESULT_OK, result); | 345 ASSERT_EQ(MOJO_RESULT_OK, result); |
345 EXPECT_EQ(5u, size); | 346 EXPECT_EQ(5u, size); |
346 data_pipe.producer_handle.reset(); | 347 data_pipe.producer_handle.reset(); |
347 | 348 |
348 url_loader_client_->OnStartLoadingResponseBody( | 349 url_loader_client_->OnStartLoadingResponseBody( |
(...skipping 21 matching lines...) Expand all Loading... |
370 EXPECT_TRUE(request_peer_context_.complete); | 371 EXPECT_TRUE(request_peer_context_.complete); |
371 EXPECT_EQ("hello", request_peer_context_.data); | 372 EXPECT_EQ("hello", request_peer_context_.data); |
372 } | 373 } |
373 | 374 |
374 // As "transfer size update" message is handled specially in the implementation, | 375 // As "transfer size update" message is handled specially in the implementation, |
375 // we have a separate test. | 376 // we have a separate test. |
376 TEST_F(URLLoaderClientImplTest, DeferWithTransferSizeUpdated) { | 377 TEST_F(URLLoaderClientImplTest, DeferWithTransferSizeUpdated) { |
377 ResourceResponseHead response_head; | 378 ResourceResponseHead response_head; |
378 ResourceRequestCompletionStatus completion_status; | 379 ResourceRequestCompletionStatus completion_status; |
379 | 380 |
380 url_loader_client_->OnReceiveResponse(response_head, nullptr); | 381 url_loader_client_->OnReceiveResponse(response_head, base::nullopt, nullptr); |
381 mojo::DataPipe data_pipe(DataPipeOptions()); | 382 mojo::DataPipe data_pipe(DataPipeOptions()); |
382 uint32_t size = 5; | 383 uint32_t size = 5; |
383 MojoResult result = | 384 MojoResult result = |
384 mojo::WriteDataRaw(data_pipe.producer_handle.get(), "hello", &size, | 385 mojo::WriteDataRaw(data_pipe.producer_handle.get(), "hello", &size, |
385 MOJO_WRITE_DATA_FLAG_NONE); | 386 MOJO_WRITE_DATA_FLAG_NONE); |
386 ASSERT_EQ(MOJO_RESULT_OK, result); | 387 ASSERT_EQ(MOJO_RESULT_OK, result); |
387 EXPECT_EQ(5u, size); | 388 EXPECT_EQ(5u, size); |
388 data_pipe.producer_handle.reset(); | 389 data_pipe.producer_handle.reset(); |
389 | 390 |
390 url_loader_client_->OnStartLoadingResponseBody( | 391 url_loader_client_->OnStartLoadingResponseBody( |
(...skipping 28 matching lines...) Expand all Loading... |
419 } | 420 } |
420 | 421 |
421 TEST_F(URLLoaderClientImplTest, SetDeferredDuringFlushingDeferredMessage) { | 422 TEST_F(URLLoaderClientImplTest, SetDeferredDuringFlushingDeferredMessage) { |
422 request_peer_context_.defer_on_redirect = true; | 423 request_peer_context_.defer_on_redirect = true; |
423 | 424 |
424 net::RedirectInfo redirect_info; | 425 net::RedirectInfo redirect_info; |
425 ResourceResponseHead response_head; | 426 ResourceResponseHead response_head; |
426 ResourceRequestCompletionStatus completion_status; | 427 ResourceRequestCompletionStatus completion_status; |
427 | 428 |
428 url_loader_client_->OnReceiveRedirect(redirect_info, response_head); | 429 url_loader_client_->OnReceiveRedirect(redirect_info, response_head); |
429 url_loader_client_->OnReceiveResponse(response_head, nullptr); | 430 url_loader_client_->OnReceiveResponse(response_head, base::nullopt, nullptr); |
430 mojo::DataPipe data_pipe(DataPipeOptions()); | 431 mojo::DataPipe data_pipe(DataPipeOptions()); |
431 uint32_t size = 5; | 432 uint32_t size = 5; |
432 MojoResult result = | 433 MojoResult result = |
433 mojo::WriteDataRaw(data_pipe.producer_handle.get(), "hello", &size, | 434 mojo::WriteDataRaw(data_pipe.producer_handle.get(), "hello", &size, |
434 MOJO_WRITE_DATA_FLAG_NONE); | 435 MOJO_WRITE_DATA_FLAG_NONE); |
435 ASSERT_EQ(MOJO_RESULT_OK, result); | 436 ASSERT_EQ(MOJO_RESULT_OK, result); |
436 EXPECT_EQ(5u, size); | 437 EXPECT_EQ(5u, size); |
437 data_pipe.producer_handle.reset(); | 438 data_pipe.producer_handle.reset(); |
438 | 439 |
439 url_loader_client_->OnStartLoadingResponseBody( | 440 url_loader_client_->OnStartLoadingResponseBody( |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
481 EXPECT_FALSE(request_peer_context_.cancelled); | 482 EXPECT_FALSE(request_peer_context_.cancelled); |
482 } | 483 } |
483 | 484 |
484 TEST_F(URLLoaderClientImplTest, | 485 TEST_F(URLLoaderClientImplTest, |
485 SetDeferredDuringFlushingDeferredMessageOnTransferSizeUpdated) { | 486 SetDeferredDuringFlushingDeferredMessageOnTransferSizeUpdated) { |
486 request_peer_context_.defer_on_transfer_size_updated = true; | 487 request_peer_context_.defer_on_transfer_size_updated = true; |
487 | 488 |
488 ResourceResponseHead response_head; | 489 ResourceResponseHead response_head; |
489 ResourceRequestCompletionStatus completion_status; | 490 ResourceRequestCompletionStatus completion_status; |
490 | 491 |
491 url_loader_client_->OnReceiveResponse(response_head, nullptr); | 492 url_loader_client_->OnReceiveResponse(response_head, base::nullopt, nullptr); |
492 | 493 |
493 url_loader_client_->OnTransferSizeUpdated(4); | 494 url_loader_client_->OnTransferSizeUpdated(4); |
494 url_loader_client_->OnComplete(completion_status); | 495 url_loader_client_->OnComplete(completion_status); |
495 | 496 |
496 EXPECT_FALSE(request_peer_context_.received_response); | 497 EXPECT_FALSE(request_peer_context_.received_response); |
497 EXPECT_FALSE(request_peer_context_.complete); | 498 EXPECT_FALSE(request_peer_context_.complete); |
498 EXPECT_EQ(0, request_peer_context_.total_encoded_data_length); | 499 EXPECT_EQ(0, request_peer_context_.total_encoded_data_length); |
499 | 500 |
500 dispatcher_->SetDefersLoading(request_id_, true); | 501 dispatcher_->SetDefersLoading(request_id_, true); |
501 | 502 |
(...skipping 15 matching lines...) Expand all Loading... |
517 | 518 |
518 dispatcher_->SetDefersLoading(request_id_, false); | 519 dispatcher_->SetDefersLoading(request_id_, false); |
519 base::RunLoop().RunUntilIdle(); | 520 base::RunLoop().RunUntilIdle(); |
520 EXPECT_TRUE(request_peer_context_.received_response); | 521 EXPECT_TRUE(request_peer_context_.received_response); |
521 EXPECT_TRUE(request_peer_context_.complete); | 522 EXPECT_TRUE(request_peer_context_.complete); |
522 EXPECT_EQ(4, request_peer_context_.total_encoded_data_length); | 523 EXPECT_EQ(4, request_peer_context_.total_encoded_data_length); |
523 EXPECT_FALSE(request_peer_context_.cancelled); | 524 EXPECT_FALSE(request_peer_context_.cancelled); |
524 } | 525 } |
525 | 526 |
526 } // namespace content | 527 } // namespace content |
OLD | NEW |