| // Copyright 2021 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "base/run_loop.h" |
| #include "base/test/bind.h" |
| #include "chrome/test/base/in_process_browser_test.h" |
| #include "chrome/test/base/ui_test_utils.h" |
| #include "content/public/test/browser_test.h" |
| #include "content/public/test/browser_test_utils.h" |
| #include "media/media_buildflags.h" |
| #include "net/test/embedded_test_server/http_request.h" |
| |
| using ChromeAcceptEncodingHeaderTest = InProcessBrowserTest; |
| |
| IN_PROC_BROWSER_TEST_F(ChromeAcceptEncodingHeaderTest, Check) { |
| net::EmbeddedTestServer server(net::EmbeddedTestServer::TYPE_HTTPS); |
| server.ServeFilesFromSourceDirectory(GetChromeTestDataDir()); |
| std::string navigation_accept_encoding_header, |
| subresource_accept_encoding_header; |
| base::RunLoop navigation_loop, subresource_loop; |
| server.RegisterRequestMonitor(base::BindLambdaForTesting( |
| [&](const net::test_server::HttpRequest& request) { |
| if (request.relative_url == "/fetch.html") { |
| auto it = request.headers.find("Accept-Encoding"); |
| if (it != request.headers.end()) |
| navigation_accept_encoding_header = it->second; |
| navigation_loop.Quit(); |
| } else if (request.relative_url == "/fetch.html?viaFetch") { |
| auto it = request.headers.find("Accept-Encoding"); |
| if (it != request.headers.end()) |
| subresource_accept_encoding_header = it->second; |
| subresource_loop.Quit(); |
| } |
| })); |
| ASSERT_TRUE(server.Start()); |
| GURL url = server.GetURL("/fetch.html"); |
| ASSERT_TRUE(ui_test_utils::NavigateToURL(browser(), url)); |
| |
| navigation_loop.Run(); |
| subresource_loop.Run(); |
| |
| ASSERT_EQ("gzip, deflate, br, zstd", navigation_accept_encoding_header); |
| ASSERT_EQ("gzip, deflate, br, zstd", subresource_accept_encoding_header); |
| |
| // Since the server uses local variables. |
| ASSERT_TRUE(server.ShutdownAndWaitUntilComplete()); |
| } |