blob: 8a42ac9cf5fa6a44cd48c50254e5185b63274979 [file] [log] [blame]
Avi Drissman4e1b7bc32022-09-15 14:03:501// Copyright 2011 The Chromium Authors
[email protected]0f083402011-11-22 02:59:012// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
Nasko Oskovee48dfb42024-06-08 05:13:065
[email protected]5c9250872012-01-30 17:24:056#include "content/browser/host_zoom_map_impl.h"
[email protected]0f083402011-11-22 02:59:017
avib7348942015-12-25 20:57:108#include <stddef.h>
9
Arthur Sonzognid5ce01f72024-12-13 13:35:2810#include <array>
11
[email protected]0f083402011-11-22 02:59:0112#include "base/memory/ref_counted.h"
Christian Dullwebercc736c12017-09-04 09:27:5013#include "base/test/simple_test_clock.h"
Gabriel Charettec7108742019-08-23 03:31:4014#include "content/public/test/browser_task_environment.h"
[email protected]0f083402011-11-22 02:59:0115#include "testing/gtest/include/gtest/gtest.h"
16
[email protected]46488322012-10-30 03:22:2017namespace content {
18
[email protected]0f083402011-11-22 02:59:0119class HostZoomMapTest : public testing::Test {
20 public:
Francois Doray1d716a972018-12-05 21:08:4321 HostZoomMapTest() = default;
[email protected]0f083402011-11-22 02:59:0122
Francois Doray1d716a972018-12-05 21:08:4323 private:
Gabriel Charette798fde72019-08-20 22:24:0424 BrowserTaskEnvironment task_environment_;
[email protected]0f083402011-11-22 02:59:0125};
26
27TEST_F(HostZoomMapTest, GetSetZoomLevel) {
[email protected]5fe3713a2012-02-22 08:31:5628 HostZoomMapImpl host_zoom_map;
[email protected]0f083402011-11-22 02:59:0129
30 double zoomed = 2.5;
[email protected]367c5c1d2013-03-11 18:59:0231 host_zoom_map.SetZoomLevelForHost("zoomed.com", zoomed);
[email protected]0f083402011-11-22 02:59:0132
[email protected]367c5c1d2013-03-11 18:59:0233 EXPECT_DOUBLE_EQ(0,
34 host_zoom_map.GetZoomLevelForHostAndScheme("http", "normal.com"));
35 EXPECT_DOUBLE_EQ(zoomed,
36 host_zoom_map.GetZoomLevelForHostAndScheme("http", "zoomed.com"));
37}
38
39TEST_F(HostZoomMapTest, GetSetZoomLevelWithScheme) {
40 HostZoomMapImpl host_zoom_map;
41
42 double zoomed = 2.5;
43 double default_zoom = 1.5;
44
45 host_zoom_map.SetZoomLevelForHostAndScheme("chrome", "login", 0);
46
47 host_zoom_map.SetDefaultZoomLevel(default_zoom);
48
49 EXPECT_DOUBLE_EQ(0,
50 host_zoom_map.GetZoomLevelForHostAndScheme("chrome", "login"));
51 EXPECT_DOUBLE_EQ(default_zoom,
52 host_zoom_map.GetZoomLevelForHostAndScheme("http", "login"));
53
54 host_zoom_map.SetZoomLevelForHost("login", zoomed);
55
56 EXPECT_DOUBLE_EQ(0,
57 host_zoom_map.GetZoomLevelForHostAndScheme("chrome", "login"));
58 EXPECT_DOUBLE_EQ(zoomed,
59 host_zoom_map.GetZoomLevelForHostAndScheme("http", "login"));
[email protected]0f083402011-11-22 02:59:0160}
[email protected]46488322012-10-30 03:22:2061
[email protected]0f374052014-03-18 20:37:2262TEST_F(HostZoomMapTest, GetAllZoomLevels) {
63 HostZoomMapImpl host_zoom_map;
64
65 double zoomed = 2.5;
66 host_zoom_map.SetZoomLevelForHost("zoomed.com", zoomed);
67 host_zoom_map.SetZoomLevelForHostAndScheme("https", "zoomed.com", zoomed);
68 host_zoom_map.SetZoomLevelForHostAndScheme("chrome", "login", zoomed);
69
70 HostZoomMap::ZoomLevelVector levels = host_zoom_map.GetAllZoomLevels();
Arthur Sonzognid5ce01f72024-12-13 13:35:2871 auto expected = std::to_array<HostZoomMap::ZoomLevelChange>({
[email protected]0f374052014-03-18 20:37:2272 {HostZoomMap::ZOOM_CHANGED_FOR_HOST, "zoomed.com", std::string(), zoomed},
73 {HostZoomMap::ZOOM_CHANGED_FOR_SCHEME_AND_HOST, "login", "chrome",
74 zoomed},
75 {HostZoomMap::ZOOM_CHANGED_FOR_SCHEME_AND_HOST, "zoomed.com", "https",
Arthur Sonzognid5ce01f72024-12-13 13:35:2876 zoomed},
77 });
Daniel Chengad44af2f2022-02-26 18:07:5478 ASSERT_EQ(std::size(expected), levels.size());
79 for (size_t i = 0; i < std::size(expected); ++i) {
[email protected]0f374052014-03-18 20:37:2280 SCOPED_TRACE(testing::Message() << "levels[" << i << "]");
81 EXPECT_EQ(expected[i].mode, levels[i].mode);
82 EXPECT_EQ(expected[i].scheme, levels[i].scheme);
83 EXPECT_EQ(expected[i].host, levels[i].host);
84 EXPECT_EQ(expected[i].zoom_level, levels[i].zoom_level);
Christian Dullwebercc736c12017-09-04 09:27:5085 EXPECT_EQ(expected[i].last_modified, base::Time());
[email protected]0f374052014-03-18 20:37:2286 }
87}
88
Christian Dullwebercc736c12017-09-04 09:27:5089TEST_F(HostZoomMapTest, LastModifiedTimestamp) {
90 HostZoomMapImpl host_zoom_map;
Christian Dullwebercc736c12017-09-04 09:27:5091 base::Time now = base::Time::Now();
tzik67025f672017-11-29 05:04:4492 base::SimpleTestClock test_clock;
93 host_zoom_map.SetClockForTesting(&test_clock);
Christian Dullwebercc736c12017-09-04 09:27:5094
tzik67025f672017-11-29 05:04:4495 test_clock.SetNow(now);
Christian Dullwebercc736c12017-09-04 09:27:5096 host_zoom_map.SetZoomLevelForHost("zoomed.com", 1.5);
97 host_zoom_map.SetZoomLevelForHost("zoomed2.com", 2.0);
98
Peter Kastinge5a38ed2021-10-02 03:06:3599 base::Time later = now + base::Seconds(1);
tzik67025f672017-11-29 05:04:44100 test_clock.SetNow(later);
Christian Dullwebercc736c12017-09-04 09:27:50101 host_zoom_map.SetZoomLevelForHost("zoomed2.com", 2.5);
102 host_zoom_map.SetZoomLevelForHost("zoomzoom.com", 3);
103 host_zoom_map.SetZoomLevelForHostAndScheme("chrome", "login", 3);
104
105 HostZoomMap::ZoomLevelVector levels = host_zoom_map.GetAllZoomLevels();
106 std::string scheme;
Arthur Sonzognid5ce01f72024-12-13 13:35:28107 auto expected = std::to_array<HostZoomMap::ZoomLevelChange>({
Christian Dullwebercc736c12017-09-04 09:27:50108 {HostZoomMap::ZOOM_CHANGED_FOR_HOST, "zoomed.com", scheme, 1.5, now},
109 {HostZoomMap::ZOOM_CHANGED_FOR_HOST, "zoomed2.com", scheme, 2.5, later},
110 {HostZoomMap::ZOOM_CHANGED_FOR_HOST, "zoomzoom.com", scheme, 3.0, later},
111 {HostZoomMap::ZOOM_CHANGED_FOR_SCHEME_AND_HOST, "login", "chrome", 3.0,
112 base::Time()},
Arthur Sonzognid5ce01f72024-12-13 13:35:28113 });
Daniel Chengad44af2f2022-02-26 18:07:54114 ASSERT_EQ(std::size(expected), levels.size());
115 for (size_t i = 0; i < std::size(expected); ++i) {
Christian Dullwebercc736c12017-09-04 09:27:50116 SCOPED_TRACE(testing::Message() << "levels[" << i << "]");
117 EXPECT_EQ(expected[i].mode, levels[i].mode);
118 EXPECT_EQ(expected[i].scheme, levels[i].scheme);
119 EXPECT_EQ(expected[i].host, levels[i].host);
120 EXPECT_EQ(expected[i].zoom_level, levels[i].zoom_level);
121 EXPECT_EQ(expected[i].last_modified, levels[i].last_modified);
122 }
123}
124
125TEST_F(HostZoomMapTest, ClearZoomLevels) {
126 HostZoomMapImpl host_zoom_map;
tzik67025f672017-11-29 05:04:44127 base::SimpleTestClock test_clock;
128 host_zoom_map.SetClockForTesting(&test_clock);
Christian Dullwebercc736c12017-09-04 09:27:50129
130 base::Time now = base::Time::Now();
Peter Kastinge5a38ed2021-10-02 03:06:35131 test_clock.SetNow(now - base::Hours(3));
Christian Dullwebercc736c12017-09-04 09:27:50132 host_zoom_map.SetZoomLevelForHost("zoomzoom.com", 3.5);
Peter Kastinge5a38ed2021-10-02 03:06:35133 test_clock.SetNow(now - base::Hours(1));
Christian Dullwebercc736c12017-09-04 09:27:50134 host_zoom_map.SetZoomLevelForHost("zoom.com", 1.5);
Peter Kastinge5a38ed2021-10-02 03:06:35135 test_clock.SetNow(now - base::Days(31));
Sarath Singapati0156b672018-04-05 09:37:00136 host_zoom_map.SetZoomLevelForHost("zoom2.com", 2.5);
137 EXPECT_EQ(3u, host_zoom_map.GetAllZoomLevels().size());
Christian Dullwebercc736c12017-09-04 09:27:50138
Peter Kastinge5a38ed2021-10-02 03:06:35139 host_zoom_map.ClearZoomLevels(now - base::Hours(2), base::Time::Max());
Sarath Singapati0156b672018-04-05 09:37:00140 ASSERT_EQ(2u, host_zoom_map.GetAllZoomLevels().size());
141 EXPECT_EQ("zoom2.com", host_zoom_map.GetAllZoomLevels()[0].host);
142 EXPECT_EQ("zoomzoom.com", host_zoom_map.GetAllZoomLevels()[1].host);
143
Peter Kastinge5a38ed2021-10-02 03:06:35144 host_zoom_map.ClearZoomLevels(base::Time(), now - base::Days(30));
Sarath Singapati0156b672018-04-05 09:37:00145 ASSERT_EQ(1u, host_zoom_map.GetAllZoomLevels().size());
Christian Dullwebercc736c12017-09-04 09:27:50146 EXPECT_EQ("zoomzoom.com", host_zoom_map.GetAllZoomLevels()[0].host);
147
148 host_zoom_map.ClearZoomLevels(base::Time(), base::Time::Max());
149 EXPECT_EQ(0u, host_zoom_map.GetAllZoomLevels().size());
150
151 // Host and scheme settings should not be affected.
152 host_zoom_map.SetZoomLevelForHostAndScheme("chrome", "login", 3);
153 host_zoom_map.ClearZoomLevels(base::Time(), base::Time::Max());
154 EXPECT_EQ(1u, host_zoom_map.GetAllZoomLevels().size());
155}
156
[email protected]46488322012-10-30 03:22:20157} // namespace content