diff --git a/components/BUILD.gn b/components/BUILD.gn index 1eff458e07f1a..1ead879e0d4ca 100644 --- a/components/BUILD.gn +++ b/components/BUILD.gn @@ -708,6 +708,7 @@ test("components_unittests") { if (!is_android && !is_ios) { deps += [ "//components/access_code_cast/common:unit_tests", + "//components/headless/screen_info:unit_tests", "//components/live_caption:unit_tests", "//components/soda:unit_tests", "//components/storage_monitor:unit_tests", diff --git a/components/headless/screen_info/BUILD.gn b/components/headless/screen_info/BUILD.gn new file mode 100644 index 0000000000000..0c26ab4bb700a --- /dev/null +++ b/components/headless/screen_info/BUILD.gn @@ -0,0 +1,29 @@ +# Copyright 2025 The Chromium Authors +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +source_set("screen_info") { + sources = [ + "headless_screen_info.cc", + "headless_screen_info.h", + ] + + deps = [ + "//base", + "//third_party/re2", + "//ui/display", + "//ui/gfx/geometry/", + ] +} + +source_set("unit_tests") { + testonly = true + sources = [ "headless_screen_info_unittest.cc" ] + + deps = [ + ":screen_info", + "//base/test:test_support", + "//testing/gmock", + "//testing/gtest", + ] +} diff --git a/components/headless/screen_info/DEPS b/components/headless/screen_info/DEPS new file mode 100644 index 0000000000000..4f93239061566 --- /dev/null +++ b/components/headless/screen_info/DEPS @@ -0,0 +1,6 @@ +include_rules = [ + "+base", + "+third_party/re2/src/re2/re2.h", + "+ui/display", + "+ui/gfx/geometry", +] diff --git a/headless/lib/browser/headless_screen_info.cc b/components/headless/screen_info/headless_screen_info.cc similarity index 99% rename from headless/lib/browser/headless_screen_info.cc rename to components/headless/screen_info/headless_screen_info.cc index ee63695bdcc65..5148c0fb9f9f8 100644 --- a/headless/lib/browser/headless_screen_info.cc +++ b/components/headless/screen_info/headless_screen_info.cc @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "headless/lib/browser/headless_screen_info.h" +#include "components/headless/screen_info/headless_screen_info.h" #include <optional> diff --git a/headless/lib/browser/headless_screen_info.h b/components/headless/screen_info/headless_screen_info.h similarity index 86% rename from headless/lib/browser/headless_screen_info.h rename to components/headless/screen_info/headless_screen_info.h index 043034ce2ff09..4de34f50653ed 100644 --- a/headless/lib/browser/headless_screen_info.h +++ b/components/headless/screen_info/headless_screen_info.h @@ -2,21 +2,20 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef HEADLESS_LIB_BROWSER_HEADLESS_SCREEN_INFO_H_ -#define HEADLESS_LIB_BROWSER_HEADLESS_SCREEN_INFO_H_ +#ifndef COMPONENTS_HEADLESS_SCREEN_INFO_HEADLESS_SCREEN_INFO_H_ +#define COMPONENTS_HEADLESS_SCREEN_INFO_HEADLESS_SCREEN_INFO_H_ #include <string> #include <string_view> #include <vector> #include "base/types/expected.h" -#include "headless/public/headless_export.h" #include "ui/gfx/geometry/insets.h" #include "ui/gfx/geometry/rect.h" namespace headless { -struct HEADLESS_EXPORT HeadlessScreenInfo { +struct HeadlessScreenInfo { gfx::Rect bounds = gfx::Rect(800, 600); gfx::Insets work_area_insets; int color_depth = 24; @@ -62,4 +61,4 @@ struct HEADLESS_EXPORT HeadlessScreenInfo { } // namespace headless -#endif // HEADLESS_LIB_BROWSER_HEADLESS_SCREEN_INFO_H_ +#endif // COMPONENTS_HEADLESS_SCREEN_INFO_HEADLESS_SCREEN_INFO_H_ diff --git a/headless/lib/browser/headless_screen_info_unittest.cc b/components/headless/screen_info/headless_screen_info_unittest.cc similarity index 95% rename from headless/lib/browser/headless_screen_info_unittest.cc rename to components/headless/screen_info/headless_screen_info_unittest.cc index f96443912e2b7..7f567f25e1460 100644 --- a/headless/lib/browser/headless_screen_info_unittest.cc +++ b/components/headless/screen_info/headless_screen_info_unittest.cc @@ -2,7 +2,7 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "headless/lib/browser/headless_screen_info.h" +#include "components/headless/screen_info/headless_screen_info.h" #include "testing/gmock/include/gmock/gmock.h" #include "testing/gtest/include/gtest/gtest.h" @@ -10,7 +10,7 @@ namespace headless { namespace { -TEST(ScreenInfoTest, Basic) { +TEST(HeadlessScreenInfoTest, Basic) { EXPECT_EQ(HeadlessScreenInfo::FromString(" \t ").error(), "Invalid screen info: \t "); @@ -30,7 +30,7 @@ TEST(ScreenInfoTest, Basic) { HeadlessScreenInfo({.bounds = gfx::Rect(0, 0, 800, 600)})); } -TEST(ScreenInfoTest, ScreenOrigin) { +TEST(HeadlessScreenInfoTest, ScreenOrigin) { EXPECT_EQ(HeadlessScreenInfo::FromString("{100,200}").value()[0], HeadlessScreenInfo({.bounds = gfx::Rect(100, 200, 800, 600)})); @@ -65,7 +65,7 @@ TEST(ScreenInfoTest, ScreenOrigin) { "Invalid screen info: 100+200"); } -TEST(ScreenInfoTest, ScreenSize) { +TEST(HeadlessScreenInfoTest, ScreenSize) { EXPECT_EQ(HeadlessScreenInfo::FromString("{100x200}").value()[0], HeadlessScreenInfo({.bounds = gfx::Rect(100, 200)})); @@ -91,7 +91,7 @@ TEST(ScreenInfoTest, ScreenSize) { "Invalid screen info: 100 200"); } -TEST(ScreenInfoTest, ScreenParameters) { +TEST(HeadlessScreenInfoTest, ScreenParameters) { EXPECT_EQ(HeadlessScreenInfo::FromString("{xyz =}").error(), "Invalid screen info: xyz ="); @@ -123,7 +123,7 @@ TEST(ScreenInfoTest, ScreenParameters) { "Unknown screen info parameter: xyz"); } -TEST(ScreenInfoTest, ScreenColorDepth) { +TEST(HeadlessScreenInfoTest, ScreenColorDepth) { EXPECT_EQ(HeadlessScreenInfo::FromString("{ colorDepth=16 }").value()[0], HeadlessScreenInfo({.color_depth = 16})); @@ -140,7 +140,7 @@ TEST(ScreenInfoTest, ScreenColorDepth) { "Invalid screen color depth: 24x"); } -TEST(ScreenInfoTest, ScreenDevicePixelRatio) { +TEST(HeadlessScreenInfoTest, ScreenDevicePixelRatio) { EXPECT_EQ( HeadlessScreenInfo::FromString("{ devicePixelRatio=0.5}").value()[0], HeadlessScreenInfo({.device_pixel_ratio = 0.5f})); @@ -161,7 +161,7 @@ TEST(ScreenInfoTest, ScreenDevicePixelRatio) { "Invalid screen device pixel ratio: 1.0x"); } -TEST(ScreenInfoTest, ScreenIsInternal) { +TEST(HeadlessScreenInfoTest, ScreenIsInternal) { EXPECT_EQ(HeadlessScreenInfo::FromString("{ isInternal=1 }").value()[0], HeadlessScreenInfo({.is_internal = true})); @@ -181,7 +181,7 @@ TEST(ScreenInfoTest, ScreenIsInternal) { "Invalid screen is internal: xyz"); } -TEST(ScreenInfoTest, ScreenLabel) { +TEST(HeadlessScreenInfoTest, ScreenLabel) { EXPECT_EQ(HeadlessScreenInfo::FromString("{ label=xyz}").value()[0], HeadlessScreenInfo({.label = "xyz"})); @@ -211,7 +211,7 @@ TEST(ScreenInfoTest, ScreenLabel) { "Invalid screen info: '\\'quoted\\'"); } -TEST(ScreenInfoTest, MultipleScreens) { +TEST(HeadlessScreenInfoTest, MultipleScreens) { // Explicit screen origin results in overlapped screens. EXPECT_THAT(HeadlessScreenInfo::FromString("{}{0,0 600x800}").value(), testing::ElementsAre( @@ -263,7 +263,7 @@ TEST(ScreenInfoTest, MultipleScreens) { "Invalid screen info: }"); } -TEST(ScreenInfoTest, WorkArea) { +TEST(HeadlessScreenInfoTest, WorkArea) { EXPECT_EQ(HeadlessScreenInfo::FromString("{ workAreaLeft=100 }").value()[0], HeadlessScreenInfo( {.work_area_insets = gfx::Insets::TLBR(0, 100, 0, 0)})); @@ -314,7 +314,7 @@ TEST(ScreenInfoTest, WorkArea) { "Invalid work area inset: -42"); } -TEST(ScreenInfoTest, Rotation) { +TEST(HeadlessScreenInfoTest, Rotation) { EXPECT_EQ(HeadlessScreenInfo::FromString("{ rotation=0 }").value()[0], HeadlessScreenInfo({.rotation = 0})); diff --git a/headless/BUILD.gn b/headless/BUILD.gn index d0a84a0126fbd..2e84dd88cca94 100644 --- a/headless/BUILD.gn +++ b/headless/BUILD.gn @@ -265,8 +265,6 @@ component("headless_non_renderer") { "lib/browser/headless_request_context_manager.h", "lib/browser/headless_screen.cc", "lib/browser/headless_screen.h", - "lib/browser/headless_screen_info.cc", - "lib/browser/headless_screen_info.h", "lib/browser/headless_screen_orientation_delegate.cc", "lib/browser/headless_screen_orientation_delegate.h", "lib/browser/headless_web_contents_impl.cc", @@ -365,6 +363,7 @@ component("headless_non_renderer") { "//components/embedder_support/origin_trials", "//components/headless/clipboard", "//components/headless/command_handler:switches", + "//components/headless/screen_info", "//components/headless/select_file_dialog", "//components/keyed_service/content", "//components/origin_trials:browser", @@ -560,7 +559,6 @@ test("headless_unittests") { sources = [ "lib/browser/headless_browser_impl_unittest.cc", "lib/browser/headless_client_hints_controller_delegate_unittest.cc", - "lib/browser/headless_screen_info_unittest.cc", "lib/renderer/allowlist_unittest.cc", ] diff --git a/headless/lib/browser/DEPS b/headless/lib/browser/DEPS index 84d0345883c14..9a4b17baea1d9 100644 --- a/headless/lib/browser/DEPS +++ b/headless/lib/browser/DEPS @@ -71,8 +71,5 @@ specific_include_rules = { "+components/prefs", "+components/metrics", "+components/variations", - ], - "headless_screen_info.cc": [ - "+third_party/re2/src/re2/re2.h", ] } diff --git a/headless/lib/browser/command_line_handler.cc b/headless/lib/browser/command_line_handler.cc index 471d77fc76260..93ea6c65c814f 100644 --- a/headless/lib/browser/command_line_handler.cc +++ b/headless/lib/browser/command_line_handler.cc @@ -17,9 +17,9 @@ #include "base/strings/string_number_conversions.h" #include "build/build_config.h" #include "cc/base/switches.h" +#include "components/headless/screen_info/headless_screen_info.h" #include "components/viz/common/switches.h" #include "content/public/common/content_switches.h" -#include "headless/lib/browser/headless_screen_info.h" #include "headless/public/switches.h" #include "net/http/http_util.h" #include "net/proxy_resolution/proxy_config.h" diff --git a/headless/lib/browser/headless_screen.cc b/headless/lib/browser/headless_screen.cc index 72473485d3ef1..2c693bf2a5e8f 100644 --- a/headless/lib/browser/headless_screen.cc +++ b/headless/lib/browser/headless_screen.cc @@ -6,7 +6,7 @@ #include "base/check_deref.h" #include "base/containers/flat_set.h" -#include "headless/lib/browser/headless_screen_info.h" +#include "components/headless/screen_info/headless_screen_info.h" #include "ui/display/display_finder.h" #include "ui/display/display_list.h" #include "ui/display/util/display_util.h"