Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(320)

Unified Diff: content/browser/loader/mime_sniffing_resource_handler_unittest.cc

Issue 2668603003: Make ResourceHandler::OnWillRead able to complete asynchronously. (Closed)
Patch Set: Response to comments Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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..ae18ed3bbba09b4f5dbf6e755273c1cd178a29f8 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,136 +748,110 @@ 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 */,
- true /* read_completed_succeeds */,
- false /* defer_read_completed */);
+ 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 */,
- true /* read_completed_succeeds */,
- false /* defer_read_completed */);
+ 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 /* read_completed_succeeds */,
- true /* defer_read_completed */);
+ 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 */,
- true /* defer_response_started */,
- true /* will_read_succeeds */,
- true /* read_completed_succeeds */,
- true /* defer_read_completed */);
+ 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 */);
// Test cancel in OnResponseStarted, OnWillRead, OnReadCompleted.
TestHandlerNoSniffing(
- false /* response_started_succeeds */,
- false /* defer_response_started */,
- false /* will_read_succeeds */,
- false /* read_completed_succeeds */,
- false /* defer_read_completed */);
+ 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 /* read_completed_succeeds */,
- false /* defer_read_completed */);
+ 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 /* read_completed_succeeds */,
- false /* defer_read_completed */);
+ 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 /* read_completed_succeeds */,
- false /* defer_read_completed */);
+ 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 /* will_read_succeeds */,
- false /* read_completed_succeeds */,
- false /* defer_read_completed */);
+ true /* response_started_succeeds */, true /* defer_response_started */,
+ true /* defer_will_read */, true /* will_read_succeeds */,
+ false /* read_completed_succeeds */, false /* defer_read_completed */);
content::RunAllPendingInMessageLoop();
}
// 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 */,
- true /* read_completed_succeeds */,
- false /* defer_read_completed */);
+ 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 */,
- true /* defer_response_started */,
- true /* will_read_succeeds */,
- true /* read_completed_succeeds */,
- false /* defer_read_completed */);
+ 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 */,
- true /* read_completed_succeeds */,
- true /* defer_read_completed */);
+ 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 /* read_completed_succeeds */,
- true /* defer_read_completed */);
+ true /* response_started_succeeds */, true /* defer_response_started */,
+ true /* will_read_succeeds */, true /* defer_will_read */,
+ true /* read_completed_succeeds */, true /* defer_read_completed */);
// Test cancel in OnResponseStarted, OnWillRead, OnReadCompleted.
TestHandlerSniffing(
- false /* response_started_succeeds */,
- false /* defer_response_started */,
- false /* will_read_succeeds */,
- false /* read_completed_succeeds */,
- false /* defer_read_completed */);
+ 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 /* read_completed_succeeds */,
- false /* defer_read_completed */);
+ 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 /* read_completed_succeeds */,
- false /* defer_read_completed */);
+ 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 /* read_completed_succeeds */,
- false /* defer_read_completed */);
+ 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 */,
- false /* read_completed_succeeds */,
- false /* defer_read_completed */);
+ true /* response_started_succeeds */, true /* defer_response_started */,
+ true /* will_read_succeeds */, true /* defer_will_read */,
+ false /* read_completed_succeeds */, false /* defer_read_completed */);
content::RunAllPendingInMessageLoop();
}
« no previous file with comments | « content/browser/loader/mime_sniffing_resource_handler.cc ('k') | content/browser/loader/mock_resource_loader.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698