Index: net/url_request/url_request_unittest.cc |
diff --git a/net/url_request/url_request_unittest.cc b/net/url_request/url_request_unittest.cc |
index 8ef10a853c89da14750260253cc58b37c36f1406..938cc5be414bab9767453110427dc80bd87ca526 100644 |
--- a/net/url_request/url_request_unittest.cc |
+++ b/net/url_request/url_request_unittest.cc |
@@ -1404,6 +1404,32 @@ TEST_F(URLRequestTest, RequestCompletionForEmptyResponse) { |
EXPECT_EQ(1, default_network_delegate_.completed_requests()); |
} |
+// Make sure that URLRequest passes on its priority updates to its |
+// job. |
+TEST_F(URLRequestTest, Priority) { |
+ TestDelegate d; |
+ URLRequest req(GURL("http://test_intercept/foo"), &d, &default_context_); |
+ EXPECT_EQ(LOWEST, req.priority()); |
+ |
+ scoped_refptr<URLRequestTestJob> job = |
+ new URLRequestTestJob(&req, &default_network_delegate_); |
+ AddTestInterceptor()->set_main_intercept_job(job); |
+ EXPECT_EQ(IDLE, job->priority()); |
+ |
+ req.SetPriority(LOW); |
+ EXPECT_EQ(LOW, req.priority()); |
+ // |req| doesn't know about |job| yet. |
+ EXPECT_EQ(IDLE, job->priority()); |
+ |
+ req.Start(); |
+ // |req| should set |job|'s initial priority. |
+ EXPECT_EQ(LOW, job->priority()); |
+ |
+ req.SetPriority(HIGHEST); |
+ EXPECT_EQ(HIGHEST, req.priority()); |
+ EXPECT_EQ(HIGHEST, job->priority()); |
+} |
+ |
// TODO(droger): Support TestServer on iOS (see http://crbug.com/148666). |
#if !defined(OS_IOS) |
// A subclass of TestServer that uses a statically-configured hostname. This is |
@@ -4130,6 +4156,46 @@ TEST_F(URLRequestTestHTTP, EmptyHttpUserAgentSettings) { |
} |
} |
+// Make sure that URLRequest passes on its priority updates to its job |
+// even on redirect. |
+TEST_F(URLRequestTestHTTP, PriorityRedirect) { |
+ ASSERT_TRUE(test_server_.Start()); |
+ |
+ TestDelegate d; |
+ URLRequest req(test_server_.GetURL("empty.html"), &d, &default_context_); |
+ EXPECT_EQ(LOWEST, req.priority()); |
+ |
+ scoped_refptr<URLRequestRedirectJob> redirect_job = |
+ new URLRequestRedirectJob( |
+ &req, &default_network_delegate_, test_server_.GetURL("echo"), |
+ URLRequestRedirectJob::REDIRECT_302_FOUND); |
+ scoped_refptr<URLRequestTestJob> job = |
+ new URLRequestTestJob(&req, &default_network_delegate_); |
+ |
+ AddTestInterceptor()->set_main_intercept_job(redirect_job); |
+ |
+ EXPECT_EQ(IDLE, job->priority()); |
+ |
+ req.SetPriority(LOW); |
+ EXPECT_EQ(LOW, req.priority()); |
+ EXPECT_EQ(IDLE, job->priority()); |
+ |
+ req.Start(); |
+ EXPECT_TRUE(req.is_pending()); |
+ EXPECT_EQ(IDLE, job->priority()); |
+ |
+ AddTestInterceptor()->set_main_intercept_job(job); |
+ EXPECT_EQ(IDLE, job->priority()); |
+ |
+ MessageLoop::current()->Run(); |
+ EXPECT_EQ(LOW, job->priority()); |
+ |
+ req.SetPriority(HIGHEST); |
+ EXPECT_EQ(HIGHEST, req.priority()); |
+ EXPECT_EQ(HIGHEST, job->priority()); |
+} |
+ |
+ |
class HTTPSRequestTest : public testing::Test { |
public: |
HTTPSRequestTest() : default_context_(true) { |