blob: 13790a9ae830b53ddd1746a4a23b70de2c77c0b2 [file] [log] [blame]
// Copyright 2020 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/renderer/chrome_render_frame_observer.h"
#include "chrome/common/chrome_render_frame.mojom.h"
#include "testing/gtest/include/gtest/gtest.h"
class ChromeRenderFrameObserverTest : public testing::Test {
public:
bool NeedsDownscale(const gfx::Size& original_image_size,
int32_t requested_image_min_area_pixels,
const gfx::Size& requested_image_max_size) {
return ChromeRenderFrameObserver::NeedsDownscale(
original_image_size, requested_image_min_area_pixels,
requested_image_max_size);
}
bool NeedsEncodeImage(const std::string& image_extension,
chrome::mojom::ImageFormat image_format) {
return ChromeRenderFrameObserver::NeedsEncodeImage(image_extension,
image_format);
}
};
TEST_F(ChromeRenderFrameObserverTest,
NeedsDownscale_RequestLargeThanOriginalReturnFalse) {
EXPECT_FALSE(
NeedsDownscale(/* original_image_size */ gfx::Size(10, 10),
/* requested_image_min_area_pixels */ 200,
/* requested_image_max_size */ gfx::Size(20, 20)));
}
TEST_F(ChromeRenderFrameObserverTest, NeedsDownscale_SameSizeReturnFalse) {
EXPECT_FALSE(
NeedsDownscale(/* original_image_size */ gfx::Size(10, 10),
/* requested_image_min_area_pixels */ 100,
/* requested_image_max_size */ gfx::Size(10, 10)));
}
TEST_F(ChromeRenderFrameObserverTest, NeedsDownscale_OnlyWidthShortReturnTrue) {
EXPECT_TRUE(NeedsDownscale(/* original_image_size */ gfx::Size(10, 10),
/* requested_image_min_area_pixels */ 100,
/* requested_image_max_size */ gfx::Size(9, 10)));
}
TEST_F(ChromeRenderFrameObserverTest, NeedsDownscale_OnlyAreaSmallReturnFalse) {
EXPECT_FALSE(
NeedsDownscale(/* original_image_size */ gfx::Size(10, 10),
/* requested_image_min_area_pixels */ 20,
/* requested_image_max_size */ gfx::Size(20, 20)));
}
TEST_F(ChromeRenderFrameObserverTest, NeedsEncodeImage_JpegFormat) {
EXPECT_TRUE(
NeedsEncodeImage(/* image_extension */ ".png",
/* image_format */ chrome::mojom::ImageFormat::JPEG));
EXPECT_FALSE(
NeedsEncodeImage(/* image_extension */ ".jpg",
/* image_format */ chrome::mojom::ImageFormat::JPEG));
EXPECT_TRUE(
NeedsEncodeImage(/* image_extension */ ".gif",
/* image_format */ chrome::mojom::ImageFormat::JPEG));
EXPECT_TRUE(
NeedsEncodeImage(/* image_extension */ ".bmp",
/* image_format */ chrome::mojom::ImageFormat::JPEG));
}
TEST_F(ChromeRenderFrameObserverTest, NeedsEncodeImage_PngFormat) {
EXPECT_FALSE(
NeedsEncodeImage(/* image_extension */ ".png",
/* image_format */ chrome::mojom::ImageFormat::PNG));
EXPECT_TRUE(
NeedsEncodeImage(/* image_extension */ ".jpg",
/* image_format */ chrome::mojom::ImageFormat::PNG));
EXPECT_TRUE(
NeedsEncodeImage(/* image_extension */ ".gif",
/* image_format */ chrome::mojom::ImageFormat::PNG));
EXPECT_TRUE(
NeedsEncodeImage(/* image_extension */ ".bmp",
/* image_format */ chrome::mojom::ImageFormat::PNG));
}
TEST_F(ChromeRenderFrameObserverTest, NeedsEncodeImage_OriginalFormat) {
EXPECT_FALSE(NeedsEncodeImage(
/* image_extension */ ".png",
/* image_format */ chrome::mojom::ImageFormat::ORIGINAL));
EXPECT_FALSE(NeedsEncodeImage(
/* image_extension */ ".jpg",
/* image_format */ chrome::mojom::ImageFormat::ORIGINAL));
EXPECT_FALSE(NeedsEncodeImage(
/* image_extension */ ".gif",
/* image_format */ chrome::mojom::ImageFormat::ORIGINAL));
EXPECT_TRUE(NeedsEncodeImage(
/* image_extension */ ".bmp",
/* image_format */ chrome::mojom::ImageFormat::ORIGINAL));
}