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

Unified Diff: net/http/http_network_transaction_unittest.cc

Issue 2753453003: Reject unadvertised encodings (Closed)
Patch Set: Reject unadvertised encodings. Created 3 years, 9 months 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/http/http_network_transaction_unittest.cc
diff --git a/net/http/http_network_transaction_unittest.cc b/net/http/http_network_transaction_unittest.cc
index 178ad60529e02259c68b37733fec80e05b252d82..734134fcad4f5c7550b87b7ad390abab860fc27c 100644
--- a/net/http/http_network_transaction_unittest.cc
+++ b/net/http/http_network_transaction_unittest.cc
@@ -16525,4 +16525,55 @@ TEST_F(HttpNetworkTransactionTest, TokenBindingSpdy) {
}
#endif // !defined(OS_IOS)
+void CheckContentEncodingMatching(SpdySessionDependencies* session_deps,
+ const std::string& accept_encoding,
+ const std::string& content_encoding,
+ bool should_match) {
+ HttpRequestInfo request;
+ request.method = "GET";
+ request.url = GURL("http://www.foo.com/");
+ request.extra_headers.SetHeader(HttpRequestHeaders::kAcceptEncoding,
+ accept_encoding);
+
+ std::unique_ptr<HttpNetworkSession> session(CreateSession(session_deps));
+ HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get());
+ // Send headers successfully, but get an error while sending the body.
+ MockWrite data_writes[] = {
+ MockWrite("GET / HTTP/1.1\r\n"
+ "Host: www.foo.com\r\n"
+ "Connection: keep-alive\r\n"
+ "Accept-Encoding: "),
+ MockWrite(accept_encoding.data()), MockWrite("\r\n\r\n"),
+ };
+
+ MockRead data_reads[] = {
+ MockRead("HTTP/1.0 200 OK\r\n"), MockRead("Content-Encoding: "),
+ MockRead(content_encoding.data()), MockRead("\r\n\r\n"),
+ MockRead(SYNCHRONOUS, OK),
+ };
+ StaticSocketDataProvider data(data_reads, arraysize(data_reads), data_writes,
+ arraysize(data_writes));
+ session_deps->socket_factory->AddSocketDataProvider(&data);
+
+ TestCompletionCallback callback;
+
+ int rv = trans.Start(&request, callback.callback(), NetLogWithSource());
+ EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
+
+ rv = callback.WaitForResult();
+ if (should_match) {
+ EXPECT_THAT(rv, IsOk());
+ } else {
+ EXPECT_THAT(rv, IsError(ERR_CONTENT_DECODING_FAILED));
+ }
+}
+
+TEST_F(HttpNetworkTransactionTest, MatchContentEncoding1) {
+ CheckContentEncodingMatching(&session_deps_, "gzip,sdch", "br", false);
+}
+
+TEST_F(HttpNetworkTransactionTest, MatchContentEncoding2) {
+ CheckContentEncodingMatching(&session_deps_, "identity;q=1, *;q=0", "", true);
Randy Smith (Not in Mondays) 2017/03/28 19:55:36 Another that that confirms that we bounce gzip if
eustas 2017/04/04 10:34:30 Done.
+}
+
} // namespace net

Powered by Google App Engine
This is Rietveld 408576698