OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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/mime_sniffing_resource_handler.h" | 5 #include "content/browser/loader/mime_sniffing_resource_handler.h" |
6 | 6 |
7 #include <stdint.h> | 7 #include <stdint.h> |
8 | 8 |
9 #include <memory> | 9 #include <memory> |
10 | 10 |
(...skipping 171 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
182 | 182 |
183 bool TestStreamIsIntercepted(bool allow_download, | 183 bool TestStreamIsIntercepted(bool allow_download, |
184 bool must_download, | 184 bool must_download, |
185 ResourceType request_resource_type); | 185 ResourceType request_resource_type); |
186 | 186 |
187 // Tests the operation of the MimeSniffingHandler when it needs to buffer | 187 // Tests the operation of the MimeSniffingHandler when it needs to buffer |
188 // data (example case: the response is text/plain). | 188 // data (example case: the response is text/plain). |
189 void TestHandlerSniffing(bool response_started, | 189 void TestHandlerSniffing(bool response_started, |
190 bool defer_response_started, | 190 bool defer_response_started, |
191 bool will_read, | 191 bool will_read, |
| 192 bool defer_will_read, |
192 bool read_completed, | 193 bool read_completed, |
193 bool defer_read_completed); | 194 bool defer_read_completed); |
194 | 195 |
195 // Tests the operation of the MimeSniffingHandler when it doesn't buffer | 196 // Tests the operation of the MimeSniffingHandler when it doesn't buffer |
196 // data (example case: the response is text/html). | 197 // data (example case: the response is text/html). |
197 void TestHandlerNoSniffing(bool response_started, | 198 void TestHandlerNoSniffing(bool response_started, |
198 bool defer_response_started, | 199 bool defer_response_started, |
199 bool will_read, | 200 bool will_read, |
| 201 bool defer_will_read, |
200 bool read_completed, | 202 bool read_completed, |
201 bool defer_read_completed); | 203 bool defer_read_completed); |
202 | 204 |
203 private: | 205 private: |
204 // Whether the URL request should be intercepted as a stream. | 206 // Whether the URL request should be intercepted as a stream. |
205 bool stream_has_handler_; | 207 bool stream_has_handler_; |
206 bool plugin_available_; | 208 bool plugin_available_; |
207 bool plugin_stale_; | 209 bool plugin_stale_; |
208 | 210 |
209 TestBrowserThreadBundle thread_bundle_; | 211 TestBrowserThreadBundle thread_bundle_; |
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
305 EXPECT_LT(host.intercepted_as_stream_count(), 2); | 307 EXPECT_LT(host.intercepted_as_stream_count(), 2); |
306 if (allow_download) | 308 if (allow_download) |
307 EXPECT_TRUE(intercepting_handler->new_handler_for_testing()); | 309 EXPECT_TRUE(intercepting_handler->new_handler_for_testing()); |
308 return host.intercepted_as_stream(); | 310 return host.intercepted_as_stream(); |
309 } | 311 } |
310 | 312 |
311 void MimeSniffingResourceHandlerTest::TestHandlerSniffing( | 313 void MimeSniffingResourceHandlerTest::TestHandlerSniffing( |
312 bool response_started, | 314 bool response_started, |
313 bool defer_response_started, | 315 bool defer_response_started, |
314 bool will_read, | 316 bool will_read, |
| 317 bool defer_will_read, |
315 bool read_completed, | 318 bool read_completed, |
316 bool defer_read_completed) { | 319 bool defer_read_completed) { |
317 net::URLRequestContext context; | 320 net::URLRequestContext context; |
318 std::unique_ptr<net::URLRequest> request(context.CreateRequest( | 321 std::unique_ptr<net::URLRequest> request(context.CreateRequest( |
319 GURL("http://www.google.com"), net::DEFAULT_PRIORITY, nullptr)); | 322 GURL("http://www.google.com"), net::DEFAULT_PRIORITY, nullptr)); |
320 ResourceRequestInfo::AllocateForTesting(request.get(), | 323 ResourceRequestInfo::AllocateForTesting(request.get(), |
321 RESOURCE_TYPE_MAIN_FRAME, | 324 RESOURCE_TYPE_MAIN_FRAME, |
322 nullptr, // context | 325 nullptr, // context |
323 0, // render_process_id | 326 0, // render_process_id |
324 0, // render_view_id | 327 0, // render_view_id |
(...skipping 11 matching lines...) Expand all Loading... |
336 TestFakePluginService plugin_service(plugin_available_, plugin_stale_); | 339 TestFakePluginService plugin_service(plugin_available_, plugin_stale_); |
337 std::unique_ptr<InterceptingResourceHandler> intercepting_handler( | 340 std::unique_ptr<InterceptingResourceHandler> intercepting_handler( |
338 new InterceptingResourceHandler(base::MakeUnique<TestResourceHandler>(), | 341 new InterceptingResourceHandler(base::MakeUnique<TestResourceHandler>(), |
339 nullptr)); | 342 nullptr)); |
340 | 343 |
341 std::unique_ptr<TestResourceHandler> scoped_test_handler( | 344 std::unique_ptr<TestResourceHandler> scoped_test_handler( |
342 new TestResourceHandler()); | 345 new TestResourceHandler()); |
343 scoped_test_handler->set_on_response_started_result(response_started); | 346 scoped_test_handler->set_on_response_started_result(response_started); |
344 scoped_test_handler->set_defer_on_response_started(defer_response_started); | 347 scoped_test_handler->set_defer_on_response_started(defer_response_started); |
345 scoped_test_handler->set_on_will_read_result(will_read); | 348 scoped_test_handler->set_on_will_read_result(will_read); |
| 349 scoped_test_handler->set_defer_on_will_read(defer_will_read); |
346 scoped_test_handler->set_on_read_completed_result(read_completed); | 350 scoped_test_handler->set_on_read_completed_result(read_completed); |
347 scoped_test_handler->set_defer_on_read_completed(defer_read_completed); | 351 scoped_test_handler->set_defer_on_read_completed(defer_read_completed); |
348 TestResourceHandler* test_handler = scoped_test_handler.get(); | 352 TestResourceHandler* test_handler = scoped_test_handler.get(); |
349 MimeSniffingResourceHandler mime_sniffing_handler( | 353 MimeSniffingResourceHandler mime_sniffing_handler( |
350 std::move(scoped_test_handler), &host, &plugin_service, | 354 std::move(scoped_test_handler), &host, &plugin_service, |
351 intercepting_handler.get(), request.get(), | 355 intercepting_handler.get(), request.get(), |
352 REQUEST_CONTEXT_TYPE_UNSPECIFIED); | 356 REQUEST_CONTEXT_TYPE_UNSPECIFIED); |
353 | 357 |
354 MockResourceLoader mock_loader(&mime_sniffing_handler); | 358 MockResourceLoader mock_loader(&mime_sniffing_handler); |
355 | 359 |
(...skipping 21 matching lines...) Expand all Loading... |
377 EXPECT_EQ(0, test_handler->on_request_redirected_called()); | 381 EXPECT_EQ(0, test_handler->on_request_redirected_called()); |
378 EXPECT_EQ(0, test_handler->on_response_started_called()); | 382 EXPECT_EQ(0, test_handler->on_response_started_called()); |
379 EXPECT_EQ(1, test_handler->on_will_read_called()); | 383 EXPECT_EQ(1, test_handler->on_will_read_called()); |
380 EXPECT_EQ(0, test_handler->on_read_completed_called()); | 384 EXPECT_EQ(0, test_handler->on_read_completed_called()); |
381 | 385 |
382 // Process all messages to ensure proper test teardown. | 386 // Process all messages to ensure proper test teardown. |
383 content::RunAllPendingInMessageLoop(); | 387 content::RunAllPendingInMessageLoop(); |
384 return; | 388 return; |
385 } | 389 } |
386 | 390 |
| 391 if (defer_will_read) { |
| 392 ASSERT_EQ(MockResourceLoader::Status::CALLBACK_PENDING, |
| 393 mock_loader.status()); |
| 394 EXPECT_EQ(MimeSniffingResourceHandler::STATE_WAITING_FOR_BUFFER, |
| 395 mime_sniffing_handler.state_); |
| 396 test_handler->Resume(); |
| 397 // MimeSniffingResourceHandler may not synchronously resume the request. |
| 398 base::RunLoop().RunUntilIdle(); |
| 399 } |
| 400 |
387 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader.status()); | 401 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader.status()); |
388 | 402 |
389 // Simulate an HTML page. The mime sniffer will identify the MimeType and | 403 // Simulate an HTML page. The mime sniffer will identify the MimeType and |
390 // proceed with replay. | 404 // proceed with replay. |
391 const char kData[] = "!DOCTYPE html\n<head>\n<title>Foo</title>\n</head>"; | 405 const char kData[] = "!DOCTYPE html\n<head>\n<title>Foo</title>\n</head>"; |
392 // Construct StringPiece manually, as the terminal null needs to be included, | 406 // Construct StringPiece manually, as the terminal null needs to be included, |
393 // so it's sniffed as binary (Not important that it's sniffed as binary, but | 407 // so it's sniffed as binary (Not important that it's sniffed as binary, but |
394 // this gaurantees it's sniffed as something, without waiting for more data). | 408 // this gaurantees it's sniffed as something, without waiting for more data). |
395 mock_loader.OnReadCompleted(base::StringPiece(kData, sizeof(kData))); | 409 mock_loader.OnReadCompleted(base::StringPiece(kData, sizeof(kData))); |
396 | 410 |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
455 EXPECT_EQ(1, test_handler->on_read_completed_called()); | 469 EXPECT_EQ(1, test_handler->on_read_completed_called()); |
456 | 470 |
457 // Process all messages to ensure proper test teardown. | 471 // Process all messages to ensure proper test teardown. |
458 content::RunAllPendingInMessageLoop(); | 472 content::RunAllPendingInMessageLoop(); |
459 } | 473 } |
460 | 474 |
461 void MimeSniffingResourceHandlerTest::TestHandlerNoSniffing( | 475 void MimeSniffingResourceHandlerTest::TestHandlerNoSniffing( |
462 bool response_started, | 476 bool response_started, |
463 bool defer_response_started, | 477 bool defer_response_started, |
464 bool will_read, | 478 bool will_read, |
| 479 bool defer_will_read, |
465 bool read_completed, | 480 bool read_completed, |
466 bool defer_read_completed) { | 481 bool defer_read_completed) { |
467 net::URLRequestContext context; | 482 net::URLRequestContext context; |
468 std::unique_ptr<net::URLRequest> request(context.CreateRequest( | 483 std::unique_ptr<net::URLRequest> request(context.CreateRequest( |
469 GURL("http://www.google.com"), net::DEFAULT_PRIORITY, nullptr)); | 484 GURL("http://www.google.com"), net::DEFAULT_PRIORITY, nullptr)); |
470 ResourceRequestInfo::AllocateForTesting(request.get(), | 485 ResourceRequestInfo::AllocateForTesting(request.get(), |
471 RESOURCE_TYPE_MAIN_FRAME, | 486 RESOURCE_TYPE_MAIN_FRAME, |
472 nullptr, // context | 487 nullptr, // context |
473 0, // render_process_id | 488 0, // render_process_id |
474 0, // render_view_id | 489 0, // render_view_id |
(...skipping 11 matching lines...) Expand all Loading... |
486 TestFakePluginService plugin_service(plugin_available_, plugin_stale_); | 501 TestFakePluginService plugin_service(plugin_available_, plugin_stale_); |
487 std::unique_ptr<InterceptingResourceHandler> intercepting_handler( | 502 std::unique_ptr<InterceptingResourceHandler> intercepting_handler( |
488 new InterceptingResourceHandler(base::MakeUnique<TestResourceHandler>(), | 503 new InterceptingResourceHandler(base::MakeUnique<TestResourceHandler>(), |
489 nullptr)); | 504 nullptr)); |
490 | 505 |
491 std::unique_ptr<TestResourceHandler> scoped_test_handler( | 506 std::unique_ptr<TestResourceHandler> scoped_test_handler( |
492 new TestResourceHandler()); | 507 new TestResourceHandler()); |
493 scoped_test_handler->set_on_response_started_result(response_started); | 508 scoped_test_handler->set_on_response_started_result(response_started); |
494 scoped_test_handler->set_defer_on_response_started(defer_response_started); | 509 scoped_test_handler->set_defer_on_response_started(defer_response_started); |
495 scoped_test_handler->set_on_will_read_result(will_read); | 510 scoped_test_handler->set_on_will_read_result(will_read); |
| 511 scoped_test_handler->set_defer_on_will_read(defer_will_read); |
496 scoped_test_handler->set_on_read_completed_result(read_completed); | 512 scoped_test_handler->set_on_read_completed_result(read_completed); |
497 scoped_test_handler->set_defer_on_read_completed(defer_read_completed); | 513 scoped_test_handler->set_defer_on_read_completed(defer_read_completed); |
498 TestResourceHandler* test_handler = scoped_test_handler.get(); | 514 TestResourceHandler* test_handler = scoped_test_handler.get(); |
499 MimeSniffingResourceHandler mime_sniffing_handler( | 515 MimeSniffingResourceHandler mime_sniffing_handler( |
500 std::move(scoped_test_handler), &host, &plugin_service, | 516 std::move(scoped_test_handler), &host, &plugin_service, |
501 intercepting_handler.get(), request.get(), | 517 intercepting_handler.get(), request.get(), |
502 REQUEST_CONTEXT_TYPE_UNSPECIFIED); | 518 REQUEST_CONTEXT_TYPE_UNSPECIFIED); |
503 | 519 |
504 MockResourceLoader mock_loader(&mime_sniffing_handler); | 520 MockResourceLoader mock_loader(&mime_sniffing_handler); |
505 | 521 |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
553 EXPECT_EQ(0, test_handler->on_request_redirected_called()); | 569 EXPECT_EQ(0, test_handler->on_request_redirected_called()); |
554 EXPECT_EQ(1, test_handler->on_response_started_called()); | 570 EXPECT_EQ(1, test_handler->on_response_started_called()); |
555 EXPECT_EQ(1, test_handler->on_will_read_called()); | 571 EXPECT_EQ(1, test_handler->on_will_read_called()); |
556 EXPECT_EQ(0, test_handler->on_read_completed_called()); | 572 EXPECT_EQ(0, test_handler->on_read_completed_called()); |
557 | 573 |
558 // Process all messages to ensure proper test teardown. | 574 // Process all messages to ensure proper test teardown. |
559 content::RunAllPendingInMessageLoop(); | 575 content::RunAllPendingInMessageLoop(); |
560 return; | 576 return; |
561 } | 577 } |
562 | 578 |
| 579 if (defer_will_read) { |
| 580 ASSERT_EQ(MockResourceLoader::Status::CALLBACK_PENDING, |
| 581 mock_loader.status()); |
| 582 EXPECT_EQ(MimeSniffingResourceHandler::STATE_STREAMING, |
| 583 mime_sniffing_handler.state_); |
| 584 test_handler->Resume(); |
| 585 // MimeSniffingResourceHandler may not synchronously resume the request. |
| 586 base::RunLoop().RunUntilIdle(); |
| 587 } |
| 588 |
563 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader.status()); | 589 ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader.status()); |
564 | 590 |
565 mock_loader.OnReadCompleted(std::string(2000, 'a')); | 591 mock_loader.OnReadCompleted(std::string(2000, 'a')); |
566 | 592 |
567 EXPECT_EQ(1, test_handler->on_will_start_called()); | 593 EXPECT_EQ(1, test_handler->on_will_start_called()); |
568 EXPECT_EQ(0, test_handler->on_request_redirected_called()); | 594 EXPECT_EQ(0, test_handler->on_request_redirected_called()); |
569 EXPECT_EQ(1, test_handler->on_response_started_called()); | 595 EXPECT_EQ(1, test_handler->on_response_started_called()); |
570 EXPECT_EQ(1, test_handler->on_will_read_called()); | 596 EXPECT_EQ(1, test_handler->on_will_read_called()); |
571 EXPECT_EQ(1, test_handler->on_read_completed_called()); | 597 EXPECT_EQ(1, test_handler->on_read_completed_called()); |
572 | 598 |
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
715 allow_download = false; | 741 allow_download = false; |
716 must_download = false; | 742 must_download = false; |
717 resource_type = RESOURCE_TYPE_OBJECT; | 743 resource_type = RESOURCE_TYPE_OBJECT; |
718 EXPECT_TRUE( | 744 EXPECT_TRUE( |
719 TestStreamIsIntercepted(allow_download, must_download, resource_type)); | 745 TestStreamIsIntercepted(allow_download, must_download, resource_type)); |
720 } | 746 } |
721 #endif | 747 #endif |
722 | 748 |
723 // Test that the MimeSniffingHandler operates properly when it doesn't sniff | 749 // Test that the MimeSniffingHandler operates properly when it doesn't sniff |
724 // resources. | 750 // resources. |
| 751 // TODO(mmenke): None of these test async cancellation. Should they? |
725 TEST_F(MimeSniffingResourceHandlerTest, NoSniffing) { | 752 TEST_F(MimeSniffingResourceHandlerTest, NoSniffing) { |
726 // Test simple case. | 753 // Test simple case. |
727 TestHandlerNoSniffing( | 754 TestHandlerNoSniffing( |
728 true /* response_started_succeeds */, | 755 true /* response_started_succeeds */, |
729 false /* defer_response_started */, | 756 false /* defer_response_started */, |
730 true /* will_read_succeeds */, | 757 true /* will_read_succeeds */, |
| 758 false /* defer_will_read */, |
731 true /* read_completed_succeeds */, | 759 true /* read_completed_succeeds */, |
732 false /* defer_read_completed */); | 760 false /* defer_read_completed */); |
733 | 761 |
734 // Test deferral in OnResponseStarted and/or in OnReadCompleted. | 762 // Test deferral. |
735 TestHandlerNoSniffing( | 763 TestHandlerNoSniffing( |
736 true /* response_started_succeeds */, | 764 true /* response_started_succeeds */, |
737 true /* defer_response_started */, | 765 true /* defer_response_started */, |
738 true /* will_read_succeeds */, | 766 true /* will_read_succeeds */, |
| 767 false /* defer_will_read */, |
739 true /* read_completed_succeeds */, | 768 true /* read_completed_succeeds */, |
740 false /* defer_read_completed */); | 769 false /* defer_read_completed */); |
741 TestHandlerNoSniffing( | 770 TestHandlerNoSniffing( |
742 true /* response_started_succeeds */, | 771 true /* response_started_succeeds */, |
743 false /* defer_response_started */, | 772 false /* defer_response_started */, |
744 true /* will_read_succeeds */, | 773 true /* will_read_succeeds */, |
| 774 true /* defer_will_read */, |
| 775 true /* read_completed_succeeds */, |
| 776 false /* defer_read_completed */); |
| 777 TestHandlerNoSniffing( |
| 778 true /* response_started_succeeds */, |
| 779 false /* defer_response_started */, |
| 780 true /* will_read_succeeds */, |
| 781 false /* defer_will_read */, |
745 true /* read_completed_succeeds */, | 782 true /* read_completed_succeeds */, |
746 true /* defer_read_completed */); | 783 true /* defer_read_completed */); |
747 TestHandlerNoSniffing( | 784 TestHandlerNoSniffing( |
748 true /* response_started_succeeds */, | 785 true /* response_started_succeeds */, |
749 true /* defer_response_started */, | 786 true /* defer_response_started */, |
750 true /* will_read_succeeds */, | 787 true /* will_read_succeeds */, |
| 788 true /* defer_will_read */, |
751 true /* read_completed_succeeds */, | 789 true /* read_completed_succeeds */, |
752 true /* defer_read_completed */); | 790 true /* defer_read_completed */); |
753 | 791 |
754 // Test cancel in OnResponseStarted, OnWillRead, OnReadCompleted. | 792 // Test cancel in OnResponseStarted, OnWillRead, OnReadCompleted. |
755 TestHandlerNoSniffing( | 793 TestHandlerNoSniffing( |
756 false /* response_started_succeeds */, | 794 false /* response_started_succeeds */, |
757 false /* defer_response_started */, | 795 false /* defer_response_started */, |
758 false /* will_read_succeeds */, | 796 false /* will_read_succeeds */, |
| 797 false /* defer_will_read */, |
759 false /* read_completed_succeeds */, | 798 false /* read_completed_succeeds */, |
760 false /* defer_read_completed */); | 799 false /* defer_read_completed */); |
761 TestHandlerNoSniffing( | 800 TestHandlerNoSniffing( |
762 true /* response_started_succeeds */, | 801 true /* response_started_succeeds */, |
763 false /* defer_response_started */, | 802 false /* defer_response_started */, |
764 false /* will_read_succeeds */, | 803 false /* will_read_succeeds */, |
| 804 false /* defer_will_read */, |
765 false /* read_completed_succeeds */, | 805 false /* read_completed_succeeds */, |
766 false /* defer_read_completed */); | 806 false /* defer_read_completed */); |
767 TestHandlerNoSniffing( | 807 TestHandlerNoSniffing( |
768 true /* response_started_succeeds */, | 808 true /* response_started_succeeds */, |
769 false /* defer_response_started */, | 809 false /* defer_response_started */, |
770 true /* will_read_succeeds */, | 810 true /* will_read_succeeds */, |
| 811 false /* defer_will_read */, |
771 false /* read_completed_succeeds */, | 812 false /* read_completed_succeeds */, |
772 false /* defer_read_completed */); | 813 false /* defer_read_completed */); |
773 | 814 |
774 // Test cancel after OnResponseStarted deferral. | 815 // Test cancel after deferral. |
775 TestHandlerNoSniffing( | 816 TestHandlerNoSniffing( |
776 true /* response_started_succeeds */, | 817 true /* response_started_succeeds */, |
777 true /* defer_response_started */, | 818 true /* defer_response_started */, |
778 false /* will_read_succeeds */, | 819 false /* will_read_succeeds */, |
| 820 false /* defer_will_read */, |
779 false /* read_completed_succeeds */, | 821 false /* read_completed_succeeds */, |
780 false /* defer_read_completed */); | 822 false /* defer_read_completed */); |
781 TestHandlerNoSniffing( | 823 TestHandlerNoSniffing( |
782 true /* response_started_succeeds */, | 824 true /* response_started_succeeds */, |
783 true /* defer_response_started */, | 825 true /* defer_response_started */, |
| 826 true /* defer_will_read */, |
784 true /* will_read_succeeds */, | 827 true /* will_read_succeeds */, |
785 false /* read_completed_succeeds */, | 828 false /* read_completed_succeeds */, |
786 false /* defer_read_completed */); | 829 false /* defer_read_completed */); |
787 | 830 |
788 content::RunAllPendingInMessageLoop(); | 831 content::RunAllPendingInMessageLoop(); |
789 } | 832 } |
790 | 833 |
791 // Test that the MimeSniffingHandler operates properly when it sniffs | 834 // Test that the MimeSniffingHandler operates properly when it sniffs |
792 // resources. | 835 // resources. |
| 836 // TODO(mmenke): None of these test async cancellation. Should they? |
793 TEST_F(MimeSniffingResourceHandlerTest, Sniffing) { | 837 TEST_F(MimeSniffingResourceHandlerTest, Sniffing) { |
794 // Test simple case. | 838 // Test simple case. |
795 TestHandlerSniffing( | 839 TestHandlerSniffing( |
796 true /* response_started_succeeds */, | 840 true /* response_started_succeeds */, |
797 false /* defer_response_started */, | 841 false /* defer_response_started */, |
798 true /* will_read_succeeds */, | 842 true /* will_read_succeeds */, |
| 843 false /* defer_will_read */, |
799 true /* read_completed_succeeds */, | 844 true /* read_completed_succeeds */, |
800 false /* defer_read_completed */); | 845 false /* defer_read_completed */); |
801 | 846 |
802 // Test deferral in OnResponseStarted and/or in OnReadCompleted. | 847 // Test deferral. |
803 TestHandlerSniffing( | 848 TestHandlerSniffing( |
804 true /* response_started_succeeds */, | 849 true /* response_started_succeeds */, |
805 true /* defer_response_started */, | 850 true /* defer_response_started */, |
806 true /* will_read_succeeds */, | 851 true /* will_read_succeeds */, |
| 852 false /* defer_will_read */, |
807 true /* read_completed_succeeds */, | 853 true /* read_completed_succeeds */, |
808 false /* defer_read_completed */); | 854 false /* defer_read_completed */); |
809 TestHandlerSniffing( | 855 TestHandlerSniffing( |
810 true /* response_started_succeeds */, | 856 true /* response_started_succeeds */, |
811 false /* defer_response_started */, | 857 false /* defer_response_started */, |
812 true /* will_read_succeeds */, | 858 true /* will_read_succeeds */, |
| 859 true /* defer_will_read */, |
| 860 true /* read_completed_succeeds */, |
| 861 false /* defer_read_completed */); |
| 862 TestHandlerSniffing( |
| 863 true /* response_started_succeeds */, |
| 864 false /* defer_response_started */, |
| 865 true /* will_read_succeeds */, |
| 866 false /* defer_will_read */, |
813 true /* read_completed_succeeds */, | 867 true /* read_completed_succeeds */, |
814 true /* defer_read_completed */); | 868 true /* defer_read_completed */); |
815 TestHandlerSniffing( | 869 TestHandlerSniffing( |
816 true /* response_started_succeeds */, | 870 true /* response_started_succeeds */, |
817 true /* defer_response_started */, | 871 true /* defer_response_started */, |
818 true /* will_read_succeeds */, | 872 true /* will_read_succeeds */, |
| 873 true /* defer_will_read */, |
819 true /* read_completed_succeeds */, | 874 true /* read_completed_succeeds */, |
820 true /* defer_read_completed */); | 875 true /* defer_read_completed */); |
821 | 876 |
822 // Test cancel in OnResponseStarted, OnWillRead, OnReadCompleted. | 877 // Test cancel in OnResponseStarted, OnWillRead, OnReadCompleted. |
823 TestHandlerSniffing( | 878 TestHandlerSniffing( |
824 false /* response_started_succeeds */, | 879 false /* response_started_succeeds */, |
825 false /* defer_response_started */, | 880 false /* defer_response_started */, |
826 false /* will_read_succeeds */, | 881 false /* will_read_succeeds */, |
| 882 false /* defer_will_read */, |
827 false /* read_completed_succeeds */, | 883 false /* read_completed_succeeds */, |
828 false /* defer_read_completed */); | 884 false /* defer_read_completed */); |
829 TestHandlerSniffing( | 885 TestHandlerSniffing( |
830 true /* response_started_succeeds */, | 886 true /* response_started_succeeds */, |
831 false /* defer_response_started */, | 887 false /* defer_response_started */, |
832 false /* will_read_succeeds */, | 888 false /* will_read_succeeds */, |
| 889 false /* defer_will_read */, |
833 false /* read_completed_succeeds */, | 890 false /* read_completed_succeeds */, |
834 false /* defer_read_completed */); | 891 false /* defer_read_completed */); |
835 TestHandlerSniffing( | 892 TestHandlerSniffing( |
836 true /* response_started_succeeds */, | 893 true /* response_started_succeeds */, |
837 false /* defer_response_started */, | 894 false /* defer_response_started */, |
838 true /* will_read_succeeds */, | 895 true /* will_read_succeeds */, |
| 896 false /* defer_will_read */, |
839 false /* read_completed_succeeds */, | 897 false /* read_completed_succeeds */, |
840 false /* defer_read_completed */); | 898 false /* defer_read_completed */); |
841 | 899 |
842 // Test cancel after OnResponseStarted deferral. | 900 // Test cancel after deferral. |
843 TestHandlerSniffing( | 901 TestHandlerSniffing( |
844 true /* response_started_succeeds */, | 902 true /* response_started_succeeds */, |
845 true /* defer_response_started */, | 903 true /* defer_response_started */, |
846 false /* will_read_succeeds */, | 904 false /* will_read_succeeds */, |
| 905 false /* defer_will_read */, |
847 false /* read_completed_succeeds */, | 906 false /* read_completed_succeeds */, |
848 false /* defer_read_completed */); | 907 false /* defer_read_completed */); |
849 TestHandlerSniffing( | 908 TestHandlerSniffing( |
850 true /* response_started_succeeds */, | 909 true /* response_started_succeeds */, |
851 true /* defer_response_started */, | 910 true /* defer_response_started */, |
852 true /* will_read_succeeds */, | 911 true /* will_read_succeeds */, |
| 912 true /* defer_will_read */, |
853 false /* read_completed_succeeds */, | 913 false /* read_completed_succeeds */, |
854 false /* defer_read_completed */); | 914 false /* defer_read_completed */); |
855 | 915 |
856 content::RunAllPendingInMessageLoop(); | 916 content::RunAllPendingInMessageLoop(); |
857 } | 917 } |
858 | 918 |
859 // Tests that 304s do not trigger a change in handlers. | 919 // Tests that 304s do not trigger a change in handlers. |
860 TEST_F(MimeSniffingResourceHandlerTest, 304Handling) { | 920 TEST_F(MimeSniffingResourceHandlerTest, 304Handling) { |
861 net::URLRequestContext context; | 921 net::URLRequestContext context; |
862 std::unique_ptr<net::URLRequest> request(context.CreateRequest( | 922 std::unique_ptr<net::URLRequest> request(context.CreateRequest( |
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
952 // on OnResponseStarted. | 1012 // on OnResponseStarted. |
953 EXPECT_EQ(MockResourceLoader::Status::CANCELED, | 1013 EXPECT_EQ(MockResourceLoader::Status::CANCELED, |
954 mock_loader.OnResponseStarted(std::move(response))); | 1014 mock_loader.OnResponseStarted(std::move(response))); |
955 EXPECT_EQ(net::ERR_ABORTED, mock_loader.error_code()); | 1015 EXPECT_EQ(net::ERR_ABORTED, mock_loader.error_code()); |
956 | 1016 |
957 // Process all messages to ensure proper test teardown. | 1017 // Process all messages to ensure proper test teardown. |
958 content::RunAllPendingInMessageLoop(); | 1018 content::RunAllPendingInMessageLoop(); |
959 } | 1019 } |
960 | 1020 |
961 } // namespace content | 1021 } // namespace content |
OLD | NEW |