Index: ash/ash_root_window_transformer_unittest.cc |
diff --git a/ash/ash_root_window_transformer_unittest.cc b/ash/ash_root_window_transformer_unittest.cc |
deleted file mode 100644 |
index 5bca069972c91ad57bb297b0c1b8d6b62b4796a1..0000000000000000000000000000000000000000 |
--- a/ash/ash_root_window_transformer_unittest.cc |
+++ /dev/null |
@@ -1,398 +0,0 @@ |
-// Copyright (c) 2013 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include"ash/ash_root_window_transformer.h" |
- |
-#include "ash/display/display_controller.h" |
-#include "ash/display/display_info.h" |
-#include "ash/display/display_manager.h" |
-#include "ash/launcher/launcher.h" |
-#include "ash/magnifier/magnification_controller.h" |
-#include "ash/screen_ash.h" |
-#include "ash/shelf/shelf_widget.h" |
-#include "ash/shell.h" |
-#include "ash/test/ash_test_base.h" |
-#include "ash/test/cursor_manager_test_api.h" |
-#include "base/synchronization/waitable_event.h" |
-#include "ui/aura/env.h" |
-#include "ui/aura/root_window.h" |
-#include "ui/aura/test/event_generator.h" |
-#include "ui/aura/window_tracker.h" |
-#include "ui/base/events/event_handler.h" |
-#include "ui/gfx/display.h" |
-#include "ui/gfx/rect_conversions.h" |
-#include "ui/gfx/screen.h" |
-#include "ui/views/widget/widget.h" |
- |
-namespace ash { |
-namespace test { |
- |
-namespace { |
- |
-const char kDesktopBackgroundView[] = "DesktopBackgroundView"; |
- |
-class TestEventHandler : public ui::EventHandler { |
- public: |
- TestEventHandler() : target_root_(NULL), |
- touch_radius_x_(0.0), |
- touch_radius_y_(0.0), |
- scroll_x_offset_(0.0), |
- scroll_y_offset_(0.0), |
- scroll_x_offset_ordinal_(0.0), |
- scroll_y_offset_ordinal_(0.0) {} |
- virtual ~TestEventHandler() {} |
- |
- virtual void OnMouseEvent(ui::MouseEvent* event) OVERRIDE { |
- if (event->flags() & ui::EF_IS_SYNTHESIZED) |
- return; |
- aura::Window* target = static_cast<aura::Window*>(event->target()); |
- mouse_location_ = event->root_location(); |
- target_root_ = target->GetRootWindow(); |
- event->StopPropagation(); |
- } |
- |
- virtual void OnTouchEvent(ui::TouchEvent* event) OVERRIDE { |
- aura::Window* target = static_cast<aura::Window*>(event->target()); |
- // Only record when the target is the background which covers |
- // entire root window. |
- if (target->name() != kDesktopBackgroundView) |
- return; |
- touch_radius_x_ = event->radius_x(); |
- touch_radius_y_ = event->radius_y(); |
- event->StopPropagation(); |
- } |
- |
- virtual void OnScrollEvent(ui::ScrollEvent* event) OVERRIDE { |
- aura::Window* target = static_cast<aura::Window*>(event->target()); |
- // Only record when the target is the background which covers |
- // entire root window. |
- if (target->name() != kDesktopBackgroundView) |
- return; |
- |
- if (event->type() == ui::ET_SCROLL) { |
- scroll_x_offset_ = event->x_offset(); |
- scroll_y_offset_ = event->y_offset(); |
- scroll_x_offset_ordinal_ = event->x_offset_ordinal(); |
- scroll_y_offset_ordinal_ = event->y_offset_ordinal(); |
- } |
- event->StopPropagation(); |
- } |
- |
- std::string GetLocationAndReset() { |
- std::string result = mouse_location_.ToString(); |
- mouse_location_.SetPoint(0, 0); |
- target_root_ = NULL; |
- return result; |
- } |
- |
- float touch_radius_x() const { return touch_radius_x_; } |
- float touch_radius_y() const { return touch_radius_y_; } |
- float scroll_x_offset() const { return scroll_x_offset_; } |
- float scroll_y_offset() const { return scroll_y_offset_; } |
- float scroll_x_offset_ordinal() const { return scroll_x_offset_ordinal_; } |
- float scroll_y_offset_ordinal() const { return scroll_y_offset_ordinal_; } |
- |
- private: |
- gfx::Point mouse_location_; |
- aura::RootWindow* target_root_; |
- |
- float touch_radius_x_; |
- float touch_radius_y_; |
- float scroll_x_offset_; |
- float scroll_y_offset_; |
- float scroll_x_offset_ordinal_; |
- float scroll_y_offset_ordinal_; |
- |
- DISALLOW_COPY_AND_ASSIGN(TestEventHandler); |
-}; |
- |
-gfx::Display::Rotation GetStoredRotation(int64 id) { |
- return Shell::GetInstance()->display_manager()->GetDisplayInfo(id).rotation(); |
-} |
- |
-float GetStoredUIScale(int64 id) { |
- return Shell::GetInstance()->display_manager()->GetDisplayInfo(id).ui_scale(); |
-} |
- |
-} // namespace |
- |
-typedef test::AshTestBase AshRootWindowTransformerTest; |
- |
-#if defined(OS_WIN) |
-// On Win8 bots, the host window can't be resized and |
-// SetTransform updates the window using the orignal host window |
-// size. |
-#define MAYBE_RotateAndMagnify DISABLED_RotateAndMagniy |
-#define MAYBE_ScaleAndMagnify DISABLED_ScaleAndMagnify |
-#define MAYBE_TouchScaleAndMagnify DISABLED_TouchScaleAndMagnify |
-#define MAYBE_ConvertHostToRootCoords DISABLED_ConvertHostToRootCoords |
-#else |
-#define MAYBE_RotateAndMagnify RotateAndMagniy |
-#define MAYBE_ScaleAndMagnify ScaleAndMagnify |
-#define MAYBE_TouchScaleAndMagnify TouchScaleAndMagnify |
-#define MAYBE_ConvertHostToRootCoords ConvertHostToRootCoords |
-#endif |
- |
-TEST_F(AshRootWindowTransformerTest, MAYBE_RotateAndMagnify) { |
- DisplayController* display_controller = |
- Shell::GetInstance()->display_controller(); |
- MagnificationController* magnifier = |
- Shell::GetInstance()->magnification_controller(); |
- internal::DisplayManager* display_manager = |
- Shell::GetInstance()->display_manager(); |
- |
- TestEventHandler event_handler; |
- Shell::GetInstance()->AddPreTargetHandler(&event_handler); |
- |
- UpdateDisplay("120x200,300x400*2"); |
- gfx::Display display1 = Shell::GetScreen()->GetPrimaryDisplay(); |
- int64 display2_id = ScreenAsh::GetSecondaryDisplay().id(); |
- |
- Shell::RootWindowList root_windows = Shell::GetAllRootWindows(); |
- aura::test::EventGenerator generator1(root_windows[0]); |
- aura::test::EventGenerator generator2(root_windows[1]); |
- |
- magnifier->SetEnabled(true); |
- EXPECT_EQ(2.0f, magnifier->GetScale()); |
- EXPECT_EQ("120x200", root_windows[0]->bounds().size().ToString()); |
- EXPECT_EQ("150x200", root_windows[1]->bounds().size().ToString()); |
- EXPECT_EQ("120,0 150x200", |
- ScreenAsh::GetSecondaryDisplay().bounds().ToString()); |
- generator1.MoveMouseToInHost(40, 80); |
- EXPECT_EQ("50,90", event_handler.GetLocationAndReset()); |
- EXPECT_EQ("50,90", |
- aura::Env::GetInstance()->last_mouse_location().ToString()); |
- EXPECT_EQ(gfx::Display::ROTATE_0, GetStoredRotation(display1.id())); |
- EXPECT_EQ(gfx::Display::ROTATE_0, GetStoredRotation(display2_id)); |
- magnifier->SetEnabled(false); |
- |
- display_manager->SetDisplayRotation(display1.id(), |
- gfx::Display::ROTATE_90); |
- // Move the cursor to the center of the first root window. |
- generator1.MoveMouseToInHost(59, 100); |
- |
- magnifier->SetEnabled(true); |
- EXPECT_EQ(2.0f, magnifier->GetScale()); |
- EXPECT_EQ("200x120", root_windows[0]->bounds().size().ToString()); |
- EXPECT_EQ("150x200", root_windows[1]->bounds().size().ToString()); |
- EXPECT_EQ("200,0 150x200", |
- ScreenAsh::GetSecondaryDisplay().bounds().ToString()); |
- generator1.MoveMouseToInHost(39, 120); |
- EXPECT_EQ("110,70", event_handler.GetLocationAndReset()); |
- EXPECT_EQ("110,70", |
- aura::Env::GetInstance()->last_mouse_location().ToString()); |
- EXPECT_EQ(gfx::Display::ROTATE_90, GetStoredRotation(display1.id())); |
- EXPECT_EQ(gfx::Display::ROTATE_0, GetStoredRotation(display2_id)); |
- magnifier->SetEnabled(false); |
- |
- DisplayLayout display_layout(DisplayLayout::BOTTOM, 50); |
- display_controller->SetLayoutForCurrentDisplays(display_layout); |
- EXPECT_EQ("50,120 150x200", |
- ScreenAsh::GetSecondaryDisplay().bounds().ToString()); |
- |
- display_manager->SetDisplayRotation(display2_id, |
- gfx::Display::ROTATE_270); |
- // Move the cursor to the center of the second root window. |
- generator2.MoveMouseToInHost(151, 199); |
- |
- magnifier->SetEnabled(true); |
- EXPECT_EQ("200x120", root_windows[0]->bounds().size().ToString()); |
- EXPECT_EQ("200x150", root_windows[1]->bounds().size().ToString()); |
- EXPECT_EQ("50,120 200x150", |
- ScreenAsh::GetSecondaryDisplay().bounds().ToString()); |
- generator2.MoveMouseToInHost(172, 219); |
- EXPECT_EQ("95,80", event_handler.GetLocationAndReset()); |
- EXPECT_EQ("145,200", |
- aura::Env::GetInstance()->last_mouse_location().ToString()); |
- EXPECT_EQ(gfx::Display::ROTATE_90, GetStoredRotation(display1.id())); |
- EXPECT_EQ(gfx::Display::ROTATE_270, GetStoredRotation(display2_id)); |
- magnifier->SetEnabled(false); |
- |
- display_manager->SetDisplayRotation(display1.id(), |
- gfx::Display::ROTATE_180); |
- // Move the cursor to the center of the first root window. |
- generator1.MoveMouseToInHost(59, 99); |
- |
- magnifier->SetEnabled(true); |
- EXPECT_EQ("120x200", root_windows[0]->bounds().size().ToString()); |
- EXPECT_EQ("200x150", root_windows[1]->bounds().size().ToString()); |
- // Dislay must share at least 100, so the x's offset becomes 20. |
- EXPECT_EQ("20,200 200x150", |
- ScreenAsh::GetSecondaryDisplay().bounds().ToString()); |
- generator1.MoveMouseToInHost(39, 59); |
- EXPECT_EQ("70,120", event_handler.GetLocationAndReset()); |
- EXPECT_EQ(gfx::Display::ROTATE_180, GetStoredRotation(display1.id())); |
- EXPECT_EQ(gfx::Display::ROTATE_270, GetStoredRotation(display2_id)); |
- magnifier->SetEnabled(false); |
- |
- Shell::GetInstance()->RemovePreTargetHandler(&event_handler); |
-} |
- |
-TEST_F(AshRootWindowTransformerTest, MAYBE_ScaleAndMagnify) { |
- TestEventHandler event_handler; |
- Shell::GetInstance()->AddPreTargetHandler(&event_handler); |
- |
- UpdateDisplay("600x400*2@1.5,500x300"); |
- |
- gfx::Display display1 = Shell::GetScreen()->GetPrimaryDisplay(); |
- gfx::Display::SetInternalDisplayId(display1.id()); |
- gfx::Display display2 = ScreenAsh::GetSecondaryDisplay(); |
- Shell::RootWindowList root_windows = Shell::GetAllRootWindows(); |
- MagnificationController* magnifier = |
- Shell::GetInstance()->magnification_controller(); |
- |
- magnifier->SetEnabled(true); |
- EXPECT_EQ(2.0f, magnifier->GetScale()); |
- EXPECT_EQ("0,0 450x300", display1.bounds().ToString()); |
- EXPECT_EQ("0,0 450x300", root_windows[0]->bounds().ToString()); |
- EXPECT_EQ("450,0 500x300", display2.bounds().ToString()); |
- EXPECT_EQ(1.5f, GetStoredUIScale(display1.id())); |
- EXPECT_EQ(1.0f, GetStoredUIScale(display2.id())); |
- |
- aura::test::EventGenerator generator(root_windows[0]); |
- generator.MoveMouseToInHost(500, 200); |
- EXPECT_EQ("299,150", event_handler.GetLocationAndReset()); |
- magnifier->SetEnabled(false); |
- |
- internal::DisplayManager* display_manager = |
- Shell::GetInstance()->display_manager(); |
- display_manager->SetDisplayUIScale(display1.id(), 1.25); |
- display1 = Shell::GetScreen()->GetPrimaryDisplay(); |
- display2 = ScreenAsh::GetSecondaryDisplay(); |
- magnifier->SetEnabled(true); |
- EXPECT_EQ(2.0f, magnifier->GetScale()); |
- EXPECT_EQ("0,0 375x250", display1.bounds().ToString()); |
- EXPECT_EQ("0,0 375x250", root_windows[0]->bounds().ToString()); |
- EXPECT_EQ("375,0 500x300", display2.bounds().ToString()); |
- EXPECT_EQ(1.25f, GetStoredUIScale(display1.id())); |
- EXPECT_EQ(1.0f, GetStoredUIScale(display2.id())); |
- magnifier->SetEnabled(false); |
- |
- Shell::GetInstance()->RemovePreTargetHandler(&event_handler); |
-} |
- |
-TEST_F(AshRootWindowTransformerTest, MAYBE_TouchScaleAndMagnify) { |
- TestEventHandler event_handler; |
- Shell::GetInstance()->AddPreTargetHandler(&event_handler); |
- |
- UpdateDisplay("200x200*2"); |
- gfx::Display display = Shell::GetScreen()->GetPrimaryDisplay(); |
- Shell::RootWindowList root_windows = Shell::GetAllRootWindows(); |
- aura::RootWindow* root_window = root_windows[0]; |
- aura::test::EventGenerator generator(root_window); |
- MagnificationController* magnifier = |
- Shell::GetInstance()->magnification_controller(); |
- |
- magnifier->SetEnabled(true); |
- EXPECT_FLOAT_EQ(2.0f, magnifier->GetScale()); |
- magnifier->SetScale(2.5f, false); |
- EXPECT_FLOAT_EQ(2.5f, magnifier->GetScale()); |
- generator.PressMoveAndReleaseTouchTo(50, 50); |
- // Default test touches have radius_x/y = 1.0, with device scale |
- // factor = 2, the scaled radius_x/y should be 0.5. |
- EXPECT_FLOAT_EQ(0.2, event_handler.touch_radius_x()); |
- EXPECT_FLOAT_EQ(0.2, event_handler.touch_radius_y()); |
- |
- generator.ScrollSequence(gfx::Point(0,0), |
- base::TimeDelta::FromMilliseconds(100), |
- 10.0, 1.0, 5, 1); |
- |
- // With device scale factor = 2, ordinal_offset * 2 = offset. |
- EXPECT_FLOAT_EQ(event_handler.scroll_x_offset(), |
- event_handler.scroll_x_offset_ordinal() * 2 * 2.5f); |
- EXPECT_FLOAT_EQ(event_handler.scroll_y_offset(), |
- event_handler.scroll_y_offset_ordinal() * 2 * 2.5f); |
- magnifier->SetEnabled(false); |
- |
- Shell::GetInstance()->RemovePreTargetHandler(&event_handler); |
-} |
- |
-TEST_F(AshRootWindowTransformerTest, MAYBE_ConvertHostToRootCoords) { |
- TestEventHandler event_handler; |
- Shell::GetInstance()->AddPreTargetHandler(&event_handler); |
- MagnificationController* magnifier = |
- Shell::GetInstance()->magnification_controller(); |
- |
- // Test 1 |
- UpdateDisplay("600x400*2/r@1.5"); |
- |
- gfx::Display display1 = Shell::GetScreen()->GetPrimaryDisplay(); |
- Shell::RootWindowList root_windows = Shell::GetAllRootWindows(); |
- EXPECT_EQ("0,0 300x450", display1.bounds().ToString()); |
- EXPECT_EQ("0,0 300x450", root_windows[0]->bounds().ToString()); |
- EXPECT_EQ(1.5f, GetStoredUIScale(display1.id())); |
- |
- aura::test::EventGenerator generator(root_windows[0]); |
- generator.MoveMouseToInHost(300, 200); |
- magnifier->SetEnabled(true); |
- EXPECT_EQ("150,224", event_handler.GetLocationAndReset()); |
- EXPECT_FLOAT_EQ(2.0f, magnifier->GetScale()); |
- |
- generator.MoveMouseToInHost(300, 200); |
- EXPECT_EQ("150,224", event_handler.GetLocationAndReset()); |
- generator.MoveMouseToInHost(200, 300); |
- EXPECT_EQ("187,261", event_handler.GetLocationAndReset()); |
- generator.MoveMouseToInHost(100, 400); |
- EXPECT_EQ("237,299", event_handler.GetLocationAndReset()); |
- generator.MoveMouseToInHost(0, 0); |
- EXPECT_EQ("137,348", event_handler.GetLocationAndReset()); |
- |
- magnifier->SetEnabled(false); |
- EXPECT_FLOAT_EQ(1.0f, magnifier->GetScale()); |
- |
- // Test 2 |
- UpdateDisplay("600x400*2/u@1.5"); |
- display1 = Shell::GetScreen()->GetPrimaryDisplay(); |
- root_windows = Shell::GetAllRootWindows(); |
- EXPECT_EQ("0,0 450x300", display1.bounds().ToString()); |
- EXPECT_EQ("0,0 450x300", root_windows[0]->bounds().ToString()); |
- EXPECT_EQ(1.5f, GetStoredUIScale(display1.id())); |
- |
- generator.MoveMouseToInHost(300, 200); |
- magnifier->SetEnabled(true); |
- EXPECT_EQ("224,149", event_handler.GetLocationAndReset()); |
- EXPECT_FLOAT_EQ(2.0f, magnifier->GetScale()); |
- |
- generator.MoveMouseToInHost(300, 200); |
- EXPECT_EQ("224,148", event_handler.GetLocationAndReset()); |
- generator.MoveMouseToInHost(200, 300); |
- EXPECT_EQ("261,111", event_handler.GetLocationAndReset()); |
- generator.MoveMouseToInHost(100, 400); |
- EXPECT_EQ("299,60", event_handler.GetLocationAndReset()); |
- generator.MoveMouseToInHost(0, 0); |
- EXPECT_EQ("348,159", event_handler.GetLocationAndReset()); |
- |
- magnifier->SetEnabled(false); |
- EXPECT_FLOAT_EQ(1.0f, magnifier->GetScale()); |
- |
- // Test 3 |
- UpdateDisplay("600x400*2/l@1.5"); |
- display1 = Shell::GetScreen()->GetPrimaryDisplay(); |
- root_windows = Shell::GetAllRootWindows(); |
- EXPECT_EQ("0,0 300x450", display1.bounds().ToString()); |
- EXPECT_EQ("0,0 300x450", root_windows[0]->bounds().ToString()); |
- EXPECT_EQ(1.5f, GetStoredUIScale(display1.id())); |
- |
- generator.MoveMouseToInHost(300, 200); |
- magnifier->SetEnabled(true); |
- EXPECT_EQ("149,225", event_handler.GetLocationAndReset()); |
- EXPECT_FLOAT_EQ(2.0f, magnifier->GetScale()); |
- |
- generator.MoveMouseToInHost(300, 200); |
- EXPECT_EQ("148,224", event_handler.GetLocationAndReset()); |
- generator.MoveMouseToInHost(200, 300); |
- EXPECT_EQ("111,187", event_handler.GetLocationAndReset()); |
- generator.MoveMouseToInHost(100, 400); |
- EXPECT_EQ("60,149", event_handler.GetLocationAndReset()); |
- generator.MoveMouseToInHost(0, 0); |
- EXPECT_EQ("159,99", event_handler.GetLocationAndReset()); |
- |
- magnifier->SetEnabled(false); |
- EXPECT_FLOAT_EQ(1.0f, magnifier->GetScale()); |
- |
- Shell::GetInstance()->RemovePreTargetHandler(&event_handler); |
-} |
- |
-} // namespace test |
-} // namespace ash |