15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2011 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/browser/host_zoom_map_impl.h"
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/memory/ref_counted.h"
89ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch#include "base/message_loop/message_loop.h"
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/browser_thread.h"
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/test/test_browser_thread.h"
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h"
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace content {
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class HostZoomMapTest : public testing::Test {
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public:
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  HostZoomMapTest() : ui_thread_(BrowserThread::UI, &message_loop_) {
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected:
21c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  base::MessageLoop message_loop_;
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  TestBrowserThread ui_thread_;
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(HostZoomMapTest, GetSetZoomLevel) {
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  HostZoomMapImpl host_zoom_map;
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  double zoomed = 2.5;
292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  host_zoom_map.SetZoomLevelForHost("zoomed.com", zoomed);
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  EXPECT_DOUBLE_EQ(0,
322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      host_zoom_map.GetZoomLevelForHostAndScheme("http", "normal.com"));
332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  EXPECT_DOUBLE_EQ(zoomed,
342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      host_zoom_map.GetZoomLevelForHostAndScheme("http", "zoomed.com"));
352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)TEST_F(HostZoomMapTest, GetSetZoomLevelWithScheme) {
382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  HostZoomMapImpl host_zoom_map;
392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  double zoomed = 2.5;
412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  double default_zoom = 1.5;
422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  host_zoom_map.SetZoomLevelForHostAndScheme("chrome", "login", 0);
442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  host_zoom_map.SetDefaultZoomLevel(default_zoom);
462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  EXPECT_DOUBLE_EQ(0,
482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      host_zoom_map.GetZoomLevelForHostAndScheme("chrome", "login"));
492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  EXPECT_DOUBLE_EQ(default_zoom,
502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      host_zoom_map.GetZoomLevelForHostAndScheme("http", "login"));
512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  host_zoom_map.SetZoomLevelForHost("login", zoomed);
532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  EXPECT_DOUBLE_EQ(0,
552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      host_zoom_map.GetZoomLevelForHostAndScheme("chrome", "login"));
562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  EXPECT_DOUBLE_EQ(zoomed,
572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      host_zoom_map.GetZoomLevelForHostAndScheme("http", "login"));
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)TEST_F(HostZoomMapTest, GetAllZoomLevels) {
6123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  HostZoomMapImpl host_zoom_map;
6223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
6323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  double zoomed = 2.5;
6423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  host_zoom_map.SetZoomLevelForHost("zoomed.com", zoomed);
6523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  host_zoom_map.SetZoomLevelForHostAndScheme("https", "zoomed.com", zoomed);
6623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  host_zoom_map.SetZoomLevelForHostAndScheme("chrome", "login", zoomed);
6723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
6823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  HostZoomMap::ZoomLevelVector levels = host_zoom_map.GetAllZoomLevels();
6923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  HostZoomMap::ZoomLevelChange expected[] = {
7023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)      {HostZoomMap::ZOOM_CHANGED_FOR_HOST, "zoomed.com", std::string(), zoomed},
7123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)      {HostZoomMap::ZOOM_CHANGED_FOR_SCHEME_AND_HOST, "login", "chrome",
7223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)       zoomed},
7323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)      {HostZoomMap::ZOOM_CHANGED_FOR_SCHEME_AND_HOST, "zoomed.com", "https",
7423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)       zoomed}, };
7523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  ASSERT_EQ(arraysize(expected), levels.size());
7623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  for (size_t i = 0; i < arraysize(expected); ++i) {
7723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)    SCOPED_TRACE(testing::Message() << "levels[" << i << "]");
7823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)    EXPECT_EQ(expected[i].mode, levels[i].mode);
7923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)    EXPECT_EQ(expected[i].scheme, levels[i].scheme);
8023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)    EXPECT_EQ(expected[i].host, levels[i].host);
8123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)    EXPECT_EQ(expected[i].zoom_level, levels[i].zoom_level);
8223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)  }
8323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)}
8423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace content
86