Index: net/url_request/url_request_http_job_unittest.cc |
diff --git a/net/url_request/url_request_http_job_unittest.cc b/net/url_request/url_request_http_job_unittest.cc |
index dca3e8e979e7c2daa3801960b541255a5e1c7ef9..0b49dfc77bd882887c078ab4f12856c082f33f9d 100644 |
--- a/net/url_request/url_request_http_job_unittest.cc |
+++ b/net/url_request/url_request_http_job_unittest.cc |
@@ -17,6 +17,7 @@ |
#include "net/base/request_priority.h" |
#include "net/base/test_data_directory.h" |
#include "net/cookies/cookie_store_test_helpers.h" |
+#include "net/http/http_server_properties_impl.h" |
#include "net/http/http_transaction_factory.h" |
#include "net/http/http_transaction_test_util.h" |
#include "net/socket/socket_test_util.h" |
@@ -61,7 +62,7 @@ class URLRequestHttpJobTest : public ::testing::Test { |
context_.set_http_transaction_factory(&network_layer_); |
} |
- bool TransactionAcceptsSdchEncoding() { |
+ bool TransactionAcceptsSpecificEncoding(const std::string encoding) { |
base::WeakPtr<MockNetworkTransaction> transaction( |
network_layer_.last_transaction()); |
EXPECT_TRUE(transaction); |
@@ -82,16 +83,34 @@ class URLRequestHttpJobTest : public ::testing::Test { |
for (const std::string& token : |
base::SplitString(encoding_headers, ", ", base::KEEP_WHITESPACE, |
base::SPLIT_WANT_NONEMPTY)) { |
- if (base::EqualsCaseInsensitiveASCII(token, "sdch")) |
+ if (base::EqualsCaseInsensitiveASCII(token, encoding)) |
return true; |
} |
return false; |
} |
+ bool TransactionAcceptsSdchEncoding() { |
+ return TransactionAcceptsSpecificEncoding("sdch"); |
+ } |
+ |
+ bool TransactionAcceptsBrotliEncoding() { |
+ return TransactionAcceptsSpecificEncoding("br"); |
+ } |
+ |
void EnableSdch() { |
context_.SetSdchManager(scoped_ptr<SdchManager>(new SdchManager).Pass()); |
} |
+ void EnableBrotli() { |
+ HttpNetworkSession::Params params; |
+ params.enable_brotli = true; |
+ params.http_server_properties = http_server_properties_.GetWeakPtr(); |
+ network_session_.reset(new HttpNetworkSession(params)); |
+ network_layer_.set_network_session(network_session_.get()); |
xunjieli
2015/12/02 18:26:31
These two tests should really follow other URLRequ
eustas
2015/12/03 12:32:07
Nice idea. Done!
|
+ } |
+ |
+ HttpServerPropertiesImpl http_server_properties_; |
+ scoped_ptr<HttpNetworkSession> network_session_; |
MockNetworkLayer network_layer_; |
TestURLRequestContext context_; |
TestDelegate delegate_; |
@@ -629,6 +648,26 @@ TEST_F(URLRequestHttpJobTest, SdchAdvertisementPost) { |
EXPECT_FALSE(TransactionAcceptsSdchEncoding()); |
} |
+TEST_F(URLRequestHttpJobTest, NoBrotliAdvertisementOverHttp) { |
+ EnableBrotli(); |
+ req_->set_method("GET"); // Redundant with default. |
+ scoped_refptr<TestURLRequestHttpJob> job( |
+ new TestURLRequestHttpJob(req_.get())); |
+ job->Start(); |
+ EXPECT_FALSE(TransactionAcceptsBrotliEncoding()); |
+} |
+ |
+TEST_F(URLRequestHttpJobTest, BrotliAdvertisement) { |
+ EnableBrotli(); |
+ req_ = context_.CreateRequest(GURL("https://www.example.com"), |
+ DEFAULT_PRIORITY, &delegate_); |
+ req_->set_method("GET"); // Redundant with default. |
+ scoped_refptr<TestURLRequestHttpJob> job( |
+ new TestURLRequestHttpJob(req_.get())); |
+ job->Start(); |
+ EXPECT_TRUE(TransactionAcceptsBrotliEncoding()); |
+} |
+ |
// This base class just serves to set up some things before the TestURLRequest |
// constructor is called. |
class URLRequestHttpJobWebSocketTestBase : public ::testing::Test { |