blob: c66769201584aaaf8bb192edfb55766c52bbcdb8 [file] [log] [blame]
[email protected]0f083402011-11-22 02:59:011// Copyright (c) 2011 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
[email protected]5c9250872012-01-30 17:24:055#include "content/browser/host_zoom_map_impl.h"
[email protected]0f083402011-11-22 02:59:016
avib7348942015-12-25 20:57:107#include <stddef.h>
8
9#include "base/macros.h"
[email protected]0f083402011-11-22 02:59:0110#include "base/memory/ref_counted.h"
[email protected]95f861e2013-07-18 02:07:1711#include "base/message_loop/message_loop.h"
Christian Dullwebercc736c12017-09-04 09:27:5012#include "base/test/simple_test_clock.h"
[email protected]0f083402011-11-22 02:59:0113#include "content/public/browser/browser_thread.h"
[email protected]e97882f2012-06-04 02:23:1714#include "content/public/test/test_browser_thread.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:
[email protected]46488322012-10-30 03:22:2021 HostZoomMapTest() : ui_thread_(BrowserThread::UI, &message_loop_) {
[email protected]0f083402011-11-22 02:59:0122 }
23
24 protected:
[email protected]dd32b1272013-05-04 14:17:1125 base::MessageLoop message_loop_;
[email protected]46488322012-10-30 03:22:2026 TestBrowserThread ui_thread_;
[email protected]0f083402011-11-22 02:59:0127};
28
29TEST_F(HostZoomMapTest, GetSetZoomLevel) {
[email protected]5fe3713a2012-02-22 08:31:5630 HostZoomMapImpl host_zoom_map;
[email protected]0f083402011-11-22 02:59:0131
32 double zoomed = 2.5;
[email protected]367c5c1d2013-03-11 18:59:0233 host_zoom_map.SetZoomLevelForHost("zoomed.com", zoomed);
[email protected]0f083402011-11-22 02:59:0134
[email protected]367c5c1d2013-03-11 18:59:0235 EXPECT_DOUBLE_EQ(0,
36 host_zoom_map.GetZoomLevelForHostAndScheme("http", "normal.com"));
37 EXPECT_DOUBLE_EQ(zoomed,
38 host_zoom_map.GetZoomLevelForHostAndScheme("http", "zoomed.com"));
39}
40
41TEST_F(HostZoomMapTest, GetSetZoomLevelWithScheme) {
42 HostZoomMapImpl host_zoom_map;
43
44 double zoomed = 2.5;
45 double default_zoom = 1.5;
46
47 host_zoom_map.SetZoomLevelForHostAndScheme("chrome", "login", 0);
48
49 host_zoom_map.SetDefaultZoomLevel(default_zoom);
50
51 EXPECT_DOUBLE_EQ(0,
52 host_zoom_map.GetZoomLevelForHostAndScheme("chrome", "login"));
53 EXPECT_DOUBLE_EQ(default_zoom,
54 host_zoom_map.GetZoomLevelForHostAndScheme("http", "login"));
55
56 host_zoom_map.SetZoomLevelForHost("login", zoomed);
57
58 EXPECT_DOUBLE_EQ(0,
59 host_zoom_map.GetZoomLevelForHostAndScheme("chrome", "login"));
60 EXPECT_DOUBLE_EQ(zoomed,
61 host_zoom_map.GetZoomLevelForHostAndScheme("http", "login"));
[email protected]0f083402011-11-22 02:59:0162}
[email protected]46488322012-10-30 03:22:2063
[email protected]0f374052014-03-18 20:37:2264TEST_F(HostZoomMapTest, GetAllZoomLevels) {
65 HostZoomMapImpl host_zoom_map;
66
67 double zoomed = 2.5;
68 host_zoom_map.SetZoomLevelForHost("zoomed.com", zoomed);
69 host_zoom_map.SetZoomLevelForHostAndScheme("https", "zoomed.com", zoomed);
70 host_zoom_map.SetZoomLevelForHostAndScheme("chrome", "login", zoomed);
71
72 HostZoomMap::ZoomLevelVector levels = host_zoom_map.GetAllZoomLevels();
73 HostZoomMap::ZoomLevelChange expected[] = {
74 {HostZoomMap::ZOOM_CHANGED_FOR_HOST, "zoomed.com", std::string(), zoomed},
75 {HostZoomMap::ZOOM_CHANGED_FOR_SCHEME_AND_HOST, "login", "chrome",
76 zoomed},
77 {HostZoomMap::ZOOM_CHANGED_FOR_SCHEME_AND_HOST, "zoomed.com", "https",
78 zoomed}, };
79 ASSERT_EQ(arraysize(expected), levels.size());
80 for (size_t i = 0; i < arraysize(expected); ++i) {
81 SCOPED_TRACE(testing::Message() << "levels[" << i << "]");
82 EXPECT_EQ(expected[i].mode, levels[i].mode);
83 EXPECT_EQ(expected[i].scheme, levels[i].scheme);
84 EXPECT_EQ(expected[i].host, levels[i].host);
85 EXPECT_EQ(expected[i].zoom_level, levels[i].zoom_level);
Christian Dullwebercc736c12017-09-04 09:27:5086 EXPECT_EQ(expected[i].last_modified, base::Time());
[email protected]0f374052014-03-18 20:37:2287 }
88}
89
Christian Dullwebercc736c12017-09-04 09:27:5090TEST_F(HostZoomMapTest, LastModifiedTimestamp) {
91 HostZoomMapImpl host_zoom_map;
Christian Dullwebercc736c12017-09-04 09:27:5092 base::Time now = base::Time::Now();
tzik67025f672017-11-29 05:04:4493 base::SimpleTestClock test_clock;
94 host_zoom_map.SetClockForTesting(&test_clock);
Christian Dullwebercc736c12017-09-04 09:27:5095
tzik67025f672017-11-29 05:04:4496 test_clock.SetNow(now);
Christian Dullwebercc736c12017-09-04 09:27:5097 host_zoom_map.SetZoomLevelForHost("zoomed.com", 1.5);
98 host_zoom_map.SetZoomLevelForHost("zoomed2.com", 2.0);
99
100 base::Time later = now + base::TimeDelta::FromSeconds(1);
tzik67025f672017-11-29 05:04:44101 test_clock.SetNow(later);
Christian Dullwebercc736c12017-09-04 09:27:50102 host_zoom_map.SetZoomLevelForHost("zoomed2.com", 2.5);
103 host_zoom_map.SetZoomLevelForHost("zoomzoom.com", 3);
104 host_zoom_map.SetZoomLevelForHostAndScheme("chrome", "login", 3);
105
106 HostZoomMap::ZoomLevelVector levels = host_zoom_map.GetAllZoomLevels();
107 std::string scheme;
108 HostZoomMap::ZoomLevelChange expected[] = {
109 {HostZoomMap::ZOOM_CHANGED_FOR_HOST, "zoomed.com", scheme, 1.5, now},
110 {HostZoomMap::ZOOM_CHANGED_FOR_HOST, "zoomed2.com", scheme, 2.5, later},
111 {HostZoomMap::ZOOM_CHANGED_FOR_HOST, "zoomzoom.com", scheme, 3.0, later},
112 {HostZoomMap::ZOOM_CHANGED_FOR_SCHEME_AND_HOST, "login", "chrome", 3.0,
113 base::Time()},
114 };
115 ASSERT_EQ(arraysize(expected), levels.size());
116 for (size_t i = 0; i < arraysize(expected); ++i) {
117 SCOPED_TRACE(testing::Message() << "levels[" << i << "]");
118 EXPECT_EQ(expected[i].mode, levels[i].mode);
119 EXPECT_EQ(expected[i].scheme, levels[i].scheme);
120 EXPECT_EQ(expected[i].host, levels[i].host);
121 EXPECT_EQ(expected[i].zoom_level, levels[i].zoom_level);
122 EXPECT_EQ(expected[i].last_modified, levels[i].last_modified);
123 }
124}
125
126TEST_F(HostZoomMapTest, ClearZoomLevels) {
127 HostZoomMapImpl host_zoom_map;
tzik67025f672017-11-29 05:04:44128 base::SimpleTestClock test_clock;
129 host_zoom_map.SetClockForTesting(&test_clock);
Christian Dullwebercc736c12017-09-04 09:27:50130
131 base::Time now = base::Time::Now();
tzik67025f672017-11-29 05:04:44132 test_clock.SetNow(now - base::TimeDelta::FromHours(3));
Christian Dullwebercc736c12017-09-04 09:27:50133 host_zoom_map.SetZoomLevelForHost("zoomzoom.com", 3.5);
tzik67025f672017-11-29 05:04:44134 test_clock.SetNow(now - base::TimeDelta::FromHours(1));
Christian Dullwebercc736c12017-09-04 09:27:50135 host_zoom_map.SetZoomLevelForHost("zoom.com", 1.5);
Sarath Singapati0156b672018-04-05 09:37:00136 test_clock.SetNow(now - base::TimeDelta::FromDays(31));
137 host_zoom_map.SetZoomLevelForHost("zoom2.com", 2.5);
138 EXPECT_EQ(3u, host_zoom_map.GetAllZoomLevels().size());
Christian Dullwebercc736c12017-09-04 09:27:50139
140 host_zoom_map.ClearZoomLevels(now - base::TimeDelta::FromHours(2),
141 base::Time::Max());
Sarath Singapati0156b672018-04-05 09:37:00142 ASSERT_EQ(2u, host_zoom_map.GetAllZoomLevels().size());
143 EXPECT_EQ("zoom2.com", host_zoom_map.GetAllZoomLevels()[0].host);
144 EXPECT_EQ("zoomzoom.com", host_zoom_map.GetAllZoomLevels()[1].host);
145
146 host_zoom_map.ClearZoomLevels(base::Time(),
147 now - base::TimeDelta::FromDays(30));
148 ASSERT_EQ(1u, host_zoom_map.GetAllZoomLevels().size());
Christian Dullwebercc736c12017-09-04 09:27:50149 EXPECT_EQ("zoomzoom.com", host_zoom_map.GetAllZoomLevels()[0].host);
150
151 host_zoom_map.ClearZoomLevels(base::Time(), base::Time::Max());
152 EXPECT_EQ(0u, host_zoom_map.GetAllZoomLevels().size());
153
154 // Host and scheme settings should not be affected.
155 host_zoom_map.SetZoomLevelForHostAndScheme("chrome", "login", 3);
156 host_zoom_map.ClearZoomLevels(base::Time(), base::Time::Max());
157 EXPECT_EQ(1u, host_zoom_map.GetAllZoomLevels().size());
158}
159
[email protected]46488322012-10-30 03:22:20160} // namespace content