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

Unified Diff: net/url_request/url_request_http_job_unittest.cc

Issue 1431723002: Add brotli content-encoding filter. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Address comments Created 5 years 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: 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..a171a460c9247ea7578908b4283e3b8f5d06a9a2 100644
--- a/net/url_request/url_request_http_job_unittest.cc
+++ b/net/url_request/url_request_http_job_unittest.cc
@@ -52,6 +52,25 @@ class TestURLRequestHttpJob : public URLRequestHttpJob {
~TestURLRequestHttpJob() override {}
};
+bool AcceptsEncoding(const HttpRequestHeaders& headers,
+ const std::string encoding) {
+ std::string encoding_headers;
+ bool get_success = headers.GetHeader("Accept-Encoding", &encoding_headers);
+ EXPECT_TRUE(get_success);
+ if (!get_success)
+ return false;
+
+ // This check isn't wrapped with EXPECT* macros because different
+ // results from this function may be expected in different tests.
+ for (const std::string& token :
+ base::SplitString(encoding_headers, ", ", base::KEEP_WHITESPACE,
+ base::SPLIT_WANT_NONEMPTY)) {
+ if (base::EqualsCaseInsensitiveASCII(token, encoding))
+ return true;
+ }
+ return false;
+}
+
class URLRequestHttpJobTest : public ::testing::Test {
protected:
URLRequestHttpJobTest()
@@ -71,21 +90,7 @@ class URLRequestHttpJobTest : public ::testing::Test {
EXPECT_TRUE(request_info);
if (!request_info) return false;
- std::string encoding_headers;
- bool get_success = request_info->extra_headers.GetHeader(
- "Accept-Encoding", &encoding_headers);
- EXPECT_TRUE(get_success);
- if (!get_success) return false;
-
- // This check isn't wrapped with EXPECT* macros because different
- // results from this function may be expected in different tests.
- for (const std::string& token :
- base::SplitString(encoding_headers, ", ", base::KEEP_WHITESPACE,
- base::SPLIT_WANT_NONEMPTY)) {
- if (base::EqualsCaseInsensitiveASCII(token, "sdch"))
- return true;
- }
- return false;
+ return AcceptsEncoding(request_info->extra_headers, "sdch");
}
void EnableSdch() {
@@ -629,6 +634,48 @@ TEST_F(URLRequestHttpJobTest, SdchAdvertisementPost) {
EXPECT_FALSE(TransactionAcceptsSdchEncoding());
}
+class URLRequestHttpJobWithBrotliSupportTest : public ::testing::Test {
+ protected:
+ URLRequestHttpJobWithBrotliSupportTest()
+ : context_(new TestURLRequestContext(true)) {
+ scoped_ptr<HttpNetworkSession::Params> params(
+ new HttpNetworkSession::Params);
+ params->enable_brotli = true;
+ context_->set_http_network_session_params(params.Pass());
+ context_->set_network_delegate(&network_delegate_);
+ context_->Init();
+ }
+
+ bool AcceptsBrotliEncoding() {
+ return AcceptsEncoding(network_delegate_.last_headers(), "br");
xunjieli 2015/12/04 15:21:19 Let's not add "last_headers" to TestNetworkDelegat
eustas 2015/12/04 16:14:31 Great idea! Thank you. Done.
+ }
+
+ void RunRequest(GURL url) {
xunjieli 2015/12/04 15:21:19 nit: const GURL&
eustas 2015/12/04 16:14:31 Done.
+ scoped_ptr<URLRequest> req(
+ context_->CreateRequest(url, DEFAULT_PRIORITY, &delegate_));
+ scoped_refptr<TestURLRequestHttpJob> job(
+ new TestURLRequestHttpJob(req.get()));
+ TestCompletionCallback dummy;
+ network_delegate_.NotifyBeforeURLRequest(req.get(), dummy.callback(), &url);
+ job->Start();
+ base::RunLoop().RunUntilIdle();
+ }
+
+ scoped_ptr<TestURLRequestContext> context_;
xunjieli 2015/12/04 15:21:19 nit: add "private" before these variables.
eustas 2015/12/04 16:14:32 Done.
+ TestNetworkDelegate network_delegate_;
+ TestDelegate delegate_;
+};
+
+TEST_F(URLRequestHttpJobWithBrotliSupportTest, NoBrotliAdvertisementOverHttp) {
+ RunRequest(GURL("http://www.example.com"));
+ EXPECT_FALSE(AcceptsBrotliEncoding());
+}
+
+TEST_F(URLRequestHttpJobWithBrotliSupportTest, BrotliAdvertisement) {
+ RunRequest(GURL("https://www.example.com"));
+ EXPECT_TRUE(AcceptsBrotliEncoding());
+}
+
// This base class just serves to set up some things before the TestURLRequest
// constructor is called.
class URLRequestHttpJobWebSocketTestBase : public ::testing::Test {

Powered by Google App Engine
This is Rietveld 408576698