Index: content/browser/loader/mime_sniffing_resource_handler_unittest.cc |
diff --git a/content/browser/loader/mime_sniffing_resource_handler_unittest.cc b/content/browser/loader/mime_sniffing_resource_handler_unittest.cc |
index 0cc90f6096dbe970c18ef8d960ee8fc48db27c57..521c4890225b08e5aa1fc67eceba36d73adb1efc 100644 |
--- a/content/browser/loader/mime_sniffing_resource_handler_unittest.cc |
+++ b/content/browser/loader/mime_sniffing_resource_handler_unittest.cc |
@@ -189,6 +189,7 @@ class MimeSniffingResourceHandlerTest : public testing::Test { |
void TestHandlerSniffing(bool response_started, |
bool defer_response_started, |
bool will_read, |
+ bool defer_will_read, |
bool read_completed, |
bool defer_read_completed); |
@@ -197,6 +198,7 @@ class MimeSniffingResourceHandlerTest : public testing::Test { |
void TestHandlerNoSniffing(bool response_started, |
bool defer_response_started, |
bool will_read, |
+ bool defer_will_read, |
bool read_completed, |
bool defer_read_completed); |
@@ -312,6 +314,7 @@ void MimeSniffingResourceHandlerTest::TestHandlerSniffing( |
bool response_started, |
bool defer_response_started, |
bool will_read, |
+ bool defer_will_read, |
bool read_completed, |
bool defer_read_completed) { |
net::URLRequestContext context; |
@@ -343,6 +346,7 @@ void MimeSniffingResourceHandlerTest::TestHandlerSniffing( |
scoped_test_handler->set_on_response_started_result(response_started); |
scoped_test_handler->set_defer_on_response_started(defer_response_started); |
scoped_test_handler->set_on_will_read_result(will_read); |
+ scoped_test_handler->set_defer_on_will_read(defer_will_read); |
scoped_test_handler->set_on_read_completed_result(read_completed); |
scoped_test_handler->set_defer_on_read_completed(defer_read_completed); |
TestResourceHandler* test_handler = scoped_test_handler.get(); |
@@ -384,6 +388,16 @@ void MimeSniffingResourceHandlerTest::TestHandlerSniffing( |
return; |
} |
+ if (defer_will_read) { |
+ ASSERT_EQ(MockResourceLoader::Status::CALLBACK_PENDING, |
+ mock_loader.status()); |
+ EXPECT_EQ(MimeSniffingResourceHandler::STATE_WAITING_FOR_BUFFER, |
+ mime_sniffing_handler.state_); |
+ test_handler->Resume(); |
+ // MimeSniffingResourceHandler may not synchronously resume the request. |
+ base::RunLoop().RunUntilIdle(); |
+ } |
+ |
ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader.status()); |
// Simulate an HTML page. The mime sniffer will identify the MimeType and |
@@ -462,6 +476,7 @@ void MimeSniffingResourceHandlerTest::TestHandlerNoSniffing( |
bool response_started, |
bool defer_response_started, |
bool will_read, |
+ bool defer_will_read, |
bool read_completed, |
bool defer_read_completed) { |
net::URLRequestContext context; |
@@ -493,6 +508,7 @@ void MimeSniffingResourceHandlerTest::TestHandlerNoSniffing( |
scoped_test_handler->set_on_response_started_result(response_started); |
scoped_test_handler->set_defer_on_response_started(defer_response_started); |
scoped_test_handler->set_on_will_read_result(will_read); |
+ scoped_test_handler->set_defer_on_will_read(defer_will_read); |
scoped_test_handler->set_on_read_completed_result(read_completed); |
scoped_test_handler->set_defer_on_read_completed(defer_read_completed); |
TestResourceHandler* test_handler = scoped_test_handler.get(); |
@@ -560,6 +576,16 @@ void MimeSniffingResourceHandlerTest::TestHandlerNoSniffing( |
return; |
} |
+ if (defer_will_read) { |
+ ASSERT_EQ(MockResourceLoader::Status::CALLBACK_PENDING, |
+ mock_loader.status()); |
+ EXPECT_EQ(MimeSniffingResourceHandler::STATE_STREAMING, |
+ mime_sniffing_handler.state_); |
+ test_handler->Resume(); |
+ // MimeSniffingResourceHandler may not synchronously resume the request. |
+ base::RunLoop().RunUntilIdle(); |
+ } |
+ |
ASSERT_EQ(MockResourceLoader::Status::IDLE, mock_loader.status()); |
mock_loader.OnReadCompleted(std::string(2000, 'a')); |
@@ -722,32 +748,44 @@ TEST_F(MimeSniffingResourceHandlerTest, StreamHandling) { |
// Test that the MimeSniffingHandler operates properly when it doesn't sniff |
// resources. |
+// TODO(mmenke): None of these test async cancellation. Should they? |
TEST_F(MimeSniffingResourceHandlerTest, NoSniffing) { |
// Test simple case. |
TestHandlerNoSniffing( |
true /* response_started_succeeds */, |
false /* defer_response_started */, |
true /* will_read_succeeds */, |
+ false /* defer_will_read */, |
true /* read_completed_succeeds */, |
false /* defer_read_completed */); |
- // Test deferral in OnResponseStarted and/or in OnReadCompleted. |
+ // Test deferral. |
TestHandlerNoSniffing( |
true /* response_started_succeeds */, |
true /* defer_response_started */, |
true /* will_read_succeeds */, |
+ false /* defer_will_read */, |
+ true /* read_completed_succeeds */, |
+ false /* defer_read_completed */); |
+ TestHandlerNoSniffing( |
+ true /* response_started_succeeds */, |
+ false /* defer_response_started */, |
+ true /* will_read_succeeds */, |
+ true /* defer_will_read */, |
true /* read_completed_succeeds */, |
false /* defer_read_completed */); |
TestHandlerNoSniffing( |
true /* response_started_succeeds */, |
false /* defer_response_started */, |
true /* will_read_succeeds */, |
+ false /* defer_will_read */, |
true /* read_completed_succeeds */, |
true /* defer_read_completed */); |
TestHandlerNoSniffing( |
true /* response_started_succeeds */, |
true /* defer_response_started */, |
true /* will_read_succeeds */, |
+ true /* defer_will_read */, |
true /* read_completed_succeeds */, |
true /* defer_read_completed */); |
@@ -756,31 +794,36 @@ TEST_F(MimeSniffingResourceHandlerTest, NoSniffing) { |
false /* response_started_succeeds */, |
false /* defer_response_started */, |
false /* will_read_succeeds */, |
+ false /* defer_will_read */, |
false /* read_completed_succeeds */, |
false /* defer_read_completed */); |
TestHandlerNoSniffing( |
true /* response_started_succeeds */, |
false /* defer_response_started */, |
false /* will_read_succeeds */, |
+ false /* defer_will_read */, |
false /* read_completed_succeeds */, |
false /* defer_read_completed */); |
TestHandlerNoSniffing( |
true /* response_started_succeeds */, |
false /* defer_response_started */, |
true /* will_read_succeeds */, |
+ false /* defer_will_read */, |
false /* read_completed_succeeds */, |
false /* defer_read_completed */); |
- // Test cancel after OnResponseStarted deferral. |
+ // Test cancel after deferral. |
TestHandlerNoSniffing( |
true /* response_started_succeeds */, |
true /* defer_response_started */, |
false /* will_read_succeeds */, |
+ false /* defer_will_read */, |
false /* read_completed_succeeds */, |
false /* defer_read_completed */); |
TestHandlerNoSniffing( |
true /* response_started_succeeds */, |
true /* defer_response_started */, |
+ true /* defer_will_read */, |
true /* will_read_succeeds */, |
false /* read_completed_succeeds */, |
false /* defer_read_completed */); |
@@ -790,32 +833,44 @@ TEST_F(MimeSniffingResourceHandlerTest, NoSniffing) { |
// Test that the MimeSniffingHandler operates properly when it sniffs |
// resources. |
+// TODO(mmenke): None of these test async cancellation. Should they? |
TEST_F(MimeSniffingResourceHandlerTest, Sniffing) { |
// Test simple case. |
TestHandlerSniffing( |
true /* response_started_succeeds */, |
false /* defer_response_started */, |
true /* will_read_succeeds */, |
+ false /* defer_will_read */, |
true /* read_completed_succeeds */, |
false /* defer_read_completed */); |
- // Test deferral in OnResponseStarted and/or in OnReadCompleted. |
+ // Test deferral. |
TestHandlerSniffing( |
true /* response_started_succeeds */, |
true /* defer_response_started */, |
true /* will_read_succeeds */, |
+ false /* defer_will_read */, |
+ true /* read_completed_succeeds */, |
+ false /* defer_read_completed */); |
+ TestHandlerSniffing( |
+ true /* response_started_succeeds */, |
+ false /* defer_response_started */, |
+ true /* will_read_succeeds */, |
+ true /* defer_will_read */, |
true /* read_completed_succeeds */, |
false /* defer_read_completed */); |
TestHandlerSniffing( |
true /* response_started_succeeds */, |
false /* defer_response_started */, |
true /* will_read_succeeds */, |
+ false /* defer_will_read */, |
true /* read_completed_succeeds */, |
true /* defer_read_completed */); |
TestHandlerSniffing( |
true /* response_started_succeeds */, |
true /* defer_response_started */, |
true /* will_read_succeeds */, |
+ true /* defer_will_read */, |
true /* read_completed_succeeds */, |
true /* defer_read_completed */); |
@@ -824,32 +879,37 @@ TEST_F(MimeSniffingResourceHandlerTest, Sniffing) { |
false /* response_started_succeeds */, |
false /* defer_response_started */, |
false /* will_read_succeeds */, |
+ false /* defer_will_read */, |
false /* read_completed_succeeds */, |
false /* defer_read_completed */); |
TestHandlerSniffing( |
true /* response_started_succeeds */, |
false /* defer_response_started */, |
false /* will_read_succeeds */, |
+ false /* defer_will_read */, |
false /* read_completed_succeeds */, |
false /* defer_read_completed */); |
TestHandlerSniffing( |
true /* response_started_succeeds */, |
false /* defer_response_started */, |
true /* will_read_succeeds */, |
+ false /* defer_will_read */, |
false /* read_completed_succeeds */, |
false /* defer_read_completed */); |
- // Test cancel after OnResponseStarted deferral. |
+ // Test cancel after deferral. |
TestHandlerSniffing( |
true /* response_started_succeeds */, |
true /* defer_response_started */, |
false /* will_read_succeeds */, |
+ false /* defer_will_read */, |
false /* read_completed_succeeds */, |
false /* defer_read_completed */); |
TestHandlerSniffing( |
true /* response_started_succeeds */, |
true /* defer_response_started */, |
true /* will_read_succeeds */, |
+ true /* defer_will_read */, |
false /* read_completed_succeeds */, |
false /* defer_read_completed */); |