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 */, false /* defer_response_started */, |
729 false /* defer_response_started */, | 756 true /* will_read_succeeds */, false /* defer_will_read */, |
730 true /* will_read_succeeds */, | 757 true /* read_completed_succeeds */, false /* defer_read_completed */); |
731 true /* read_completed_succeeds */, | |
732 false /* defer_read_completed */); | |
733 | 758 |
734 // Test deferral in OnResponseStarted and/or in OnReadCompleted. | 759 // Test deferral. |
735 TestHandlerNoSniffing( | 760 TestHandlerNoSniffing( |
736 true /* response_started_succeeds */, | 761 true /* response_started_succeeds */, true /* defer_response_started */, |
737 true /* defer_response_started */, | 762 true /* will_read_succeeds */, false /* defer_will_read */, |
738 true /* will_read_succeeds */, | 763 true /* read_completed_succeeds */, false /* defer_read_completed */); |
739 true /* read_completed_succeeds */, | |
740 false /* defer_read_completed */); | |
741 TestHandlerNoSniffing( | 764 TestHandlerNoSniffing( |
742 true /* response_started_succeeds */, | 765 true /* response_started_succeeds */, false /* defer_response_started */, |
743 false /* defer_response_started */, | 766 true /* will_read_succeeds */, true /* defer_will_read */, |
744 true /* will_read_succeeds */, | 767 true /* read_completed_succeeds */, false /* defer_read_completed */); |
745 true /* read_completed_succeeds */, | |
746 true /* defer_read_completed */); | |
747 TestHandlerNoSniffing( | 768 TestHandlerNoSniffing( |
748 true /* response_started_succeeds */, | 769 true /* response_started_succeeds */, false /* defer_response_started */, |
749 true /* defer_response_started */, | 770 true /* will_read_succeeds */, false /* defer_will_read */, |
750 true /* will_read_succeeds */, | 771 true /* read_completed_succeeds */, true /* defer_read_completed */); |
751 true /* read_completed_succeeds */, | 772 TestHandlerNoSniffing( |
752 true /* defer_read_completed */); | 773 true /* response_started_succeeds */, true /* defer_response_started */, |
| 774 true /* will_read_succeeds */, true /* defer_will_read */, |
| 775 true /* read_completed_succeeds */, true /* defer_read_completed */); |
753 | 776 |
754 // Test cancel in OnResponseStarted, OnWillRead, OnReadCompleted. | 777 // Test cancel in OnResponseStarted, OnWillRead, OnReadCompleted. |
755 TestHandlerNoSniffing( | 778 TestHandlerNoSniffing( |
756 false /* response_started_succeeds */, | 779 false /* response_started_succeeds */, false /* defer_response_started */, |
757 false /* defer_response_started */, | 780 false /* will_read_succeeds */, false /* defer_will_read */, |
758 false /* will_read_succeeds */, | 781 false /* read_completed_succeeds */, false /* defer_read_completed */); |
759 false /* read_completed_succeeds */, | |
760 false /* defer_read_completed */); | |
761 TestHandlerNoSniffing( | 782 TestHandlerNoSniffing( |
762 true /* response_started_succeeds */, | 783 true /* response_started_succeeds */, false /* defer_response_started */, |
763 false /* defer_response_started */, | 784 false /* will_read_succeeds */, false /* defer_will_read */, |
764 false /* will_read_succeeds */, | 785 false /* read_completed_succeeds */, false /* defer_read_completed */); |
765 false /* read_completed_succeeds */, | |
766 false /* defer_read_completed */); | |
767 TestHandlerNoSniffing( | 786 TestHandlerNoSniffing( |
768 true /* response_started_succeeds */, | 787 true /* response_started_succeeds */, false /* defer_response_started */, |
769 false /* defer_response_started */, | 788 true /* will_read_succeeds */, false /* defer_will_read */, |
770 true /* will_read_succeeds */, | 789 false /* read_completed_succeeds */, false /* defer_read_completed */); |
771 false /* read_completed_succeeds */, | |
772 false /* defer_read_completed */); | |
773 | 790 |
774 // Test cancel after OnResponseStarted deferral. | 791 // Test cancel after deferral. |
775 TestHandlerNoSniffing( | 792 TestHandlerNoSniffing( |
776 true /* response_started_succeeds */, | 793 true /* response_started_succeeds */, true /* defer_response_started */, |
777 true /* defer_response_started */, | 794 false /* will_read_succeeds */, false /* defer_will_read */, |
778 false /* will_read_succeeds */, | 795 false /* read_completed_succeeds */, false /* defer_read_completed */); |
779 false /* read_completed_succeeds */, | |
780 false /* defer_read_completed */); | |
781 TestHandlerNoSniffing( | 796 TestHandlerNoSniffing( |
782 true /* response_started_succeeds */, | 797 true /* response_started_succeeds */, true /* defer_response_started */, |
783 true /* defer_response_started */, | 798 true /* defer_will_read */, true /* will_read_succeeds */, |
784 true /* will_read_succeeds */, | 799 false /* read_completed_succeeds */, false /* defer_read_completed */); |
785 false /* read_completed_succeeds */, | |
786 false /* defer_read_completed */); | |
787 | 800 |
788 content::RunAllPendingInMessageLoop(); | 801 content::RunAllPendingInMessageLoop(); |
789 } | 802 } |
790 | 803 |
791 // Test that the MimeSniffingHandler operates properly when it sniffs | 804 // Test that the MimeSniffingHandler operates properly when it sniffs |
792 // resources. | 805 // resources. |
| 806 // TODO(mmenke): None of these test async cancellation. Should they? |
793 TEST_F(MimeSniffingResourceHandlerTest, Sniffing) { | 807 TEST_F(MimeSniffingResourceHandlerTest, Sniffing) { |
794 // Test simple case. | 808 // Test simple case. |
795 TestHandlerSniffing( | 809 TestHandlerSniffing( |
796 true /* response_started_succeeds */, | 810 true /* response_started_succeeds */, false /* defer_response_started */, |
797 false /* defer_response_started */, | 811 true /* will_read_succeeds */, false /* defer_will_read */, |
798 true /* will_read_succeeds */, | 812 true /* read_completed_succeeds */, false /* defer_read_completed */); |
799 true /* read_completed_succeeds */, | |
800 false /* defer_read_completed */); | |
801 | 813 |
802 // Test deferral in OnResponseStarted and/or in OnReadCompleted. | 814 // Test deferral. |
803 TestHandlerSniffing( | 815 TestHandlerSniffing( |
804 true /* response_started_succeeds */, | 816 true /* response_started_succeeds */, true /* defer_response_started */, |
805 true /* defer_response_started */, | 817 true /* will_read_succeeds */, false /* defer_will_read */, |
806 true /* will_read_succeeds */, | 818 true /* read_completed_succeeds */, false /* defer_read_completed */); |
807 true /* read_completed_succeeds */, | |
808 false /* defer_read_completed */); | |
809 TestHandlerSniffing( | 819 TestHandlerSniffing( |
810 true /* response_started_succeeds */, | 820 true /* response_started_succeeds */, false /* defer_response_started */, |
811 false /* defer_response_started */, | 821 true /* will_read_succeeds */, true /* defer_will_read */, |
812 true /* will_read_succeeds */, | 822 true /* read_completed_succeeds */, false /* defer_read_completed */); |
813 true /* read_completed_succeeds */, | |
814 true /* defer_read_completed */); | |
815 TestHandlerSniffing( | 823 TestHandlerSniffing( |
816 true /* response_started_succeeds */, | 824 true /* response_started_succeeds */, false /* defer_response_started */, |
817 true /* defer_response_started */, | 825 true /* will_read_succeeds */, false /* defer_will_read */, |
818 true /* will_read_succeeds */, | 826 true /* read_completed_succeeds */, true /* defer_read_completed */); |
819 true /* read_completed_succeeds */, | 827 TestHandlerSniffing( |
820 true /* defer_read_completed */); | 828 true /* response_started_succeeds */, true /* defer_response_started */, |
| 829 true /* will_read_succeeds */, true /* defer_will_read */, |
| 830 true /* read_completed_succeeds */, true /* defer_read_completed */); |
821 | 831 |
822 // Test cancel in OnResponseStarted, OnWillRead, OnReadCompleted. | 832 // Test cancel in OnResponseStarted, OnWillRead, OnReadCompleted. |
823 TestHandlerSniffing( | 833 TestHandlerSniffing( |
824 false /* response_started_succeeds */, | 834 false /* response_started_succeeds */, false /* defer_response_started */, |
825 false /* defer_response_started */, | 835 false /* will_read_succeeds */, false /* defer_will_read */, |
826 false /* will_read_succeeds */, | 836 false /* read_completed_succeeds */, false /* defer_read_completed */); |
827 false /* read_completed_succeeds */, | |
828 false /* defer_read_completed */); | |
829 TestHandlerSniffing( | 837 TestHandlerSniffing( |
830 true /* response_started_succeeds */, | 838 true /* response_started_succeeds */, false /* defer_response_started */, |
831 false /* defer_response_started */, | 839 false /* will_read_succeeds */, false /* defer_will_read */, |
832 false /* will_read_succeeds */, | 840 false /* read_completed_succeeds */, false /* defer_read_completed */); |
833 false /* read_completed_succeeds */, | |
834 false /* defer_read_completed */); | |
835 TestHandlerSniffing( | 841 TestHandlerSniffing( |
836 true /* response_started_succeeds */, | 842 true /* response_started_succeeds */, false /* defer_response_started */, |
837 false /* defer_response_started */, | 843 true /* will_read_succeeds */, false /* defer_will_read */, |
838 true /* will_read_succeeds */, | 844 false /* read_completed_succeeds */, false /* defer_read_completed */); |
839 false /* read_completed_succeeds */, | |
840 false /* defer_read_completed */); | |
841 | 845 |
842 // Test cancel after OnResponseStarted deferral. | 846 // Test cancel after deferral. |
843 TestHandlerSniffing( | 847 TestHandlerSniffing( |
844 true /* response_started_succeeds */, | 848 true /* response_started_succeeds */, true /* defer_response_started */, |
845 true /* defer_response_started */, | 849 false /* will_read_succeeds */, false /* defer_will_read */, |
846 false /* will_read_succeeds */, | 850 false /* read_completed_succeeds */, false /* defer_read_completed */); |
847 false /* read_completed_succeeds */, | |
848 false /* defer_read_completed */); | |
849 TestHandlerSniffing( | 851 TestHandlerSniffing( |
850 true /* response_started_succeeds */, | 852 true /* response_started_succeeds */, true /* defer_response_started */, |
851 true /* defer_response_started */, | 853 true /* will_read_succeeds */, true /* defer_will_read */, |
852 true /* will_read_succeeds */, | 854 false /* read_completed_succeeds */, false /* defer_read_completed */); |
853 false /* read_completed_succeeds */, | |
854 false /* defer_read_completed */); | |
855 | 855 |
856 content::RunAllPendingInMessageLoop(); | 856 content::RunAllPendingInMessageLoop(); |
857 } | 857 } |
858 | 858 |
859 // Tests that 304s do not trigger a change in handlers. | 859 // Tests that 304s do not trigger a change in handlers. |
860 TEST_F(MimeSniffingResourceHandlerTest, 304Handling) { | 860 TEST_F(MimeSniffingResourceHandlerTest, 304Handling) { |
861 net::URLRequestContext context; | 861 net::URLRequestContext context; |
862 std::unique_ptr<net::URLRequest> request(context.CreateRequest( | 862 std::unique_ptr<net::URLRequest> request(context.CreateRequest( |
863 GURL("http://www.google.com"), net::DEFAULT_PRIORITY, nullptr)); | 863 GURL("http://www.google.com"), net::DEFAULT_PRIORITY, nullptr)); |
864 ResourceRequestInfo::AllocateForTesting(request.get(), | 864 ResourceRequestInfo::AllocateForTesting(request.get(), |
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
952 // on OnResponseStarted. | 952 // on OnResponseStarted. |
953 EXPECT_EQ(MockResourceLoader::Status::CANCELED, | 953 EXPECT_EQ(MockResourceLoader::Status::CANCELED, |
954 mock_loader.OnResponseStarted(std::move(response))); | 954 mock_loader.OnResponseStarted(std::move(response))); |
955 EXPECT_EQ(net::ERR_ABORTED, mock_loader.error_code()); | 955 EXPECT_EQ(net::ERR_ABORTED, mock_loader.error_code()); |
956 | 956 |
957 // Process all messages to ensure proper test teardown. | 957 // Process all messages to ensure proper test teardown. |
958 content::RunAllPendingInMessageLoop(); | 958 content::RunAllPendingInMessageLoop(); |
959 } | 959 } |
960 | 960 |
961 } // namespace content | 961 } // namespace content |
OLD | NEW |