Chromium Code Reviews| 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 |