12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Copyright (c) 2013 The Chromium Authors. All rights reserved. 22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// found in the LICENSE file. 42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ash/magnifier/magnification_controller.h" 65d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 7c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "ash/magnifier/magnifier_constants.h" 82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ash/shell.h" 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ash/test/ash_test_base.h" 10868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "base/strings/stringprintf.h" 112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ui/aura/client/aura_constants.h" 12c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "ui/aura/env.h" 135c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "ui/aura/test/aura_test_utils.h" 1423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#include "ui/aura/window_tree_host.h" 155f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "ui/events/test/event_generator.h" 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ui/gfx/rect_conversions.h" 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ui/gfx/screen.h" 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace ash { 202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace { 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)const int kRootHeight = 600; 232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)const int kRootWidth = 800; 242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} // namespace 262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class MagnificationControllerTest: public test::AshTestBase { 282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public: 292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) MagnificationControllerTest() {} 302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual ~MagnificationControllerTest() {} 312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void SetUp() OVERRIDE { 332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) AshTestBase::SetUp(); 342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) UpdateDisplay(base::StringPrintf("%dx%d", kRootWidth, kRootHeight)); 352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 361e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) aura::Window* root = GetRootWindow(); 372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) gfx::Rect root_bounds(root->bounds()); 382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if defined(OS_WIN) 402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // RootWindow and Display can't resize on Windows Ash. 412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // http://crbug.com/165962 422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(kRootHeight, root_bounds.height()); 432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(kRootWidth, root_bounds.width()); 442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif 452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual void TearDown() OVERRIDE { 482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) AshTestBase::TearDown(); 492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) protected: 521e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) aura::Window* GetRootWindow() const { 532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return Shell::GetPrimaryRootWindow(); 542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 56c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) std::string GetHostMouseLocation() { 575c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu const gfx::Point& location = 585c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu aura::test::QueryLatestMousePositionRequestInHost( 595c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu GetRootWindow()->GetHost()); 605c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu return location.ToString(); 61c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 62c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 63c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ash::MagnificationController* GetMagnificationController() const { 642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return ash::Shell::GetInstance()->magnification_controller(); 652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 67c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) gfx::Rect GetViewport() const { 682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) gfx::RectF bounds(0, 0, kRootWidth, kRootHeight); 692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GetRootWindow()->layer()->transform().TransformRectReverse(&bounds); 702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return gfx::ToEnclosingRect(bounds); 712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 73c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) std::string CurrentPointOfInterest() const { 74c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return GetMagnificationController()-> 75c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GetPointOfInterestForTesting().ToString(); 76c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 77c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private: 792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(MagnificationControllerTest); 802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)TEST_F(MagnificationControllerTest, EnableAndDisable) { 832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Confirms the magnifier is disabled. 842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_TRUE(GetRootWindow()->layer()->transform().IsIdentity()); 852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(1.0f, GetMagnificationController()->GetScale()); 862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ("0,0 800x600", GetViewport().ToString()); 872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Enables magnifier. 892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GetMagnificationController()->SetEnabled(true); 902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_FALSE(GetRootWindow()->layer()->transform().IsIdentity()); 912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(2.0f, GetMagnificationController()->GetScale()); 922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ("200,150 400x300", GetViewport().ToString()); 932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Disables magnifier. 952a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GetMagnificationController()->SetEnabled(false); 962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_TRUE(GetRootWindow()->layer()->transform().IsIdentity()); 972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(1.0f, GetMagnificationController()->GetScale()); 982a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ("0,0 800x600", GetViewport().ToString()); 992a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Confirms the the scale can't be changed. 1012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GetMagnificationController()->SetScale(4.0f, false); 1022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_TRUE(GetRootWindow()->layer()->transform().IsIdentity()); 1032a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(1.0f, GetMagnificationController()->GetScale()); 1042a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ("0,0 800x600", GetViewport().ToString()); 1052a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)TEST_F(MagnificationControllerTest, MagnifyAndUnmagnify) { 1082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Enables magnifier and confirms the default scale is 2.0x. 1092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GetMagnificationController()->SetEnabled(true); 1102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_FALSE(GetRootWindow()->layer()->transform().IsIdentity()); 1112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(2.0f, GetMagnificationController()->GetScale()); 1122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ("200,150 400x300", GetViewport().ToString()); 113c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ("400,300", CurrentPointOfInterest()); 1142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Changes the scale. 1162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GetMagnificationController()->SetScale(4.0f, false); 1172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(4.0f, GetMagnificationController()->GetScale()); 1182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ("300,225 200x150", GetViewport().ToString()); 119c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ("400,300", CurrentPointOfInterest()); 1202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GetMagnificationController()->SetScale(1.0f, false); 1222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(1.0f, GetMagnificationController()->GetScale()); 1232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ("0,0 800x600", GetViewport().ToString()); 124c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ("400,300", CurrentPointOfInterest()); 1252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GetMagnificationController()->SetScale(3.0f, false); 1272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(3.0f, GetMagnificationController()->GetScale()); 128c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ("266,200 267x200", GetViewport().ToString()); 129c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ("400,300", CurrentPointOfInterest()); 1302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)TEST_F(MagnificationControllerTest, MoveWindow) { 1332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Enables magnifier and confirm the viewport is at center. 1342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GetMagnificationController()->SetEnabled(true); 1352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ(2.0f, GetMagnificationController()->GetScale()); 1362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ("200,150 400x300", GetViewport().ToString()); 1372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Move the viewport. 1392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GetMagnificationController()->MoveWindow(0, 0, false); 1402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ("0,0 400x300", GetViewport().ToString()); 1412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GetMagnificationController()->MoveWindow(200, 300, false); 1432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ("200,300 400x300", GetViewport().ToString()); 1442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GetMagnificationController()->MoveWindow(400, 0, false); 1462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ("400,0 400x300", GetViewport().ToString()); 1472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GetMagnificationController()->MoveWindow(400, 300, false); 1492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ("400,300 400x300", GetViewport().ToString()); 1502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Confirms that the viewport can't across the top-left border. 1522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GetMagnificationController()->MoveWindow(-100, 0, false); 1532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ("0,0 400x300", GetViewport().ToString()); 1542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GetMagnificationController()->MoveWindow(0, -100, false); 1562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ("0,0 400x300", GetViewport().ToString()); 1572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GetMagnificationController()->MoveWindow(-100, -100, false); 1592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ("0,0 400x300", GetViewport().ToString()); 1602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Confirms that the viewport can't across the bittom-right border. 1622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GetMagnificationController()->MoveWindow(800, 0, false); 1632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ("400,0 400x300", GetViewport().ToString()); 1642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GetMagnificationController()->MoveWindow(0, 400, false); 1662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ("0,300 400x300", GetViewport().ToString()); 1672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1682a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GetMagnificationController()->MoveWindow(200, 400, false); 1692a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ("200,300 400x300", GetViewport().ToString()); 1702a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) GetMagnificationController()->MoveWindow(1000, 1000, false); 1722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) EXPECT_EQ("400,300 400x300", GetViewport().ToString()); 1732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1742a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 175c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)TEST_F(MagnificationControllerTest, PointOfInterest) { 1765f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) ui::test::EventGenerator generator(Shell::GetPrimaryRootWindow()); 177b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) 178b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) generator.MoveMouseToInHost(gfx::Point(0, 0)); 179c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ("0,0", CurrentPointOfInterest()); 180c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 181b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) generator.MoveMouseToInHost(gfx::Point(799, 599)); 182c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ("799,599", CurrentPointOfInterest()); 183c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 184b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) generator.MoveMouseToInHost(gfx::Point(400, 300)); 185c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ("400,300", CurrentPointOfInterest()); 186c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 187c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GetMagnificationController()->SetEnabled(true); 188c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ("400,300", CurrentPointOfInterest()); 189c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 190b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) generator.MoveMouseToInHost(gfx::Point(500, 400)); 191c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ("450,350", CurrentPointOfInterest()); 192c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 193c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 194c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)TEST_F(MagnificationControllerTest, PanWindow2xLeftToRight) { 195c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const aura::Env* env = aura::Env::GetInstance(); 1965f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) ui::test::EventGenerator generator(Shell::GetPrimaryRootWindow()); 197c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 198b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) generator.MoveMouseToInHost(gfx::Point(0, 0)); 199c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ(1.f, GetMagnificationController()->GetScale()); 200c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ("0,0 800x600", GetViewport().ToString()); 201c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ("0,0", env->last_mouse_location().ToString()); 202c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 203c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Enables magnifier and confirm the viewport is at center. 204c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GetMagnificationController()->SetEnabled(true); 205c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ(2.0f, GetMagnificationController()->GetScale()); 206c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 207c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GetMagnificationController()->MoveWindow(0, 0, false); 208b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) generator.MoveMouseToInHost(gfx::Point(0, 0)); 209c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ("0,0", env->last_mouse_location().ToString()); 210c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ("0,0 400x300", GetViewport().ToString()); 211c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 212b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) generator.MoveMouseToInHost(gfx::Point(300, 150)); 213c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ("150,75", env->last_mouse_location().ToString()); 214c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ("0,0 400x300", GetViewport().ToString()); 215c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 216b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) generator.MoveMouseToInHost(gfx::Point(700, 150)); 217c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ("350,75", env->last_mouse_location().ToString()); 218c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ("0,0 400x300", GetViewport().ToString()); 219c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 220b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) generator.MoveMouseToInHost(gfx::Point(701, 150)); 221c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ("350,75", env->last_mouse_location().ToString()); 222c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ("0,0 400x300", GetViewport().ToString()); 223c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 224b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) generator.MoveMouseToInHost(gfx::Point(702, 150)); 225c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ("351,75", env->last_mouse_location().ToString()); 226c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ("1,0 400x300", GetViewport().ToString()); 227c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 228b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) generator.MoveMouseToInHost(gfx::Point(703, 150)); 229c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ("352,75", env->last_mouse_location().ToString()); 230c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ("2,0 400x300", GetViewport().ToString()); 231c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 232b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) generator.MoveMouseToInHost(gfx::Point(704, 150)); 233c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ("354,75", env->last_mouse_location().ToString()); 234c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ("4,0 400x300", GetViewport().ToString()); 235c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 236b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) generator.MoveMouseToInHost(gfx::Point(712, 150)); 237c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ("360,75", env->last_mouse_location().ToString()); 238c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ("10,0 400x300", GetViewport().ToString()); 239c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 240b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) generator.MoveMouseToInHost(gfx::Point(600, 150)); 241c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ("310,75", env->last_mouse_location().ToString()); 242c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ("10,0 400x300", GetViewport().ToString()); 243c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 244b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) generator.MoveMouseToInHost(gfx::Point(720, 150)); 245c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ("370,75", env->last_mouse_location().ToString()); 246c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ("20,0 400x300", GetViewport().ToString()); 247c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 248b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) generator.MoveMouseToInHost(gfx::Point(780, 150)); 249c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ("410,75", env->last_mouse_location().ToString()); 250c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ("410,75", CurrentPointOfInterest()); 251c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ("60,0 400x300", GetViewport().ToString()); 252c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 253b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) generator.MoveMouseToInHost(gfx::Point(799, 150)); 254c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ("459,75", env->last_mouse_location().ToString()); 255c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ("109,0 400x300", GetViewport().ToString()); 256c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 257b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) generator.MoveMouseToInHost(gfx::Point(702, 150)); 258c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ("460,75", env->last_mouse_location().ToString()); 259c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ("110,0 400x300", GetViewport().ToString()); 260c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 261b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) generator.MoveMouseToInHost(gfx::Point(780, 150)); 262c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ("500,75", env->last_mouse_location().ToString()); 263c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ("150,0 400x300", GetViewport().ToString()); 264c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 265b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) generator.MoveMouseToInHost(gfx::Point(780, 150)); 266c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ("540,75", env->last_mouse_location().ToString()); 267c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ("190,0 400x300", GetViewport().ToString()); 268c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 269b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) generator.MoveMouseToInHost(gfx::Point(780, 150)); 270c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ("580,75", env->last_mouse_location().ToString()); 271c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ("230,0 400x300", GetViewport().ToString()); 272c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 273b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) generator.MoveMouseToInHost(gfx::Point(780, 150)); 274c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ("620,75", env->last_mouse_location().ToString()); 275c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ("270,0 400x300", GetViewport().ToString()); 276c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 277b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) generator.MoveMouseToInHost(gfx::Point(780, 150)); 278c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ("660,75", env->last_mouse_location().ToString()); 279c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ("310,0 400x300", GetViewport().ToString()); 280c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 281b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) generator.MoveMouseToInHost(gfx::Point(780, 150)); 282c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ("700,75", env->last_mouse_location().ToString()); 283c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ("350,0 400x300", GetViewport().ToString()); 284c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 285b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) generator.MoveMouseToInHost(gfx::Point(780, 150)); 286c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ("740,75", env->last_mouse_location().ToString()); 287c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ("390,0 400x300", GetViewport().ToString()); 288c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 289b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) generator.MoveMouseToInHost(gfx::Point(780, 150)); 290c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ("780,75", env->last_mouse_location().ToString()); 291c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ("400,0 400x300", GetViewport().ToString()); 292c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 293b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) generator.MoveMouseToInHost(gfx::Point(799, 150)); 294c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ("799,75", env->last_mouse_location().ToString()); 295c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ("400,0 400x300", GetViewport().ToString()); 296c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 297c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 298c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)TEST_F(MagnificationControllerTest, PanWindow2xRightToLeft) { 299c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const aura::Env* env = aura::Env::GetInstance(); 3005f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) ui::test::EventGenerator generator(Shell::GetPrimaryRootWindow()); 301c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 302b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) generator.MoveMouseToInHost(gfx::Point(799, 300)); 303c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ(1.f, GetMagnificationController()->GetScale()); 304c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ("0,0 800x600", GetViewport().ToString()); 305c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ("799,300", env->last_mouse_location().ToString()); 306c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 307c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Enables magnifier and confirm the viewport is at center. 308c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GetMagnificationController()->SetEnabled(true); 309c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 310b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) generator.MoveMouseToInHost(gfx::Point(799, 300)); 311c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ("798,300", env->last_mouse_location().ToString()); 312c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ("400,150 400x300", GetViewport().ToString()); 313c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 314b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) generator.MoveMouseToInHost(gfx::Point(0, 300)); 315c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ("400,300", env->last_mouse_location().ToString()); 316c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ("350,150 400x300", GetViewport().ToString()); 317c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 318b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) generator.MoveMouseToInHost(gfx::Point(0, 300)); 319c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ("350,300", env->last_mouse_location().ToString()); 320c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ("300,150 400x300", GetViewport().ToString()); 321c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 322b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) generator.MoveMouseToInHost(gfx::Point(0, 300)); 323c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ("300,300", env->last_mouse_location().ToString()); 324c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ("250,150 400x300", GetViewport().ToString()); 325c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 326b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) generator.MoveMouseToInHost(gfx::Point(0, 300)); 327c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ("250,300", env->last_mouse_location().ToString()); 328c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ("200,150 400x300", GetViewport().ToString()); 329c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 330b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) generator.MoveMouseToInHost(gfx::Point(0, 300)); 331c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ("200,300", env->last_mouse_location().ToString()); 332c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ("150,150 400x300", GetViewport().ToString()); 333c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 334b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) generator.MoveMouseToInHost(gfx::Point(0, 300)); 335c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ("150,300", env->last_mouse_location().ToString()); 336c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ("100,150 400x300", GetViewport().ToString()); 337c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 338b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) generator.MoveMouseToInHost(gfx::Point(0, 300)); 339c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ("100,300", env->last_mouse_location().ToString()); 340c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ("50,150 400x300", GetViewport().ToString()); 341c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 342b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) generator.MoveMouseToInHost(gfx::Point(0, 300)); 343c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ("50,300", env->last_mouse_location().ToString()); 344c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ("0,150 400x300", GetViewport().ToString()); 345c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 346b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) generator.MoveMouseToInHost(gfx::Point(0, 300)); 347c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ("0,300", env->last_mouse_location().ToString()); 348c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ("0,150 400x300", GetViewport().ToString()); 349c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 350c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 351c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)TEST_F(MagnificationControllerTest, PanWindowToRight) { 352c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const aura::Env* env = aura::Env::GetInstance(); 3535f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) ui::test::EventGenerator generator(Shell::GetPrimaryRootWindow()); 354c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 355b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) generator.MoveMouseToInHost(gfx::Point(400, 300)); 356c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ(1.f, GetMagnificationController()->GetScale()); 357c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ("0,0 800x600", GetViewport().ToString()); 358c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ("400,300", env->last_mouse_location().ToString()); 359c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 360c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) float scale = 2.f; 361c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 362c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Enables magnifier and confirm the viewport is at center. 363c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GetMagnificationController()->SetEnabled(true); 364c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_FLOAT_EQ(2.f, GetMagnificationController()->GetScale()); 365c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 366c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) scale *= kMagnificationScaleFactor; 367c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GetMagnificationController()->SetScale(scale, false); 368c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_FLOAT_EQ(2.3784142, GetMagnificationController()->GetScale()); 369b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) generator.MoveMouseToInHost(gfx::Point(400, 300)); 370c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ("400,300", env->last_mouse_location().ToString()); 371b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) generator.MoveMouseToInHost(gfx::Point(799, 300)); 372c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ("566,299", env->last_mouse_location().ToString()); 373c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ("705,300", GetHostMouseLocation()); 374c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 375c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) scale *= kMagnificationScaleFactor; 376c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GetMagnificationController()->SetScale(scale, false); 377c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_FLOAT_EQ(2.8284268, GetMagnificationController()->GetScale()); 378b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) generator.MoveMouseToInHost(gfx::Point(799, 300)); 379c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ("599,299", env->last_mouse_location().ToString()); 380c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ("702,300", GetHostMouseLocation()); 381c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 382c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) scale *= kMagnificationScaleFactor; 383c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GetMagnificationController()->SetScale(scale, false); 384c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_FLOAT_EQ(3.3635852, GetMagnificationController()->GetScale()); 385b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) generator.MoveMouseToInHost(gfx::Point(799, 300)); 386c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ("627,298", env->last_mouse_location().ToString()); 387c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ("707,300", GetHostMouseLocation()); 388c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 389c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) scale *= kMagnificationScaleFactor; 390c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GetMagnificationController()->SetScale(scale, false); 391c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_FLOAT_EQ(4.f, GetMagnificationController()->GetScale()); 392b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) generator.MoveMouseToInHost(gfx::Point(799, 300)); 393c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ("649,298", env->last_mouse_location().ToString()); 394c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ("704,300", GetHostMouseLocation()); 395c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 396c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 397c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)TEST_F(MagnificationControllerTest, PanWindowToLeft) { 398c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const aura::Env* env = aura::Env::GetInstance(); 3995f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) ui::test::EventGenerator generator(Shell::GetPrimaryRootWindow()); 400c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 401b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) generator.MoveMouseToInHost(gfx::Point(400, 300)); 402c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ(1.f, GetMagnificationController()->GetScale()); 403c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ("0,0 800x600", GetViewport().ToString()); 404c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ("400,300", env->last_mouse_location().ToString()); 405c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 406c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) float scale = 2.f; 407c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 408c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Enables magnifier and confirm the viewport is at center. 409c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GetMagnificationController()->SetEnabled(true); 410c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_FLOAT_EQ(2.f, GetMagnificationController()->GetScale()); 411c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 412c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) scale *= kMagnificationScaleFactor; 413c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GetMagnificationController()->SetScale(scale, false); 414c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_FLOAT_EQ(2.3784142, GetMagnificationController()->GetScale()); 415b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) generator.MoveMouseToInHost(gfx::Point(400, 300)); 416c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ("400,300", env->last_mouse_location().ToString()); 417b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) generator.MoveMouseToInHost(gfx::Point(0, 300)); 418c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ("231,299", env->last_mouse_location().ToString()); 419c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ("100,300", GetHostMouseLocation()); 420c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 421c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) scale *= kMagnificationScaleFactor; 422c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GetMagnificationController()->SetScale(scale, false); 423c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_FLOAT_EQ(2.8284268, GetMagnificationController()->GetScale()); 424b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) generator.MoveMouseToInHost(gfx::Point(0, 300)); 4254e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) EXPECT_EQ("194,299", env->last_mouse_location().ToString()); 426c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ("99,300", GetHostMouseLocation()); 427c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 428c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) scale *= kMagnificationScaleFactor; 429c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GetMagnificationController()->SetScale(scale, false); 430c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_FLOAT_EQ(3.3635852, GetMagnificationController()->GetScale()); 431b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) generator.MoveMouseToInHost(gfx::Point(0, 300)); 4324e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) EXPECT_EQ("164,298", env->last_mouse_location().ToString()); 433c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ("98,300", GetHostMouseLocation()); 434c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 435c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) scale *= kMagnificationScaleFactor; 436c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GetMagnificationController()->SetScale(scale, false); 437c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_FLOAT_EQ(4.f, GetMagnificationController()->GetScale()); 438b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) generator.MoveMouseToInHost(gfx::Point(0, 300)); 4394e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles) EXPECT_EQ("139,298", env->last_mouse_location().ToString()); 440c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ("100,300", GetHostMouseLocation()); 441c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 442c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 4432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} // namespace ash 444