Commit 785071ee authored by dproy's avatar dproy Committed by Commit bot

Copy priority from original request for redirects

We construct a new request to represent a redirect, but never set its priority.
This fixes that.

BUG=613165

Review-Url: https://codereview.chromium.org/1994173002
Cr-Commit-Position: refs/heads/master@{#397167}
parent 50db1a63
......@@ -1089,6 +1089,7 @@ void WebURLLoaderImpl::PopulateURLRequestForRedirect(
new_request->setHTTPReferrer(WebString::fromUTF8(redirect_info.new_referrer),
referrer_policy);
new_request->setPriority(request.getPriority());
std::string old_method = request.httpMethod().utf8();
new_request->setHTTPMethod(WebString::fromUTF8(redirect_info.new_method));
......
......@@ -118,6 +118,7 @@ class TestWebURLLoaderClient : public blink::WebURLLoaderClient {
delete_on_fail_(false),
did_receive_redirect_(false),
did_receive_response_(false),
check_redirect_request_priority_(false),
did_finish_(false) {}
~TestWebURLLoaderClient() override {}
......@@ -129,6 +130,10 @@ class TestWebURLLoaderClient : public blink::WebURLLoaderClient {
const blink::WebURLResponse& redirectResponse) override {
EXPECT_TRUE(loader_);
EXPECT_EQ(loader_.get(), loader);
if (check_redirect_request_priority_)
EXPECT_EQ(redirect_request_priority, newRequest.getPriority());
// No test currently simulates mutiple redirects.
EXPECT_FALSE(did_receive_redirect_);
did_receive_redirect_ = true;
......@@ -222,6 +227,10 @@ class TestWebURLLoaderClient : public blink::WebURLLoaderClient {
void set_delete_on_receive_data() { delete_on_receive_data_ = true; }
void set_delete_on_finish() { delete_on_finish_ = true; }
void set_delete_on_fail() { delete_on_fail_ = true; }
void set_redirect_request_priority(blink::WebURLRequest::Priority priority) {
check_redirect_request_priority_ = true;
redirect_request_priority = priority;
}
bool did_receive_redirect() const { return did_receive_redirect_; }
bool did_receive_response() const { return did_receive_response_; }
......@@ -241,6 +250,8 @@ class TestWebURLLoaderClient : public blink::WebURLLoaderClient {
bool did_receive_redirect_;
bool did_receive_response_;
bool check_redirect_request_priority_;
blink::WebURLRequest::Priority redirect_request_priority;
std::string received_data_;
bool did_finish_;
blink::WebURLError error_;
......@@ -271,6 +282,16 @@ class WebURLLoaderImplTest : public testing::Test {
ASSERT_TRUE(peer());
}
void DoStartAsyncRequestWithPriority(
blink::WebURLRequest::Priority priority) {
blink::WebURLRequest request;
request.initialize();
request.setPriority(priority);
request.setURL(GURL(kTestURL));
client()->loader()->loadAsynchronously(request, client());
ASSERT_TRUE(peer());
}
void DoReceiveRedirect() {
EXPECT_FALSE(client()->did_receive_redirect());
net::RedirectInfo redirect_info;
......@@ -364,6 +385,19 @@ TEST_F(WebURLLoaderImplTest, Redirect) {
EXPECT_EQ(kTestData, client()->received_data());
}
TEST_F(WebURLLoaderImplTest, RedirectCorrectPriority) {
DoStartAsyncRequestWithPriority(
blink::WebURLRequest::Priority::PriorityVeryHigh);
client()->set_redirect_request_priority(
blink::WebURLRequest::Priority::PriorityVeryHigh);
DoReceiveRedirect();
DoReceiveResponse();
DoReceiveData();
DoCompleteRequest();
EXPECT_FALSE(dispatcher()->canceled());
EXPECT_EQ(kTestData, client()->received_data());
}
TEST_F(WebURLLoaderImplTest, Failure) {
DoStartAsyncRequest();
DoReceiveResponse();
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment