| 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 |