| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "ash/display/cursor_window_controller.h" | 5 #include "ash/display/cursor_window_controller.h" |
| 6 | 6 |
| 7 #include "ash/display/display_util.h" | 7 #include "ash/display/display_util.h" |
| 8 #include "ash/display/window_tree_host_manager.h" | 8 #include "ash/display/window_tree_host_manager.h" |
| 9 #include "ash/shell.h" | 9 #include "ash/shell.h" |
| 10 #include "ash/test/ash_test_base.h" | 10 #include "ash/test/ash_test_base.h" |
| (...skipping 12 matching lines...) Expand all Loading... |
| 23 public: | 23 public: |
| 24 CursorWindowControllerTest() {} | 24 CursorWindowControllerTest() {} |
| 25 ~CursorWindowControllerTest() override {} | 25 ~CursorWindowControllerTest() override {} |
| 26 | 26 |
| 27 // test::AshTestBase: | 27 // test::AshTestBase: |
| 28 void SetUp() override { | 28 void SetUp() override { |
| 29 AshTestBase::SetUp(); | 29 AshTestBase::SetUp(); |
| 30 SetCursorCompositionEnabled(true); | 30 SetCursorCompositionEnabled(true); |
| 31 } | 31 } |
| 32 | 32 |
| 33 int GetCursorType() const { return cursor_window_controller_->cursor_type_; } | 33 ui::CursorType GetCursorType() const { |
| 34 return cursor_window_controller_->cursor_type_; |
| 35 } |
| 34 | 36 |
| 35 const gfx::Point& GetCursorHotPoint() const { | 37 const gfx::Point& GetCursorHotPoint() const { |
| 36 return cursor_window_controller_->hot_point_; | 38 return cursor_window_controller_->hot_point_; |
| 37 } | 39 } |
| 38 | 40 |
| 39 aura::Window* GetCursorWindow() const { | 41 aura::Window* GetCursorWindow() const { |
| 40 return cursor_window_controller_->cursor_window_.get(); | 42 return cursor_window_controller_->cursor_window_.get(); |
| 41 } | 43 } |
| 42 | 44 |
| 43 const gfx::ImageSkia& GetCursorImage() const { | 45 const gfx::ImageSkia& GetCursorImage() const { |
| (...skipping 29 matching lines...) Expand all Loading... |
| 73 aura::Window* primary_root = | 75 aura::Window* primary_root = |
| 74 window_tree_host_manager->GetRootWindowForDisplayId(primary_display_id); | 76 window_tree_host_manager->GetRootWindowForDisplayId(primary_display_id); |
| 75 aura::Window* secondary_root = | 77 aura::Window* secondary_root = |
| 76 window_tree_host_manager->GetRootWindowForDisplayId(secondary_display_id); | 78 window_tree_host_manager->GetRootWindowForDisplayId(secondary_display_id); |
| 77 | 79 |
| 78 ui::test::EventGenerator primary_generator(primary_root); | 80 ui::test::EventGenerator primary_generator(primary_root); |
| 79 primary_generator.MoveMouseToInHost(20, 50); | 81 primary_generator.MoveMouseToInHost(20, 50); |
| 80 | 82 |
| 81 EXPECT_TRUE(primary_root->Contains(GetCursorWindow())); | 83 EXPECT_TRUE(primary_root->Contains(GetCursorWindow())); |
| 82 EXPECT_EQ(primary_display_id, GetCursorDisplayId()); | 84 EXPECT_EQ(primary_display_id, GetCursorDisplayId()); |
| 83 EXPECT_EQ(ui::kCursorNull, GetCursorType()); | 85 EXPECT_EQ(ui::CursorType::kNull, GetCursorType()); |
| 84 gfx::Point hot_point = GetCursorHotPoint(); | 86 gfx::Point hot_point = GetCursorHotPoint(); |
| 85 EXPECT_EQ("4,4", hot_point.ToString()); | 87 EXPECT_EQ("4,4", hot_point.ToString()); |
| 86 gfx::Rect cursor_bounds = GetCursorWindow()->GetBoundsInScreen(); | 88 gfx::Rect cursor_bounds = GetCursorWindow()->GetBoundsInScreen(); |
| 87 EXPECT_EQ(20, cursor_bounds.x() + hot_point.x()); | 89 EXPECT_EQ(20, cursor_bounds.x() + hot_point.x()); |
| 88 EXPECT_EQ(50, cursor_bounds.y() + hot_point.y()); | 90 EXPECT_EQ(50, cursor_bounds.y() + hot_point.y()); |
| 89 | 91 |
| 90 // The cursor can only be moved between displays via | 92 // The cursor can only be moved between displays via |
| 91 // WindowTreeHost::MoveCursorTo(). EventGenerator uses a hack to move the | 93 // WindowTreeHost::MoveCursorTo(). EventGenerator uses a hack to move the |
| 92 // cursor between displays. | 94 // cursor between displays. |
| 93 // Screen location: 220, 50 | 95 // Screen location: 220, 50 |
| 94 // Root location: 20, 50 | 96 // Root location: 20, 50 |
| 95 secondary_root->MoveCursorTo(gfx::Point(20, 50)); | 97 secondary_root->MoveCursorTo(gfx::Point(20, 50)); |
| 96 | 98 |
| 97 // Chrome relies on WindowTreeHost::MoveCursorTo() dispatching a mouse move | 99 // Chrome relies on WindowTreeHost::MoveCursorTo() dispatching a mouse move |
| 98 // asynchronously. This is implemented in a platform specific way. Generate a | 100 // asynchronously. This is implemented in a platform specific way. Generate a |
| 99 // fake mouse move instead of waiting. | 101 // fake mouse move instead of waiting. |
| 100 gfx::Point new_cursor_position_in_host(20, 50); | 102 gfx::Point new_cursor_position_in_host(20, 50); |
| 101 secondary_root->GetHost()->ConvertDIPToPixels(&new_cursor_position_in_host); | 103 secondary_root->GetHost()->ConvertDIPToPixels(&new_cursor_position_in_host); |
| 102 ui::test::EventGenerator secondary_generator(secondary_root); | 104 ui::test::EventGenerator secondary_generator(secondary_root); |
| 103 secondary_generator.MoveMouseToInHost(new_cursor_position_in_host); | 105 secondary_generator.MoveMouseToInHost(new_cursor_position_in_host); |
| 104 | 106 |
| 105 EXPECT_TRUE(secondary_root->Contains(GetCursorWindow())); | 107 EXPECT_TRUE(secondary_root->Contains(GetCursorWindow())); |
| 106 EXPECT_EQ(secondary_display_id, GetCursorDisplayId()); | 108 EXPECT_EQ(secondary_display_id, GetCursorDisplayId()); |
| 107 EXPECT_EQ(ui::kCursorNull, GetCursorType()); | 109 EXPECT_EQ(ui::CursorType::kNull, GetCursorType()); |
| 108 hot_point = GetCursorHotPoint(); | 110 hot_point = GetCursorHotPoint(); |
| 109 EXPECT_EQ("3,3", hot_point.ToString()); | 111 EXPECT_EQ("3,3", hot_point.ToString()); |
| 110 cursor_bounds = GetCursorWindow()->GetBoundsInScreen(); | 112 cursor_bounds = GetCursorWindow()->GetBoundsInScreen(); |
| 111 EXPECT_EQ(220, cursor_bounds.x() + hot_point.x()); | 113 EXPECT_EQ(220, cursor_bounds.x() + hot_point.x()); |
| 112 EXPECT_EQ(50, cursor_bounds.y() + hot_point.y()); | 114 EXPECT_EQ(50, cursor_bounds.y() + hot_point.y()); |
| 113 } | 115 } |
| 114 | 116 |
| 115 // Windows doesn't support compositor based cursor. | 117 // Windows doesn't support compositor based cursor. |
| 116 #if !defined(OS_WIN) | 118 #if !defined(OS_WIN) |
| 117 // Make sure that composition cursor inherits the visibility state. | 119 // Make sure that composition cursor inherits the visibility state. |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 163 ASSERT_TRUE(display::test::DisplayManagerTestApi(display_manager()) | 165 ASSERT_TRUE(display::test::DisplayManagerTestApi(display_manager()) |
| 164 .SetDisplayUIScale(primary_id, 2.0f)); | 166 .SetDisplayUIScale(primary_id, 2.0f)); |
| 165 ASSERT_EQ( | 167 ASSERT_EQ( |
| 166 1.0f, | 168 1.0f, |
| 167 display::Screen::GetScreen()->GetPrimaryDisplay().device_scale_factor()); | 169 display::Screen::GetScreen()->GetPrimaryDisplay().device_scale_factor()); |
| 168 EXPECT_TRUE(GetCursorImage().HasRepresentation(2.0f)); | 170 EXPECT_TRUE(GetCursorImage().HasRepresentation(2.0f)); |
| 169 } | 171 } |
| 170 #endif | 172 #endif |
| 171 | 173 |
| 172 } // namespace ash | 174 } // namespace ash |
| OLD | NEW |