1// 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
5#include "content/browser/host_zoom_map_impl.h"
6
7#include "base/memory/ref_counted.h"
8#include "base/message_loop/message_loop.h"
9#include "content/public/browser/browser_thread.h"
10#include "content/public/test/test_browser_thread.h"
11#include "testing/gtest/include/gtest/gtest.h"
12
13namespace content {
14
15class HostZoomMapTest : public testing::Test {
16 public:
17  HostZoomMapTest() : ui_thread_(BrowserThread::UI, &message_loop_) {
18  }
19
20 protected:
21  base::MessageLoop message_loop_;
22  TestBrowserThread ui_thread_;
23};
24
25TEST_F(HostZoomMapTest, GetSetZoomLevel) {
26  HostZoomMapImpl host_zoom_map;
27
28  double zoomed = 2.5;
29  host_zoom_map.SetZoomLevelForHost("zoomed.com", zoomed);
30
31  EXPECT_DOUBLE_EQ(0,
32      host_zoom_map.GetZoomLevelForHostAndScheme("http", "normal.com"));
33  EXPECT_DOUBLE_EQ(zoomed,
34      host_zoom_map.GetZoomLevelForHostAndScheme("http", "zoomed.com"));
35}
36
37TEST_F(HostZoomMapTest, GetSetZoomLevelWithScheme) {
38  HostZoomMapImpl host_zoom_map;
39
40  double zoomed = 2.5;
41  double default_zoom = 1.5;
42
43  host_zoom_map.SetZoomLevelForHostAndScheme("chrome", "login", 0);
44
45  host_zoom_map.SetDefaultZoomLevel(default_zoom);
46
47  EXPECT_DOUBLE_EQ(0,
48      host_zoom_map.GetZoomLevelForHostAndScheme("chrome", "login"));
49  EXPECT_DOUBLE_EQ(default_zoom,
50      host_zoom_map.GetZoomLevelForHostAndScheme("http", "login"));
51
52  host_zoom_map.SetZoomLevelForHost("login", zoomed);
53
54  EXPECT_DOUBLE_EQ(0,
55      host_zoom_map.GetZoomLevelForHostAndScheme("chrome", "login"));
56  EXPECT_DOUBLE_EQ(zoomed,
57      host_zoom_map.GetZoomLevelForHostAndScheme("http", "login"));
58}
59
60TEST_F(HostZoomMapTest, GetAllZoomLevels) {
61  HostZoomMapImpl host_zoom_map;
62
63  double zoomed = 2.5;
64  host_zoom_map.SetZoomLevelForHost("zoomed.com", zoomed);
65  host_zoom_map.SetZoomLevelForHostAndScheme("https", "zoomed.com", zoomed);
66  host_zoom_map.SetZoomLevelForHostAndScheme("chrome", "login", zoomed);
67
68  HostZoomMap::ZoomLevelVector levels = host_zoom_map.GetAllZoomLevels();
69  HostZoomMap::ZoomLevelChange expected[] = {
70      {HostZoomMap::ZOOM_CHANGED_FOR_HOST, "zoomed.com", std::string(), zoomed},
71      {HostZoomMap::ZOOM_CHANGED_FOR_SCHEME_AND_HOST, "login", "chrome",
72       zoomed},
73      {HostZoomMap::ZOOM_CHANGED_FOR_SCHEME_AND_HOST, "zoomed.com", "https",
74       zoomed}, };
75  ASSERT_EQ(arraysize(expected), levels.size());
76  for (size_t i = 0; i < arraysize(expected); ++i) {
77    SCOPED_TRACE(testing::Message() << "levels[" << i << "]");
78    EXPECT_EQ(expected[i].mode, levels[i].mode);
79    EXPECT_EQ(expected[i].scheme, levels[i].scheme);
80    EXPECT_EQ(expected[i].host, levels[i].host);
81    EXPECT_EQ(expected[i].zoom_level, levels[i].zoom_level);
82  }
83}
84
85}  // namespace content
86