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

Side by Side 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 unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "net/http/http_network_transaction.h" 5 #include "net/http/http_network_transaction.h"
6 6
7 #include <math.h> // ceil 7 #include <math.h> // ceil
8 #include <stdarg.h> 8 #include <stdarg.h>
9 #include <stdint.h> 9 #include <stdint.h>
10 10
(...skipping 16507 matching lines...) Expand 10 before | Expand all | Expand 10 after
16518 trans.Start(&request, callback.callback(), NetLogWithSource())); 16518 trans.Start(&request, callback.callback(), NetLogWithSource()));
16519 base::RunLoop().RunUntilIdle(); 16519 base::RunLoop().RunUntilIdle();
16520 16520
16521 EXPECT_TRUE(trans.GetResponseInfo()->was_fetched_via_spdy); 16521 EXPECT_TRUE(trans.GetResponseInfo()->was_fetched_via_spdy);
16522 HttpRequestHeaders headers; 16522 HttpRequestHeaders headers;
16523 ASSERT_TRUE(trans.GetFullRequestHeaders(&headers)); 16523 ASSERT_TRUE(trans.GetFullRequestHeaders(&headers));
16524 EXPECT_TRUE(headers.HasHeader(HttpRequestHeaders::kTokenBinding)); 16524 EXPECT_TRUE(headers.HasHeader(HttpRequestHeaders::kTokenBinding));
16525 } 16525 }
16526 #endif // !defined(OS_IOS) 16526 #endif // !defined(OS_IOS)
16527 16527
16528 void CheckContentEncodingMatching(SpdySessionDependencies* session_deps,
16529 const std::string& accept_encoding,
16530 const std::string& content_encoding,
16531 bool should_match) {
16532 HttpRequestInfo request;
16533 request.method = "GET";
16534 request.url = GURL("http://www.foo.com/");
16535 request.extra_headers.SetHeader(HttpRequestHeaders::kAcceptEncoding,
16536 accept_encoding);
16537
16538 std::unique_ptr<HttpNetworkSession> session(CreateSession(session_deps));
16539 HttpNetworkTransaction trans(DEFAULT_PRIORITY, session.get());
16540 // Send headers successfully, but get an error while sending the body.
16541 MockWrite data_writes[] = {
16542 MockWrite("GET / HTTP/1.1\r\n"
16543 "Host: www.foo.com\r\n"
16544 "Connection: keep-alive\r\n"
16545 "Accept-Encoding: "),
16546 MockWrite(accept_encoding.data()), MockWrite("\r\n\r\n"),
16547 };
16548
16549 MockRead data_reads[] = {
16550 MockRead("HTTP/1.0 200 OK\r\n"), MockRead("Content-Encoding: "),
16551 MockRead(content_encoding.data()), MockRead("\r\n\r\n"),
16552 MockRead(SYNCHRONOUS, OK),
16553 };
16554 StaticSocketDataProvider data(data_reads, arraysize(data_reads), data_writes,
16555 arraysize(data_writes));
16556 session_deps->socket_factory->AddSocketDataProvider(&data);
16557
16558 TestCompletionCallback callback;
16559
16560 int rv = trans.Start(&request, callback.callback(), NetLogWithSource());
16561 EXPECT_THAT(rv, IsError(ERR_IO_PENDING));
16562
16563 rv = callback.WaitForResult();
16564 if (should_match) {
16565 EXPECT_THAT(rv, IsOk());
16566 } else {
16567 EXPECT_THAT(rv, IsError(ERR_CONTENT_DECODING_FAILED));
16568 }
16569 }
16570
16571 TEST_F(HttpNetworkTransactionTest, MatchContentEncoding1) {
16572 CheckContentEncodingMatching(&session_deps_, "gzip,sdch", "br", false);
16573 }
16574
16575 TEST_F(HttpNetworkTransactionTest, MatchContentEncoding2) {
16576 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.
16577 }
16578
16528 } // namespace net 16579 } // namespace net
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698