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

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

Issue 2467833002: Implement redirect handling on MojoAsyncResourceHandler (Closed)
Patch Set: fix Created 4 years, 1 month 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/mojo_async_resource_handler_unittest.cc
diff --git a/content/browser/loader/mojo_async_resource_handler_unittest.cc b/content/browser/loader/mojo_async_resource_handler_unittest.cc
index 59535923a7b4be03bff534883e0f601dc2ce6a26..ccccd62e9be982730a1661bbcfd7859d30db9525 100644
--- a/content/browser/loader/mojo_async_resource_handler_unittest.cc
+++ b/content/browser/loader/mojo_async_resource_handler_unittest.cc
@@ -839,7 +839,7 @@ TEST_F(MojoAsyncResourceHandlerTest,
url_loader_client_.RunUntilResponseBodyArrived();
ASSERT_TRUE(url_loader_client_.response_body().is_valid());
handler_->ResetBeginWriteExpectation();
- handler_->ResumeForTesting();
+ handler_->OnWritableForTesting();
std::string actual;
while (actual.size() < written) {
@@ -1078,6 +1078,77 @@ TEST_P(MojoAsyncResourceHandlerWithAllocationSizeTest, CancelWhileWaiting) {
EXPECT_EQ(0, resource_controller_.num_resume_calls());
}
+TEST_P(MojoAsyncResourceHandlerWithAllocationSizeTest, RedirectHandling) {
+ rdh_delegate_.set_num_on_response_started_calls_expectation(1);
+ bool defer = false;
+
+ ASSERT_TRUE(handler_->OnWillStart(request_->url(), &defer));
+ ASSERT_FALSE(defer);
+ scoped_refptr<ResourceResponse> response = new ResourceResponse();
+ net::RedirectInfo redirect_info;
+ redirect_info.status_code = 301;
+ ASSERT_TRUE(
+ handler_->OnRequestRedirected(redirect_info, response.get(), &defer));
+ ASSERT_TRUE(defer);
+
+ ASSERT_FALSE(url_loader_client_.has_received_response());
+ ASSERT_FALSE(url_loader_client_.has_received_redirect());
+ url_loader_client_.RunUntilRedirectReceived();
+
+ ASSERT_FALSE(url_loader_client_.has_received_response());
+ ASSERT_TRUE(url_loader_client_.has_received_redirect());
+ EXPECT_EQ(301, url_loader_client_.redirect_info().status_code);
+
+ EXPECT_EQ(0, resource_controller_.num_resume_calls());
+ handler_->FollowRedirect();
+ EXPECT_EQ(1, resource_controller_.num_resume_calls());
+
+ url_loader_client_.ClearHasReceivedRedirect();
+ // Redirect once more.
+ defer = false;
+ redirect_info.status_code = 302;
+ ASSERT_TRUE(
+ handler_->OnRequestRedirected(redirect_info, response.get(), &defer));
+ ASSERT_TRUE(defer);
+
+ ASSERT_FALSE(url_loader_client_.has_received_response());
+ ASSERT_FALSE(url_loader_client_.has_received_redirect());
+ url_loader_client_.RunUntilRedirectReceived();
+
+ ASSERT_FALSE(url_loader_client_.has_received_response());
+ ASSERT_TRUE(url_loader_client_.has_received_redirect());
+ EXPECT_EQ(302, url_loader_client_.redirect_info().status_code);
+
+ EXPECT_EQ(1, resource_controller_.num_resume_calls());
+ handler_->FollowRedirect();
+ EXPECT_EQ(2, resource_controller_.num_resume_calls());
+
+ // Give the final response.
+ defer = false;
+ ASSERT_TRUE(handler_->OnResponseStarted(response.get(), &defer));
+ ASSERT_FALSE(defer);
+
+ net::URLRequestStatus status(net::URLRequestStatus::SUCCESS, net::OK);
+ handler_->OnResponseCompleted(status, &defer);
+ ASSERT_FALSE(defer);
+
+ ASSERT_FALSE(url_loader_client_.has_received_completion());
+ url_loader_client_.RunUntilComplete();
+
+ ASSERT_TRUE(url_loader_client_.has_received_response());
+ ASSERT_TRUE(url_loader_client_.has_received_completion());
+ EXPECT_EQ(net::OK, url_loader_client_.completion_status().error_code);
+}
+
+TEST_P(MojoAsyncResourceHandlerWithAllocationSizeTest,
+ MalformedFollowRedirectRequest) {
+ handler_->FollowRedirect();
+
+ EXPECT_EQ(0, resource_controller_.num_resume_calls());
+ EXPECT_TRUE(resource_controller_.is_cancel_with_error_called());
+ EXPECT_EQ(net::ERR_ABORTED, resource_controller_.error());
+}
+
// Typically ResourceHandler methods are called in this order.
TEST_P(
MojoAsyncResourceHandlerWithAllocationSizeTest,

Powered by Google App Engine
This is Rietveld 408576698