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

Side by Side Diff: content/browser/loader/url_loader_factory_impl_unittest.cc

Issue 2817033002: Plumb the net::SSLInfo to the browser process when it's using the network service. (Closed)
Patch Set: add tests Created 3 years, 8 months 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 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/browser/loader/url_loader_factory_impl.h" 5 #include "content/browser/loader/url_loader_factory_impl.h"
6 6
7 #include <stdint.h> 7 #include <stdint.h>
8 8
9 #include <memory> 9 #include <memory>
10 #include <string> 10 #include <string>
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after
158 // Assume the file contents is small enough to be stored in the data pipe. 158 // Assume the file contents is small enough to be stored in the data pipe.
159 request.url = net::URLRequestMockHTTPJob::GetMockUrl("hello.html"); 159 request.url = net::URLRequestMockHTTPJob::GetMockUrl("hello.html");
160 request.method = "GET"; 160 request.method = "GET";
161 // |resource_type| can't be a frame type. It is because when PlzNavigate is 161 // |resource_type| can't be a frame type. It is because when PlzNavigate is
162 // enabled, the url scheme of frame type requests from the renderer process 162 // enabled, the url scheme of frame type requests from the renderer process
163 // must be blob scheme. 163 // must be blob scheme.
164 request.resource_type = RESOURCE_TYPE_XHR; 164 request.resource_type = RESOURCE_TYPE_XHR;
165 // Need to set |request_initiator| for non main frame type request. 165 // Need to set |request_initiator| for non main frame type request.
166 request.request_initiator = url::Origin(); 166 request.request_initiator = url::Origin();
167 factory_->CreateLoaderAndStart(mojo::MakeRequest(&loader), kRoutingId, 167 factory_->CreateLoaderAndStart(mojo::MakeRequest(&loader), kRoutingId,
168 kRequestId, request, 168 kRequestId, 0, request,
169 client.CreateInterfacePtr()); 169 client.CreateInterfacePtr());
170 170
171 ASSERT_FALSE(client.has_received_response()); 171 ASSERT_FALSE(client.has_received_response());
172 ASSERT_FALSE(client.response_body().is_valid()); 172 ASSERT_FALSE(client.response_body().is_valid());
173 ASSERT_FALSE(client.has_received_completion()); 173 ASSERT_FALSE(client.has_received_completion());
174 174
175 client.RunUntilResponseReceived(); 175 client.RunUntilResponseReceived();
176 176
177 net::URLRequest* url_request = 177 net::URLRequest* url_request =
178 rdh_.GetURLRequest(GlobalRequestID(kChildId, kRequestId)); 178 rdh_.GetURLRequest(GlobalRequestID(kChildId, kRequestId));
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
233 net::URLRequestFailedJob::AddUrlHandler(); 233 net::URLRequestFailedJob::AddUrlHandler();
234 request.url = net::URLRequestFailedJob::GetMockHttpUrlWithFailurePhase( 234 request.url = net::URLRequestFailedJob::GetMockHttpUrlWithFailurePhase(
235 net::URLRequestFailedJob::START, net::ERR_TIMED_OUT); 235 net::URLRequestFailedJob::START, net::ERR_TIMED_OUT);
236 request.method = "GET"; 236 request.method = "GET";
237 // |resource_type| can't be a frame type. It is because when PlzNavigate is 237 // |resource_type| can't be a frame type. It is because when PlzNavigate is
238 // enabled, the url scheme of frame type requests from the renderer process 238 // enabled, the url scheme of frame type requests from the renderer process
239 // must be blob scheme. 239 // must be blob scheme.
240 request.resource_type = RESOURCE_TYPE_XHR; 240 request.resource_type = RESOURCE_TYPE_XHR;
241 // Need to set |request_initiator| for non main frame type request. 241 // Need to set |request_initiator| for non main frame type request.
242 request.request_initiator = url::Origin(); 242 request.request_initiator = url::Origin();
243 factory_->CreateLoaderAndStart(mojo::MakeRequest(&loader), 2, 1, request, 243 factory_->CreateLoaderAndStart(mojo::MakeRequest(&loader), 2, 1, 0, request,
244 client.CreateInterfacePtr()); 244 client.CreateInterfacePtr());
245 245
246 client.RunUntilComplete(); 246 client.RunUntilComplete();
247 ASSERT_FALSE(client.has_received_response()); 247 ASSERT_FALSE(client.has_received_response());
248 ASSERT_FALSE(client.response_body().is_valid()); 248 ASSERT_FALSE(client.response_body().is_valid());
249 249
250 EXPECT_EQ(net::ERR_TIMED_OUT, client.completion_status().error_code); 250 EXPECT_EQ(net::ERR_TIMED_OUT, client.completion_status().error_code);
251 EXPECT_EQ(0, client.completion_status().encoded_data_length); 251 EXPECT_EQ(0, client.completion_status().encoded_data_length);
252 EXPECT_EQ(0, client.completion_status().encoded_body_length); 252 EXPECT_EQ(0, client.completion_status().encoded_body_length);
253 } 253 }
254 254
255 // In this case, the loading fails after receiving a response. 255 // In this case, the loading fails after receiving a response.
256 TEST_P(URLLoaderFactoryImplTest, GetFailedResponse2) { 256 TEST_P(URLLoaderFactoryImplTest, GetFailedResponse2) {
257 NavigationResourceThrottle::set_ui_checks_always_succeed_for_testing(true); 257 NavigationResourceThrottle::set_ui_checks_always_succeed_for_testing(true);
258 mojom::URLLoaderAssociatedPtr loader; 258 mojom::URLLoaderAssociatedPtr loader;
259 ResourceRequest request; 259 ResourceRequest request;
260 TestURLLoaderClient client; 260 TestURLLoaderClient client;
261 net::URLRequestFailedJob::AddUrlHandler(); 261 net::URLRequestFailedJob::AddUrlHandler();
262 request.url = net::URLRequestFailedJob::GetMockHttpUrlWithFailurePhase( 262 request.url = net::URLRequestFailedJob::GetMockHttpUrlWithFailurePhase(
263 net::URLRequestFailedJob::READ_ASYNC, net::ERR_TIMED_OUT); 263 net::URLRequestFailedJob::READ_ASYNC, net::ERR_TIMED_OUT);
264 request.method = "GET"; 264 request.method = "GET";
265 // |resource_type| can't be a frame type. It is because when PlzNavigate is 265 // |resource_type| can't be a frame type. It is because when PlzNavigate is
266 // enabled, the url scheme of frame type requests from the renderer process 266 // enabled, the url scheme of frame type requests from the renderer process
267 // must be blob scheme. 267 // must be blob scheme.
268 request.resource_type = RESOURCE_TYPE_XHR; 268 request.resource_type = RESOURCE_TYPE_XHR;
269 // Need to set |request_initiator| for non main frame type request. 269 // Need to set |request_initiator| for non main frame type request.
270 request.request_initiator = url::Origin(); 270 request.request_initiator = url::Origin();
271 factory_->CreateLoaderAndStart(mojo::MakeRequest(&loader), 2, 1, request, 271 factory_->CreateLoaderAndStart(mojo::MakeRequest(&loader), 2, 1, 0, request,
272 client.CreateInterfacePtr()); 272 client.CreateInterfacePtr());
273 273
274 client.RunUntilComplete(); 274 client.RunUntilComplete();
275 ASSERT_FALSE(client.has_received_response()); 275 ASSERT_FALSE(client.has_received_response());
276 ASSERT_FALSE(client.response_body().is_valid()); 276 ASSERT_FALSE(client.response_body().is_valid());
277 277
278 EXPECT_EQ(net::ERR_TIMED_OUT, client.completion_status().error_code); 278 EXPECT_EQ(net::ERR_TIMED_OUT, client.completion_status().error_code);
279 EXPECT_GT(client.completion_status().encoded_data_length, 0); 279 EXPECT_GT(client.completion_status().encoded_data_length, 0);
280 EXPECT_EQ(0, client.completion_status().encoded_body_length); 280 EXPECT_EQ(0, client.completion_status().encoded_body_length);
281 } 281 }
282 282
283 // This test tests a case where resource loading is cancelled before started. 283 // This test tests a case where resource loading is cancelled before started.
284 TEST_P(URLLoaderFactoryImplTest, InvalidURL) { 284 TEST_P(URLLoaderFactoryImplTest, InvalidURL) {
285 mojom::URLLoaderAssociatedPtr loader; 285 mojom::URLLoaderAssociatedPtr loader;
286 ResourceRequest request; 286 ResourceRequest request;
287 TestURLLoaderClient client; 287 TestURLLoaderClient client;
288 request.url = GURL(); 288 request.url = GURL();
289 request.method = "GET"; 289 request.method = "GET";
290 // |resource_type| can't be a frame type. It is because when PlzNavigate is 290 // |resource_type| can't be a frame type. It is because when PlzNavigate is
291 // enabled, the url scheme of frame type requests from the renderer process 291 // enabled, the url scheme of frame type requests from the renderer process
292 // must be blob scheme. 292 // must be blob scheme.
293 request.resource_type = RESOURCE_TYPE_XHR; 293 request.resource_type = RESOURCE_TYPE_XHR;
294 // Need to set |request_initiator| for non main frame type request. 294 // Need to set |request_initiator| for non main frame type request.
295 request.request_initiator = url::Origin(); 295 request.request_initiator = url::Origin();
296 ASSERT_FALSE(request.url.is_valid()); 296 ASSERT_FALSE(request.url.is_valid());
297 factory_->CreateLoaderAndStart(mojo::MakeRequest(&loader), 2, 1, request, 297 factory_->CreateLoaderAndStart(mojo::MakeRequest(&loader), 2, 1, 0, request,
298 client.CreateInterfacePtr()); 298 client.CreateInterfacePtr());
299 299
300 client.RunUntilComplete(); 300 client.RunUntilComplete();
301 ASSERT_FALSE(client.has_received_response()); 301 ASSERT_FALSE(client.has_received_response());
302 ASSERT_FALSE(client.response_body().is_valid()); 302 ASSERT_FALSE(client.response_body().is_valid());
303 303
304 EXPECT_EQ(net::ERR_ABORTED, client.completion_status().error_code); 304 EXPECT_EQ(net::ERR_ABORTED, client.completion_status().error_code);
305 } 305 }
306 306
307 // This test tests a case where resource loading is cancelled before started. 307 // This test tests a case where resource loading is cancelled before started.
308 TEST_P(URLLoaderFactoryImplTest, ShouldNotRequestURL) { 308 TEST_P(URLLoaderFactoryImplTest, ShouldNotRequestURL) {
309 mojom::URLLoaderAssociatedPtr loader; 309 mojom::URLLoaderAssociatedPtr loader;
310 RejectingResourceDispatcherHostDelegate rdh_delegate; 310 RejectingResourceDispatcherHostDelegate rdh_delegate;
311 rdh_.SetDelegate(&rdh_delegate); 311 rdh_.SetDelegate(&rdh_delegate);
312 ResourceRequest request; 312 ResourceRequest request;
313 TestURLLoaderClient client; 313 TestURLLoaderClient client;
314 request.url = GURL("http://localhost/"); 314 request.url = GURL("http://localhost/");
315 request.method = "GET"; 315 request.method = "GET";
316 // |resource_type| can't be a frame type. It is because when PlzNavigate is 316 // |resource_type| can't be a frame type. It is because when PlzNavigate is
317 // enabled, the url scheme of frame type requests from the renderer process 317 // enabled, the url scheme of frame type requests from the renderer process
318 // must be blob scheme. 318 // must be blob scheme.
319 request.resource_type = RESOURCE_TYPE_XHR; 319 request.resource_type = RESOURCE_TYPE_XHR;
320 // Need to set |request_initiator| for non main frame type request. 320 // Need to set |request_initiator| for non main frame type request.
321 request.request_initiator = url::Origin(); 321 request.request_initiator = url::Origin();
322 factory_->CreateLoaderAndStart(mojo::MakeRequest(&loader), 2, 1, request, 322 factory_->CreateLoaderAndStart(mojo::MakeRequest(&loader), 2, 1, 0, request,
323 client.CreateInterfacePtr()); 323 client.CreateInterfacePtr());
324 324
325 client.RunUntilComplete(); 325 client.RunUntilComplete();
326 rdh_.SetDelegate(nullptr); 326 rdh_.SetDelegate(nullptr);
327 327
328 ASSERT_FALSE(client.has_received_response()); 328 ASSERT_FALSE(client.has_received_response());
329 ASSERT_FALSE(client.response_body().is_valid()); 329 ASSERT_FALSE(client.response_body().is_valid());
330 330
331 EXPECT_EQ(net::ERR_ABORTED, client.completion_status().error_code); 331 EXPECT_EQ(net::ERR_ABORTED, client.completion_status().error_code);
332 } 332 }
333 333
334 TEST_P(URLLoaderFactoryImplTest, DownloadToFile) { 334 TEST_P(URLLoaderFactoryImplTest, DownloadToFile) {
335 constexpr int32_t kRoutingId = 1; 335 constexpr int32_t kRoutingId = 1;
336 constexpr int32_t kRequestId = 2; 336 constexpr int32_t kRequestId = 2;
337 337
338 mojom::URLLoaderAssociatedPtr loader; 338 mojom::URLLoaderAssociatedPtr loader;
339 base::FilePath root; 339 base::FilePath root;
340 PathService::Get(DIR_TEST_DATA, &root); 340 PathService::Get(DIR_TEST_DATA, &root);
341 net::URLRequestMockHTTPJob::AddUrlHandlers(root, 341 net::URLRequestMockHTTPJob::AddUrlHandlers(root,
342 BrowserThread::GetBlockingPool()); 342 BrowserThread::GetBlockingPool());
343 343
344 ResourceRequest request; 344 ResourceRequest request;
345 TestURLLoaderClient client; 345 TestURLLoaderClient client;
346 request.url = net::URLRequestMockHTTPJob::GetMockUrl("hello.html"); 346 request.url = net::URLRequestMockHTTPJob::GetMockUrl("hello.html");
347 request.method = "GET"; 347 request.method = "GET";
348 request.resource_type = RESOURCE_TYPE_XHR; 348 request.resource_type = RESOURCE_TYPE_XHR;
349 request.download_to_file = true; 349 request.download_to_file = true;
350 request.request_initiator = url::Origin(); 350 request.request_initiator = url::Origin();
351 factory_->CreateLoaderAndStart(mojo::MakeRequest(&loader), kRoutingId, 351 factory_->CreateLoaderAndStart(mojo::MakeRequest(&loader), kRoutingId,
352 kRequestId, request, 352 kRequestId, 0, request,
353 client.CreateInterfacePtr()); 353 client.CreateInterfacePtr());
354 ASSERT_FALSE(client.has_received_response()); 354 ASSERT_FALSE(client.has_received_response());
355 ASSERT_FALSE(client.has_data_downloaded()); 355 ASSERT_FALSE(client.has_data_downloaded());
356 ASSERT_FALSE(client.has_received_completion()); 356 ASSERT_FALSE(client.has_received_completion());
357 357
358 client.RunUntilResponseReceived(); 358 client.RunUntilResponseReceived();
359 359
360 net::URLRequest* url_request = 360 net::URLRequest* url_request =
361 rdh_.GetURLRequest(GlobalRequestID(kChildId, kRequestId)); 361 rdh_.GetURLRequest(GlobalRequestID(kChildId, kRequestId));
362 ASSERT_TRUE(url_request); 362 ASSERT_TRUE(url_request);
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
409 net::URLRequestSlowDownloadJob::AddUrlHandler(); 409 net::URLRequestSlowDownloadJob::AddUrlHandler();
410 410
411 ResourceRequest request; 411 ResourceRequest request;
412 TestURLLoaderClient client; 412 TestURLLoaderClient client;
413 request.url = GURL(net::URLRequestSlowDownloadJob::kKnownSizeUrl); 413 request.url = GURL(net::URLRequestSlowDownloadJob::kKnownSizeUrl);
414 request.method = "GET"; 414 request.method = "GET";
415 request.resource_type = RESOURCE_TYPE_XHR; 415 request.resource_type = RESOURCE_TYPE_XHR;
416 request.download_to_file = true; 416 request.download_to_file = true;
417 request.request_initiator = url::Origin(); 417 request.request_initiator = url::Origin();
418 factory_->CreateLoaderAndStart(mojo::MakeRequest(&loader), kRoutingId, 418 factory_->CreateLoaderAndStart(mojo::MakeRequest(&loader), kRoutingId,
419 kRequestId, request, 419 kRequestId, 0, request,
420 client.CreateInterfacePtr()); 420 client.CreateInterfacePtr());
421 ASSERT_FALSE(client.has_received_response()); 421 ASSERT_FALSE(client.has_received_response());
422 ASSERT_FALSE(client.has_data_downloaded()); 422 ASSERT_FALSE(client.has_data_downloaded());
423 ASSERT_FALSE(client.has_received_completion()); 423 ASSERT_FALSE(client.has_received_completion());
424 424
425 client.RunUntilResponseReceived(); 425 client.RunUntilResponseReceived();
426 426
427 net::URLRequest* url_request = 427 net::URLRequest* url_request =
428 rdh_.GetURLRequest(GlobalRequestID(kChildId, kRequestId)); 428 rdh_.GetURLRequest(GlobalRequestID(kChildId, kRequestId));
429 ASSERT_TRUE(url_request); 429 ASSERT_TRUE(url_request);
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
472 request.url = net::URLRequestMockHTTPJob::GetMockUrl("gzip-content.svgz"); 472 request.url = net::URLRequestMockHTTPJob::GetMockUrl("gzip-content.svgz");
473 request.method = "GET"; 473 request.method = "GET";
474 // |resource_type| can't be a frame type. It is because when PlzNavigate is 474 // |resource_type| can't be a frame type. It is because when PlzNavigate is
475 // enabled, the url scheme of frame type requests from the renderer process 475 // enabled, the url scheme of frame type requests from the renderer process
476 // must be blob scheme. 476 // must be blob scheme.
477 request.resource_type = RESOURCE_TYPE_XHR; 477 request.resource_type = RESOURCE_TYPE_XHR;
478 // Need to set |request_initiator| for non main frame type request. 478 // Need to set |request_initiator| for non main frame type request.
479 request.request_initiator = url::Origin(); 479 request.request_initiator = url::Origin();
480 request.report_raw_headers = true; 480 request.report_raw_headers = true;
481 factory_->CreateLoaderAndStart(mojo::MakeRequest(&loader), kRoutingId, 481 factory_->CreateLoaderAndStart(mojo::MakeRequest(&loader), kRoutingId,
482 kRequestId, request, 482 kRequestId, 0, request,
483 client.CreateInterfacePtr()); 483 client.CreateInterfacePtr());
484 484
485 client.RunUntilComplete(); 485 client.RunUntilComplete();
486 486
487 std::string contents; 487 std::string contents;
488 while (true) { 488 while (true) {
489 char buffer[16]; 489 char buffer[16];
490 uint32_t read_size = sizeof(buffer); 490 uint32_t read_size = sizeof(buffer);
491 MojoResult r = mojo::ReadDataRaw(client.response_body(), buffer, &read_size, 491 MojoResult r = mojo::ReadDataRaw(client.response_body(), buffer, &read_size,
492 MOJO_READ_DATA_FLAG_NONE); 492 MOJO_READ_DATA_FLAG_NONE);
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
532 request.url = net::URLRequestFailedJob::GetMockHttpUrl(net::ERR_IO_PENDING); 532 request.url = net::URLRequestFailedJob::GetMockHttpUrl(net::ERR_IO_PENDING);
533 request.method = "GET"; 533 request.method = "GET";
534 request.is_main_frame = true; 534 request.is_main_frame = true;
535 // |resource_type| can't be a frame type. It is because when PlzNavigate is 535 // |resource_type| can't be a frame type. It is because when PlzNavigate is
536 // enabled, the url scheme of frame type requests from the renderer process 536 // enabled, the url scheme of frame type requests from the renderer process
537 // must be blob scheme. 537 // must be blob scheme.
538 request.resource_type = RESOURCE_TYPE_XHR; 538 request.resource_type = RESOURCE_TYPE_XHR;
539 // Need to set |request_initiator| for non main frame type request. 539 // Need to set |request_initiator| for non main frame type request.
540 request.request_initiator = url::Origin(); 540 request.request_initiator = url::Origin();
541 factory_->CreateLoaderAndStart(mojo::MakeRequest(&loader), kRoutingId, 541 factory_->CreateLoaderAndStart(mojo::MakeRequest(&loader), kRoutingId,
542 kRequestId, request, 542 kRequestId, 0, request,
543 client.CreateInterfacePtr()); 543 client.CreateInterfacePtr());
544 544
545 base::RunLoop().RunUntilIdle(); 545 base::RunLoop().RunUntilIdle();
546 ASSERT_TRUE(rdh_.GetURLRequest(GlobalRequestID(kChildId, kRequestId))); 546 ASSERT_TRUE(rdh_.GetURLRequest(GlobalRequestID(kChildId, kRequestId)));
547 ASSERT_FALSE(client.has_received_response()); 547 ASSERT_FALSE(client.has_received_response());
548 ASSERT_FALSE(client.response_body().is_valid()); 548 ASSERT_FALSE(client.response_body().is_valid());
549 ASSERT_FALSE(client.has_received_completion()); 549 ASSERT_FALSE(client.has_received_completion());
550 550
551 loader = nullptr; 551 loader = nullptr;
552 base::RunLoop().RunUntilIdle(); 552 base::RunLoop().RunUntilIdle();
553 ASSERT_FALSE(rdh_.GetURLRequest(GlobalRequestID(kChildId, kRequestId))); 553 ASSERT_FALSE(rdh_.GetURLRequest(GlobalRequestID(kChildId, kRequestId)));
554 } 554 }
555 555
556 INSTANTIATE_TEST_CASE_P(URLLoaderFactoryImplTest, 556 INSTANTIATE_TEST_CASE_P(URLLoaderFactoryImplTest,
557 URLLoaderFactoryImplTest, 557 URLLoaderFactoryImplTest,
558 ::testing::Values(128, 32 * 1024)); 558 ::testing::Values(128, 32 * 1024));
559 559
560 } // namespace 560 } // namespace
561 561
562 } // namespace content 562 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698