blob: f5ca835ae6e47f3f8fa69611e0070096e13be231 [file] [log] [blame]
Menard, Alexis91b2a322024-02-23 21:41:111// Copyright 2024 The Chromium Authors
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include "content/browser/renderer_host/display_feature.h"
6
7#include <vector>
8
9#include "testing/gtest/include/gtest/gtest.h"
10#include "ui/gfx/geometry/rect.h"
11
12namespace content {
13
14class DisplayFeatureTest : public testing::Test {};
15
16TEST_F(DisplayFeatureTest, ViewportSegmentsWithEmptyTopBrowserControls) {
17 DisplayFeature::ParamErrorEnum error;
18 std::optional<DisplayFeature> feature = DisplayFeature::Create(
19 DisplayFeature::Orientation::kHorizontal, /*offset*/ 200,
20 /*mask_length*/ 0, /*screen_width*/ 400,
21 /*screen_height*/ 400, &error);
22 EXPECT_TRUE(feature);
Alexis Menardfb62ecc2024-02-26 21:25:1923 std::vector<gfx::Rect> segments = feature->ComputeViewportSegments(
Menard, Alexis91b2a322024-02-23 21:41:1124 gfx::Size(400, 400), /*top_controls_height*/ 0);
25 EXPECT_EQ(segments.size(), 2u);
26 EXPECT_EQ(gfx::Rect(0, 0, 400, 200), segments[0]);
27 EXPECT_EQ(gfx::Rect(0, 200, 400, 200), segments[1]);
28
29 feature->orientation = DisplayFeature::Orientation::kVertical;
Alexis Menardfb62ecc2024-02-26 21:25:1930 segments = feature->ComputeViewportSegments(gfx::Size(400, 400),
31 /*top_controls_height*/ 0);
Menard, Alexis91b2a322024-02-23 21:41:1132 EXPECT_EQ(gfx::Rect(0, 0, 200, 400), segments[0]);
33 EXPECT_EQ(gfx::Rect(200, 0, 200, 400), segments[1]);
34}
35
36TEST_F(DisplayFeatureTest, ViewportSegmentsWithTopBrowserControls) {
37 DisplayFeature::ParamErrorEnum error;
38 std::optional<DisplayFeature> feature = DisplayFeature::Create(
39 DisplayFeature::Orientation::kHorizontal, /*offset*/ 200,
40 /*mask_length*/ 0, /*screen_width*/ 400,
41 /*screen_height*/ 400, &error);
42 EXPECT_TRUE(feature);
Alexis Menardfb62ecc2024-02-26 21:25:1943 std::vector<gfx::Rect> segments = feature->ComputeViewportSegments(
Menard, Alexis91b2a322024-02-23 21:41:1144 gfx::Size(400, 400), /*top_controls_height*/ 100);
45 EXPECT_EQ(segments.size(), 2u);
46 EXPECT_EQ(gfx::Rect(0, 0, 400, 100), segments[0]);
47 EXPECT_EQ(gfx::Rect(0, 100, 400, 300), segments[1]);
48
49 feature->orientation = DisplayFeature::Orientation::kVertical;
Alexis Menardfb62ecc2024-02-26 21:25:1950 segments = feature->ComputeViewportSegments(gfx::Size(400, 400),
51 /*top_controls_height*/ 100);
Menard, Alexis91b2a322024-02-23 21:41:1152 EXPECT_EQ(gfx::Rect(0, 0, 200, 400), segments[0]);
53 EXPECT_EQ(gfx::Rect(200, 0, 200, 400), segments[1]);
54}
55
56TEST_F(DisplayFeatureTest, ViewportSegmentsWithTooBigBrowserControls) {
57 DisplayFeature::ParamErrorEnum error;
58 std::optional<DisplayFeature> feature = DisplayFeature::Create(
59 DisplayFeature::Orientation::kHorizontal, /*offset*/ 200,
60 /*mask_length*/ 0, /*screen_width*/ 400,
61 /*screen_height*/ 400, &error);
62 EXPECT_TRUE(feature);
Alexis Menardfb62ecc2024-02-26 21:25:1963 std::vector<gfx::Rect> segments = feature->ComputeViewportSegments(
Menard, Alexis91b2a322024-02-23 21:41:1164 gfx::Size(400, 400), /*top_controls_height*/ 400);
65 EXPECT_TRUE(segments.empty());
66
67 feature->orientation = DisplayFeature::Orientation::kVertical;
Alexis Menardfb62ecc2024-02-26 21:25:1968 segments = feature->ComputeViewportSegments(gfx::Size(400, 400),
69 /*top_controls_height*/ 400);
Menard, Alexis91b2a322024-02-23 21:41:1170 EXPECT_EQ(gfx::Rect(0, 0, 200, 400), segments[0]);
71 EXPECT_EQ(gfx::Rect(200, 0, 200, 400), segments[1]);
72}
73
74} // namespace content