| 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 92a8a1fca76519caf57d34f99a5fb77efd5ef542..1400d584f93fa683ea4965badf5e15db4122aa4b 100644
|
| --- a/content/browser/loader/mime_sniffing_resource_handler_unittest.cc
|
| +++ b/content/browser/loader/mime_sniffing_resource_handler_unittest.cc
|
| @@ -373,19 +373,21 @@ void MimeSniffingResourceHandlerTest::TestHandlerSniffing(
|
| TestResourceController resource_controller;
|
| mime_sniffing_handler->SetController(&resource_controller);
|
|
|
| - bool defer = false;
|
| - mime_sniffing_handler->OnWillStart(GURL(), &defer);
|
| + bool defer_or_cancel = false;
|
| + mime_sniffing_handler->OnWillStart(GURL(), &defer_or_cancel);
|
| + EXPECT_FALSE(defer_or_cancel);
|
| + EXPECT_EQ(0, resource_controller.cancel_call_count());
|
|
|
| // The response should be sniffed.
|
| scoped_refptr<ResourceResponse> response(new ResourceResponse);
|
| response->head.mime_type.assign("text/plain");
|
|
|
| // Simulate the response starting. The MimeSniffingHandler should start
|
| - // buffering, so the return value should always be true.
|
| - EXPECT_TRUE(mime_sniffing_handler->OnResponseStarted(response.get(), &defer));
|
| + // buffering, so should not defer.
|
| + mime_sniffing_handler->OnResponseStarted(response.get(), &defer_or_cancel);
|
| EXPECT_EQ(0, resource_controller.cancel_call_count());
|
| EXPECT_EQ(0, resource_controller.resume_call_count());
|
| - EXPECT_FALSE(defer);
|
| + EXPECT_FALSE(defer_or_cancel);
|
|
|
| // Read some data to sniff the mime type. This will ask the next
|
| // ResourceHandler for a buffer.
|
| @@ -412,16 +414,14 @@ void MimeSniffingResourceHandlerTest::TestHandlerSniffing(
|
| char data[] = "!DOCTYPE html\n<head>\n<title>Foo</title>\n</head>";
|
| memcpy(read_buffer->data(), data, sizeof(data));
|
|
|
| - defer = false;
|
| - bool return_value =
|
| - mime_sniffing_handler->OnReadCompleted(sizeof(data), &defer);
|
| + defer_or_cancel = false;
|
| + mime_sniffing_handler->OnReadCompleted(sizeof(data), &defer_or_cancel);
|
|
|
| // If the next handler cancels the response start, the caller of
|
| // MimeSniffingHandler::OnReadCompleted should be notified immediately.
|
| if (!response_started) {
|
| - EXPECT_FALSE(defer);
|
| - EXPECT_EQ(response_started, return_value);
|
| - EXPECT_EQ(0, resource_controller.cancel_call_count());
|
| + EXPECT_TRUE(defer_or_cancel);
|
| + EXPECT_EQ(1, resource_controller.cancel_call_count());
|
|
|
| EXPECT_EQ(1, test_handler->on_will_start_called());
|
| EXPECT_EQ(0, test_handler->on_request_redirected_called());
|
| @@ -434,12 +434,9 @@ void MimeSniffingResourceHandlerTest::TestHandlerSniffing(
|
| return;
|
| }
|
|
|
| - // The replay can be deferred both at response started and read replay
|
| - // stages.
|
| - EXPECT_EQ(defer, defer_response_started || defer_read_completed);
|
| if (defer_response_started) {
|
| - EXPECT_TRUE(defer);
|
| - EXPECT_TRUE(return_value);
|
| + EXPECT_TRUE(defer_or_cancel);
|
| + EXPECT_EQ(0, resource_controller.cancel_call_count());
|
| EXPECT_EQ(MimeSniffingResourceHandler::STATE_REPLAYING_RESPONSE_RECEIVED,
|
| mime_sniffing_handler->state_);
|
| mime_sniffing_handler->Resume();
|
| @@ -448,12 +445,8 @@ void MimeSniffingResourceHandlerTest::TestHandlerSniffing(
|
| // The body that was sniffed should be transmitted to the next handler. This
|
| // may cancel the request.
|
| if (!read_completed) {
|
| - if (defer_response_started) {
|
| - EXPECT_EQ(1, resource_controller.cancel_call_count());
|
| - } else {
|
| - EXPECT_EQ(0, resource_controller.cancel_call_count());
|
| - EXPECT_FALSE(return_value);
|
| - }
|
| + EXPECT_TRUE(defer_or_cancel);
|
| + EXPECT_EQ(1, resource_controller.cancel_call_count());
|
| // Process all messages to ensure proper test teardown.
|
| content::RunAllPendingInMessageLoop();
|
| return;
|
| @@ -464,7 +457,7 @@ void MimeSniffingResourceHandlerTest::TestHandlerSniffing(
|
|
|
| // The request may be deferred by the next handler once the read is done.
|
| if (defer_read_completed) {
|
| - EXPECT_TRUE(defer);
|
| + EXPECT_TRUE(defer_or_cancel);
|
| mime_sniffing_handler->Resume();
|
| }
|
|
|
| @@ -540,21 +533,22 @@ void MimeSniffingResourceHandlerTest::TestHandlerNoSniffing(
|
|
|
| int expected_resume_calls = 0;
|
|
|
| - bool defer = false;
|
| - mime_sniffing_handler->OnWillStart(GURL(), &defer);
|
| + bool defer_or_cancel = false;
|
| + mime_sniffing_handler->OnWillStart(GURL(), &defer_or_cancel);
|
| + EXPECT_EQ(0, resource_controller.cancel_call_count());
|
| + EXPECT_FALSE(defer_or_cancel);
|
|
|
| // The response should not be sniffed.
|
| scoped_refptr<ResourceResponse> response(new ResourceResponse);
|
| response->head.mime_type.assign("text/html");
|
|
|
| // Simulate the response starting. There should be no need for buffering, so
|
| - // the return value should be that of the next handler.
|
| - EXPECT_EQ(response_started,
|
| - mime_sniffing_handler->OnResponseStarted(response.get(), &defer));
|
| - EXPECT_EQ(0, resource_controller.cancel_call_count());
|
| + // should transparently pass calls on to the next handler.
|
| + mime_sniffing_handler->OnResponseStarted(response.get(), &defer_or_cancel);
|
|
|
| if (!response_started) {
|
| - EXPECT_FALSE(defer);
|
| + EXPECT_TRUE(defer_or_cancel);
|
| + EXPECT_EQ(1, resource_controller.cancel_call_count());
|
|
|
| EXPECT_EQ(1, test_handler->on_will_start_called());
|
| EXPECT_EQ(0, test_handler->on_request_redirected_called());
|
| @@ -567,8 +561,9 @@ void MimeSniffingResourceHandlerTest::TestHandlerNoSniffing(
|
| return;
|
| }
|
|
|
| - EXPECT_EQ(defer_response_started, defer);
|
| - if (defer) {
|
| + EXPECT_EQ(0, resource_controller.cancel_call_count());
|
| + EXPECT_EQ(defer_response_started, defer_or_cancel);
|
| + if (defer_or_cancel) {
|
| EXPECT_EQ(MimeSniffingResourceHandler::STATE_REPLAYING_RESPONSE_RECEIVED,
|
| mime_sniffing_handler->state_);
|
| expected_resume_calls++;
|
| @@ -597,10 +592,8 @@ void MimeSniffingResourceHandlerTest::TestHandlerNoSniffing(
|
| return;
|
| }
|
|
|
| - defer = false;
|
| - EXPECT_EQ(read_completed,
|
| - mime_sniffing_handler->OnReadCompleted(2000, &defer));
|
| - EXPECT_EQ(0, resource_controller.cancel_call_count());
|
| + defer_or_cancel = false;
|
| + mime_sniffing_handler->OnReadCompleted(2000, &defer_or_cancel);
|
|
|
| EXPECT_EQ(1, test_handler->on_will_start_called());
|
| EXPECT_EQ(0, test_handler->on_request_redirected_called());
|
| @@ -609,15 +602,17 @@ void MimeSniffingResourceHandlerTest::TestHandlerNoSniffing(
|
| EXPECT_EQ(1, test_handler->on_read_completed_called());
|
|
|
| if (!read_completed) {
|
| - EXPECT_FALSE(defer);
|
| + EXPECT_EQ(1, resource_controller.cancel_call_count());
|
| + EXPECT_TRUE(defer_or_cancel);
|
|
|
| // Process all messages to ensure proper test teardown.
|
| content::RunAllPendingInMessageLoop();
|
| return;
|
| }
|
|
|
| - EXPECT_EQ(defer_read_completed, defer);
|
| - if (defer) {
|
| + EXPECT_EQ(0, resource_controller.cancel_call_count());
|
| + EXPECT_EQ(defer_read_completed, defer_or_cancel);
|
| + if (defer_or_cancel) {
|
| expected_resume_calls++;
|
| mime_sniffing_handler->Resume();
|
| }
|
| @@ -981,18 +976,20 @@ TEST_F(MimeSniffingResourceHandlerTest, FetchShouldDisableMimeSniffing) {
|
| TestResourceController resource_controller;
|
| mime_sniffing_handler->SetController(&resource_controller);
|
|
|
| - bool defer = false;
|
| - mime_sniffing_handler->OnWillStart(GURL(), &defer);
|
| - ASSERT_FALSE(defer);
|
| + bool defer_or_cancel = false;
|
| + mime_sniffing_handler->OnWillStart(GURL(), &defer_or_cancel);
|
| + ASSERT_EQ(0, resource_controller.cancel_call_count());
|
| + ASSERT_FALSE(defer_or_cancel);
|
|
|
| scoped_refptr<ResourceResponse> response(new ResourceResponse);
|
| response->head.mime_type = "text/plain";
|
|
|
| - // |mime_sniffing_handler->OnResponseStarted| should return false because
|
| - // mime sniffing is disabled and the wrapped resource handler returns false
|
| - // on OnResponseStarted.
|
| - EXPECT_FALSE(
|
| - mime_sniffing_handler->OnResponseStarted(response.get(), &defer));
|
| + // |mime_sniffing_handler->OnResponseStarted| should cancel the request
|
| + // because MIME sniffing is disabled and the wrapped resource handler cancels
|
| + // the request in OnResponseStarted.
|
| + mime_sniffing_handler->OnResponseStarted(response.get(), &defer_or_cancel);
|
| + EXPECT_EQ(1, resource_controller.cancel_call_count());
|
| + EXPECT_TRUE(defer_or_cancel);
|
|
|
| // Process all messages to ensure proper test teardown.
|
| content::RunAllPendingInMessageLoop();
|
|
|