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

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

Issue 2591383003: Implement SetDefersLoading on content::URLLoaderClientImpl (Closed)
Patch Set: fix Created 3 years, 12 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
« no previous file with comments | « content/child/url_loader_client_impl.cc ('k') | content/child/url_response_body_consumer.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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/child/url_loader_client_impl.h" 5 #include "content/child/url_loader_client_impl.h"
6 6
7 #include "base/memory/ptr_util.h" 7 #include "base/memory/ptr_util.h"
8 #include "base/message_loop/message_loop.h" 8 #include "base/message_loop/message_loop.h"
9 #include "base/run_loop.h" 9 #include "base/run_loop.h"
10 #include "content/child/resource_dispatcher.h" 10 #include "content/child/resource_dispatcher.h"
(...skipping 333 matching lines...) Expand 10 before | Expand all | Expand 10 after
344 EXPECT_FALSE(request_peer_context_.complete); 344 EXPECT_FALSE(request_peer_context_.complete);
345 EXPECT_FALSE(request_peer_context_.cancelled); 345 EXPECT_FALSE(request_peer_context_.cancelled);
346 346
347 base::RunLoop().RunUntilIdle(); 347 base::RunLoop().RunUntilIdle();
348 EXPECT_TRUE(request_peer_context_.received_response); 348 EXPECT_TRUE(request_peer_context_.received_response);
349 EXPECT_EQ("hello", request_peer_context_.data); 349 EXPECT_EQ("hello", request_peer_context_.data);
350 EXPECT_FALSE(request_peer_context_.complete); 350 EXPECT_FALSE(request_peer_context_.complete);
351 EXPECT_TRUE(request_peer_context_.cancelled); 351 EXPECT_TRUE(request_peer_context_.cancelled);
352 } 352 }
353 353
354 TEST_F(URLLoaderClientImplTest, Defer) {
355 ResourceResponseHead response_head;
356 ResourceRequestCompletionStatus completion_status;
357
358 url_loader_client_->OnReceiveResponse(response_head, nullptr);
359 url_loader_client_->OnComplete(completion_status);
360
361 EXPECT_FALSE(request_peer_context_.received_response);
362 EXPECT_FALSE(request_peer_context_.complete);
363
364 dispatcher_->SetDefersLoading(request_id_, true);
365
366 base::RunLoop().RunUntilIdle();
367 EXPECT_FALSE(request_peer_context_.received_response);
368 EXPECT_FALSE(request_peer_context_.complete);
369
370 dispatcher_->SetDefersLoading(request_id_, false);
371 EXPECT_FALSE(request_peer_context_.received_response);
372 EXPECT_FALSE(request_peer_context_.complete);
373
374 base::RunLoop().RunUntilIdle();
375 EXPECT_TRUE(request_peer_context_.received_response);
376 EXPECT_TRUE(request_peer_context_.complete);
377 }
378
379 TEST_F(URLLoaderClientImplTest, DeferWithResponseBody) {
380 ResourceResponseHead response_head;
381 ResourceRequestCompletionStatus completion_status;
382
383 url_loader_client_->OnReceiveResponse(response_head, nullptr);
384 mojo::DataPipe data_pipe(DataPipeOptions());
385 uint32_t size = 5;
386 MojoResult result =
387 mojo::WriteDataRaw(data_pipe.producer_handle.get(), "hello", &size,
388 MOJO_WRITE_DATA_FLAG_NONE);
389 ASSERT_EQ(MOJO_RESULT_OK, result);
390 EXPECT_EQ(5u, size);
391 data_pipe.producer_handle.reset();
392
393 url_loader_client_->OnStartLoadingResponseBody(
394 std::move(data_pipe.consumer_handle));
395 url_loader_client_->OnComplete(completion_status);
396
397 EXPECT_FALSE(request_peer_context_.received_response);
398 EXPECT_FALSE(request_peer_context_.complete);
399 EXPECT_EQ("", request_peer_context_.data);
400
401 dispatcher_->SetDefersLoading(request_id_, true);
402
403 base::RunLoop().RunUntilIdle();
404 EXPECT_FALSE(request_peer_context_.received_response);
405 EXPECT_FALSE(request_peer_context_.complete);
406 EXPECT_EQ("", request_peer_context_.data);
407
408 dispatcher_->SetDefersLoading(request_id_, false);
409 EXPECT_FALSE(request_peer_context_.received_response);
410 EXPECT_FALSE(request_peer_context_.complete);
411 EXPECT_EQ("", request_peer_context_.data);
412
413 base::RunLoop().RunUntilIdle();
414 EXPECT_TRUE(request_peer_context_.received_response);
415 EXPECT_TRUE(request_peer_context_.complete);
416 EXPECT_EQ("hello", request_peer_context_.data);
417 }
418
419 // As "transfer size update" message is handled specially in the implementation,
420 // we have a separate test.
421 TEST_F(URLLoaderClientImplTest, DeferWithTransferSizeUpdated) {
422 ResourceResponseHead response_head;
423 ResourceRequestCompletionStatus completion_status;
424
425 url_loader_client_->OnReceiveResponse(response_head, nullptr);
426 mojo::DataPipe data_pipe(DataPipeOptions());
427 uint32_t size = 5;
428 MojoResult result =
429 mojo::WriteDataRaw(data_pipe.producer_handle.get(), "hello", &size,
430 MOJO_WRITE_DATA_FLAG_NONE);
431 ASSERT_EQ(MOJO_RESULT_OK, result);
432 EXPECT_EQ(5u, size);
433 data_pipe.producer_handle.reset();
434
435 url_loader_client_->OnStartLoadingResponseBody(
436 std::move(data_pipe.consumer_handle));
437 url_loader_client_->OnTransferSizeUpdated(4);
438 url_loader_client_->OnComplete(completion_status);
439
440 EXPECT_FALSE(request_peer_context_.received_response);
441 EXPECT_FALSE(request_peer_context_.complete);
442 EXPECT_EQ("", request_peer_context_.data);
443 EXPECT_EQ(0, request_peer_context_.total_encoded_data_length);
444
445 dispatcher_->SetDefersLoading(request_id_, true);
446
447 base::RunLoop().RunUntilIdle();
448 EXPECT_FALSE(request_peer_context_.received_response);
449 EXPECT_FALSE(request_peer_context_.complete);
450 EXPECT_EQ("", request_peer_context_.data);
451 EXPECT_EQ(0, request_peer_context_.total_encoded_data_length);
452
453 dispatcher_->SetDefersLoading(request_id_, false);
454 EXPECT_FALSE(request_peer_context_.received_response);
455 EXPECT_FALSE(request_peer_context_.complete);
456 EXPECT_EQ("", request_peer_context_.data);
457 EXPECT_EQ(0, request_peer_context_.total_encoded_data_length);
458
459 base::RunLoop().RunUntilIdle();
460 EXPECT_TRUE(request_peer_context_.received_response);
461 EXPECT_TRUE(request_peer_context_.complete);
462 EXPECT_EQ("hello", request_peer_context_.data);
463 EXPECT_EQ(4, request_peer_context_.total_encoded_data_length);
464 }
465
466 TEST_F(URLLoaderClientImplTest, SetDeferredDuringFlushingDeferredMessage) {
467 request_peer_context_.defer_on_redirect = true;
468
469 net::RedirectInfo redirect_info;
470 ResourceResponseHead response_head;
471 ResourceRequestCompletionStatus completion_status;
472
473 url_loader_client_->OnReceiveRedirect(redirect_info, response_head);
474 url_loader_client_->OnReceiveResponse(response_head, nullptr);
475 mojo::DataPipe data_pipe(DataPipeOptions());
476 uint32_t size = 5;
477 MojoResult result =
478 mojo::WriteDataRaw(data_pipe.producer_handle.get(), "hello", &size,
479 MOJO_WRITE_DATA_FLAG_NONE);
480 ASSERT_EQ(MOJO_RESULT_OK, result);
481 EXPECT_EQ(5u, size);
482 data_pipe.producer_handle.reset();
483
484 url_loader_client_->OnStartLoadingResponseBody(
485 std::move(data_pipe.consumer_handle));
486 url_loader_client_->OnTransferSizeUpdated(4);
487 url_loader_client_->OnComplete(completion_status);
488
489 EXPECT_EQ(0, request_peer_context_.seen_redirects);
490 EXPECT_FALSE(request_peer_context_.received_response);
491 EXPECT_FALSE(request_peer_context_.complete);
492 EXPECT_EQ("", request_peer_context_.data);
493 EXPECT_EQ(0, request_peer_context_.total_encoded_data_length);
494
495 dispatcher_->SetDefersLoading(request_id_, true);
496
497 base::RunLoop().RunUntilIdle();
498 EXPECT_EQ(0, request_peer_context_.seen_redirects);
499 EXPECT_FALSE(request_peer_context_.received_response);
500 EXPECT_FALSE(request_peer_context_.complete);
501 EXPECT_EQ("", request_peer_context_.data);
502 EXPECT_EQ(0, request_peer_context_.total_encoded_data_length);
503
504 dispatcher_->SetDefersLoading(request_id_, false);
505 EXPECT_EQ(0, request_peer_context_.seen_redirects);
506 EXPECT_FALSE(request_peer_context_.received_response);
507 EXPECT_FALSE(request_peer_context_.complete);
508 EXPECT_EQ("", request_peer_context_.data);
509 EXPECT_EQ(0, request_peer_context_.total_encoded_data_length);
510
511 base::RunLoop().RunUntilIdle();
512 EXPECT_EQ(1, request_peer_context_.seen_redirects);
513 EXPECT_FALSE(request_peer_context_.received_response);
514 EXPECT_FALSE(request_peer_context_.complete);
515 EXPECT_EQ("", request_peer_context_.data);
516 EXPECT_EQ(0, request_peer_context_.total_encoded_data_length);
517 EXPECT_FALSE(request_peer_context_.cancelled);
518
519 dispatcher_->SetDefersLoading(request_id_, false);
520 base::RunLoop().RunUntilIdle();
521 EXPECT_EQ(1, request_peer_context_.seen_redirects);
522 EXPECT_TRUE(request_peer_context_.received_response);
523 EXPECT_TRUE(request_peer_context_.complete);
524 EXPECT_EQ("hello", request_peer_context_.data);
525 EXPECT_EQ(4, request_peer_context_.total_encoded_data_length);
526 EXPECT_FALSE(request_peer_context_.cancelled);
527 }
528
529 TEST_F(URLLoaderClientImplTest,
530 SetDeferredDuringFlushingDeferredMessageOnTransferSizeUpdated) {
531 request_peer_context_.defer_on_transfer_size_updated = true;
532
533 ResourceResponseHead response_head;
534 ResourceRequestCompletionStatus completion_status;
535
536 url_loader_client_->OnReceiveResponse(response_head, nullptr);
537
538 url_loader_client_->OnTransferSizeUpdated(4);
539 url_loader_client_->OnComplete(completion_status);
540
541 EXPECT_FALSE(request_peer_context_.received_response);
542 EXPECT_FALSE(request_peer_context_.complete);
543 EXPECT_EQ(0, request_peer_context_.total_encoded_data_length);
544
545 dispatcher_->SetDefersLoading(request_id_, true);
546
547 base::RunLoop().RunUntilIdle();
548 EXPECT_FALSE(request_peer_context_.received_response);
549 EXPECT_FALSE(request_peer_context_.complete);
550 EXPECT_EQ(0, request_peer_context_.total_encoded_data_length);
551
552 dispatcher_->SetDefersLoading(request_id_, false);
553 EXPECT_FALSE(request_peer_context_.received_response);
554 EXPECT_FALSE(request_peer_context_.complete);
555 EXPECT_EQ(0, request_peer_context_.total_encoded_data_length);
556
557 base::RunLoop().RunUntilIdle();
558 EXPECT_TRUE(request_peer_context_.received_response);
559 EXPECT_FALSE(request_peer_context_.complete);
560 EXPECT_EQ(4, request_peer_context_.total_encoded_data_length);
561 EXPECT_FALSE(request_peer_context_.cancelled);
562
563 dispatcher_->SetDefersLoading(request_id_, false);
564 base::RunLoop().RunUntilIdle();
565 EXPECT_TRUE(request_peer_context_.received_response);
566 EXPECT_TRUE(request_peer_context_.complete);
567 EXPECT_EQ(4, request_peer_context_.total_encoded_data_length);
568 EXPECT_FALSE(request_peer_context_.cancelled);
569 }
570
354 } // namespace content 571 } // namespace content
OLDNEW
« no previous file with comments | « content/child/url_loader_client_impl.cc ('k') | content/child/url_response_body_consumer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698