Add Accept header to chrome://brave-image loader (#31489)

The PR adds `Accept: <image formats>` to chrome://brave-image requests.
This will allow to use more optimized formats (i.e. WebP) when the backend supports it.
This commit is contained in:
Mikhail
2025-09-30 06:36:52 +09:00
committed by GitHub
parent 2a538eb540
commit 27ce089693
2 changed files with 12 additions and 0 deletions
@@ -25,6 +25,7 @@
#include "net/traffic_annotation/network_traffic_annotation.h"
#include "services/network/public/cpp/resource_request.h"
#include "services/network/public/cpp/simple_url_loader.h"
#include "third_party/blink/public/common/loader/network_utils.h"
#include "third_party/skia/include/core/SkBitmap.h"
#include "ui/gfx/codec/png_codec.h"
#include "ui/gfx/geometry/size.h"
@@ -247,6 +248,8 @@ void BraveSanitizedImageSource::StartImageDownload(
auto request = std::make_unique<network::ResourceRequest>();
request->url = request_attributes.image_url;
request->credentials_mode = network::mojom::CredentialsMode::kOmit;
request->headers.SetHeader("Accept",
blink::network_utils::ImageAcceptHeader());
auto loader =
network::SimpleURLLoader::Create(std::move(request), traffic_annotation);
@@ -71,7 +71,16 @@ class BraveSanitizedImageSourceTest : public testing::Test {
"chrome://brave-image/?url=" + EncodeQuery(url.spec()) +
(target_size.empty() ? ""
: "&target_size=" + EncodeQuery(target_size)));
base::RepeatingCallback<void(const network::ResourceRequest&)> interceptor =
base::BindLambdaForTesting(
[&](const network::ResourceRequest& request) {
const auto accept_header = request.headers.GetHeader("Accept");
ASSERT_TRUE(accept_header.has_value());
EXPECT_NE(accept_header->find("image/webp"), std::string::npos);
});
test_url_loader_factory_.SetInterceptor(std::move(interceptor));
test_url_loader_factory_.AddResponse(url.spec(), std::move(data));
base::RunLoop run_loop;
scoped_refptr<base::RefCountedMemory> result;
source_.StartDataRequest(