| 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/extended_mouse_warp_controller.h" | 5 #include "ash/display/extended_mouse_warp_controller.h" |
| 6 | 6 |
| 7 #include "ash/display/display_layout_store.h" | 7 #include "ash/display/display_layout_store.h" |
| 8 #include "ash/display/display_manager.h" | 8 #include "ash/display/display_manager.h" |
| 9 #include "ash/display/mouse_cursor_event_filter.h" | 9 #include "ash/display/mouse_cursor_event_filter.h" |
| 10 #include "ash/shell.h" | 10 #include "ash/shell.h" |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 42 UpdateDisplay("360x360,700x700"); | 42 UpdateDisplay("360x360,700x700"); |
| 43 aura::Window::Windows root_windows = Shell::GetAllRootWindows(); | 43 aura::Window::Windows root_windows = Shell::GetAllRootWindows(); |
| 44 | 44 |
| 45 DisplayManager* display_manager = Shell::GetInstance()->display_manager(); | 45 DisplayManager* display_manager = Shell::GetInstance()->display_manager(); |
| 46 DisplayLayout layout(DisplayLayout::RIGHT, 0); | 46 DisplayLayout layout(DisplayLayout::RIGHT, 0); |
| 47 display_manager->SetLayoutForCurrentDisplays(layout); | 47 display_manager->SetLayoutForCurrentDisplays(layout); |
| 48 event_filter()->ShowSharedEdgeIndicator(root_windows[0] /* primary */); | 48 event_filter()->ShowSharedEdgeIndicator(root_windows[0] /* primary */); |
| 49 | 49 |
| 50 ASSERT_EQ(1U, mouse_warp_controller()->warp_regions_.size()); | 50 ASSERT_EQ(1U, mouse_warp_controller()->warp_regions_.size()); |
| 51 EXPECT_EQ(gfx::Rect(359, 16, 1, 344), | 51 EXPECT_EQ(gfx::Rect(359, 16, 1, 344), |
| 52 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds); | 52 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds()); |
| 53 EXPECT_EQ(gfx::Rect(360, 0, 1, 360), | 53 EXPECT_EQ(gfx::Rect(360, 0, 1, 360), |
| 54 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds); | 54 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds()); |
| 55 event_filter()->ShowSharedEdgeIndicator(root_windows[1] /* secondary */); | 55 event_filter()->ShowSharedEdgeIndicator(root_windows[1] /* secondary */); |
| 56 EXPECT_EQ(gfx::Rect(360, 16, 1, 344), | 56 EXPECT_EQ(gfx::Rect(360, 16, 1, 344), |
| 57 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds); | 57 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds()); |
| 58 EXPECT_EQ(gfx::Rect(359, 0, 1, 360), | 58 EXPECT_EQ(gfx::Rect(359, 0, 1, 360), |
| 59 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds); | 59 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds()); |
| 60 | 60 |
| 61 // Move 2nd display downwards a bit. | 61 // Move 2nd display downwards a bit. |
| 62 layout.offset = 5; | 62 layout.offset = 5; |
| 63 display_manager->SetLayoutForCurrentDisplays(layout); | 63 display_manager->SetLayoutForCurrentDisplays(layout); |
| 64 event_filter()->ShowSharedEdgeIndicator(root_windows[0] /* primary */); | 64 event_filter()->ShowSharedEdgeIndicator(root_windows[0] /* primary */); |
| 65 // This is same as before because the 2nd display's y is above | 65 // This is same as before because the 2nd display's y is above |
| 66 // the indicator's x. | 66 // the indicator's x. |
| 67 ASSERT_EQ(1U, mouse_warp_controller()->warp_regions_.size()); | 67 ASSERT_EQ(1U, mouse_warp_controller()->warp_regions_.size()); |
| 68 EXPECT_EQ(gfx::Rect(359, 16, 1, 344), | 68 EXPECT_EQ(gfx::Rect(359, 16, 1, 344), |
| 69 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds); | 69 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds()); |
| 70 EXPECT_EQ(gfx::Rect(360, 5, 1, 355), | 70 EXPECT_EQ(gfx::Rect(360, 5, 1, 355), |
| 71 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds); | 71 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds()); |
| 72 event_filter()->ShowSharedEdgeIndicator(root_windows[1] /* secondary */); | 72 event_filter()->ShowSharedEdgeIndicator(root_windows[1] /* secondary */); |
| 73 EXPECT_EQ(gfx::Rect(360, 21, 1, 339), | 73 EXPECT_EQ(gfx::Rect(360, 21, 1, 339), |
| 74 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds); | 74 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds()); |
| 75 EXPECT_EQ(gfx::Rect(359, 5, 1, 355), | 75 EXPECT_EQ(gfx::Rect(359, 5, 1, 355), |
| 76 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds); | 76 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds()); |
| 77 | 77 |
| 78 // Move it down further so that the shared edge is shorter than | 78 // Move it down further so that the shared edge is shorter than |
| 79 // minimum hole size (160). | 79 // minimum hole size (160). |
| 80 layout.offset = 200; | 80 layout.offset = 200; |
| 81 display_manager->SetLayoutForCurrentDisplays(layout); | 81 display_manager->SetLayoutForCurrentDisplays(layout); |
| 82 event_filter()->ShowSharedEdgeIndicator(root_windows[0] /* primary */); | 82 event_filter()->ShowSharedEdgeIndicator(root_windows[0] /* primary */); |
| 83 ASSERT_EQ(1U, mouse_warp_controller()->warp_regions_.size()); | 83 ASSERT_EQ(1U, mouse_warp_controller()->warp_regions_.size()); |
| 84 EXPECT_EQ(gfx::Rect(359, 200, 1, 160), | 84 EXPECT_EQ(gfx::Rect(359, 200, 1, 160), |
| 85 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds); | 85 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds()); |
| 86 EXPECT_EQ(gfx::Rect(360, 200, 1, 160), | 86 EXPECT_EQ(gfx::Rect(360, 200, 1, 160), |
| 87 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds); | 87 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds()); |
| 88 event_filter()->ShowSharedEdgeIndicator(root_windows[1] /* secondary */); | 88 event_filter()->ShowSharedEdgeIndicator(root_windows[1] /* secondary */); |
| 89 ASSERT_EQ(1U, mouse_warp_controller()->warp_regions_.size()); | 89 ASSERT_EQ(1U, mouse_warp_controller()->warp_regions_.size()); |
| 90 EXPECT_EQ(gfx::Rect(360, 200, 1, 160), | 90 EXPECT_EQ(gfx::Rect(360, 200, 1, 160), |
| 91 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds); | 91 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds()); |
| 92 EXPECT_EQ(gfx::Rect(359, 200, 1, 160), | 92 EXPECT_EQ(gfx::Rect(359, 200, 1, 160), |
| 93 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds); | 93 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds()); |
| 94 | 94 |
| 95 // Now move 2nd display upwards | 95 // Now move 2nd display upwards |
| 96 layout.offset = -5; | 96 layout.offset = -5; |
| 97 display_manager->SetLayoutForCurrentDisplays(layout); | 97 display_manager->SetLayoutForCurrentDisplays(layout); |
| 98 event_filter()->ShowSharedEdgeIndicator(root_windows[0] /* primary */); | 98 event_filter()->ShowSharedEdgeIndicator(root_windows[0] /* primary */); |
| 99 ASSERT_EQ(1U, mouse_warp_controller()->warp_regions_.size()); | 99 ASSERT_EQ(1U, mouse_warp_controller()->warp_regions_.size()); |
| 100 EXPECT_EQ(gfx::Rect(359, 16, 1, 344), | 100 EXPECT_EQ(gfx::Rect(359, 16, 1, 344), |
| 101 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds); | 101 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds()); |
| 102 EXPECT_EQ(gfx::Rect(360, 0, 1, 360), | 102 EXPECT_EQ(gfx::Rect(360, 0, 1, 360), |
| 103 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds); | 103 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds()); |
| 104 event_filter()->ShowSharedEdgeIndicator(root_windows[1] /* secondary */); | 104 event_filter()->ShowSharedEdgeIndicator(root_windows[1] /* secondary */); |
| 105 // 16 px are reserved on 2nd display from top, so y must be | 105 // 16 px are reserved on 2nd display from top, so y must be |
| 106 // (16 - 5) = 11 | 106 // (16 - 5) = 11 |
| 107 ASSERT_EQ(1U, mouse_warp_controller()->warp_regions_.size()); | 107 ASSERT_EQ(1U, mouse_warp_controller()->warp_regions_.size()); |
| 108 EXPECT_EQ(gfx::Rect(360, 11, 1, 349), | 108 EXPECT_EQ(gfx::Rect(360, 11, 1, 349), |
| 109 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds); | 109 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds()); |
| 110 EXPECT_EQ(gfx::Rect(359, 0, 1, 360), | 110 EXPECT_EQ(gfx::Rect(359, 0, 1, 360), |
| 111 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds); | 111 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds()); |
| 112 | 112 |
| 113 event_filter()->HideSharedEdgeIndicator(); | 113 event_filter()->HideSharedEdgeIndicator(); |
| 114 } | 114 } |
| 115 | 115 |
| 116 TEST_F(ExtendedMouseWarpControllerTest, IndicatorBoundsTestOnLeft) { | 116 TEST_F(ExtendedMouseWarpControllerTest, IndicatorBoundsTestOnLeft) { |
| 117 if (!SupportsMultipleDisplays()) | 117 if (!SupportsMultipleDisplays()) |
| 118 return; | 118 return; |
| 119 | 119 |
| 120 UpdateDisplay("360x360,700x700"); | 120 UpdateDisplay("360x360,700x700"); |
| 121 aura::Window::Windows root_windows = Shell::GetAllRootWindows(); | 121 aura::Window::Windows root_windows = Shell::GetAllRootWindows(); |
| 122 | 122 |
| 123 DisplayManager* display_manager = Shell::GetInstance()->display_manager(); | 123 DisplayManager* display_manager = Shell::GetInstance()->display_manager(); |
| 124 DisplayLayout layout(DisplayLayout::LEFT, 0); | 124 DisplayLayout layout(DisplayLayout::LEFT, 0); |
| 125 display_manager->SetLayoutForCurrentDisplays(layout); | 125 display_manager->SetLayoutForCurrentDisplays(layout); |
| 126 event_filter()->ShowSharedEdgeIndicator(root_windows[0] /* primary */); | 126 event_filter()->ShowSharedEdgeIndicator(root_windows[0] /* primary */); |
| 127 ASSERT_EQ(1U, mouse_warp_controller()->warp_regions_.size()); | 127 ASSERT_EQ(1U, mouse_warp_controller()->warp_regions_.size()); |
| 128 EXPECT_EQ(gfx::Rect(0, 16, 1, 344), | 128 EXPECT_EQ(gfx::Rect(0, 16, 1, 344), |
| 129 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds); | 129 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds()); |
| 130 EXPECT_EQ(gfx::Rect(-1, 0, 1, 360), | 130 EXPECT_EQ(gfx::Rect(-1, 0, 1, 360), |
| 131 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds); | 131 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds()); |
| 132 event_filter()->ShowSharedEdgeIndicator(root_windows[1] /* secondary */); | 132 event_filter()->ShowSharedEdgeIndicator(root_windows[1] /* secondary */); |
| 133 ASSERT_EQ(1U, mouse_warp_controller()->warp_regions_.size()); | 133 ASSERT_EQ(1U, mouse_warp_controller()->warp_regions_.size()); |
| 134 EXPECT_EQ(gfx::Rect(-1, 16, 1, 344), | 134 EXPECT_EQ(gfx::Rect(-1, 16, 1, 344), |
| 135 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds); | 135 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds()); |
| 136 EXPECT_EQ(gfx::Rect(0, 0, 1, 360), | 136 EXPECT_EQ(gfx::Rect(0, 0, 1, 360), |
| 137 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds); | 137 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds()); |
| 138 | 138 |
| 139 layout.offset = 250; | 139 layout.offset = 250; |
| 140 display_manager->SetLayoutForCurrentDisplays(layout); | 140 display_manager->SetLayoutForCurrentDisplays(layout); |
| 141 event_filter()->ShowSharedEdgeIndicator(root_windows[0] /* primary */); | 141 event_filter()->ShowSharedEdgeIndicator(root_windows[0] /* primary */); |
| 142 ASSERT_EQ(1U, mouse_warp_controller()->warp_regions_.size()); | 142 ASSERT_EQ(1U, mouse_warp_controller()->warp_regions_.size()); |
| 143 EXPECT_EQ(gfx::Rect(0, 250, 1, 110), | 143 EXPECT_EQ(gfx::Rect(0, 250, 1, 110), |
| 144 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds); | 144 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds()); |
| 145 EXPECT_EQ(gfx::Rect(-1, 250, 1, 110), | 145 EXPECT_EQ(gfx::Rect(-1, 250, 1, 110), |
| 146 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds); | 146 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds()); |
| 147 event_filter()->ShowSharedEdgeIndicator(root_windows[1] /* secondary */); | 147 event_filter()->ShowSharedEdgeIndicator(root_windows[1] /* secondary */); |
| 148 ASSERT_EQ(1U, mouse_warp_controller()->warp_regions_.size()); | 148 ASSERT_EQ(1U, mouse_warp_controller()->warp_regions_.size()); |
| 149 EXPECT_EQ(gfx::Rect(-1, 250, 1, 110), | 149 EXPECT_EQ(gfx::Rect(-1, 250, 1, 110), |
| 150 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds); | 150 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds()); |
| 151 EXPECT_EQ(gfx::Rect(0, 250, 1, 110), | 151 EXPECT_EQ(gfx::Rect(0, 250, 1, 110), |
| 152 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds); | 152 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds()); |
| 153 event_filter()->HideSharedEdgeIndicator(); | 153 event_filter()->HideSharedEdgeIndicator(); |
| 154 } | 154 } |
| 155 | 155 |
| 156 TEST_F(ExtendedMouseWarpControllerTest, IndicatorBoundsTestOnTopBottom) { | 156 TEST_F(ExtendedMouseWarpControllerTest, IndicatorBoundsTestOnTopBottom) { |
| 157 if (!SupportsMultipleDisplays()) | 157 if (!SupportsMultipleDisplays()) |
| 158 return; | 158 return; |
| 159 | 159 |
| 160 UpdateDisplay("360x360,700x700"); | 160 UpdateDisplay("360x360,700x700"); |
| 161 aura::Window::Windows root_windows = Shell::GetAllRootWindows(); | 161 aura::Window::Windows root_windows = Shell::GetAllRootWindows(); |
| 162 | 162 |
| 163 DisplayManager* display_manager = Shell::GetInstance()->display_manager(); | 163 DisplayManager* display_manager = Shell::GetInstance()->display_manager(); |
| 164 DisplayLayout layout(DisplayLayout::TOP, 0); | 164 DisplayLayout layout(DisplayLayout::TOP, 0); |
| 165 display_manager->SetLayoutForCurrentDisplays(layout); | 165 display_manager->SetLayoutForCurrentDisplays(layout); |
| 166 event_filter()->ShowSharedEdgeIndicator(root_windows[0] /* primary */); | 166 event_filter()->ShowSharedEdgeIndicator(root_windows[0] /* primary */); |
| 167 ASSERT_EQ(1U, mouse_warp_controller()->warp_regions_.size()); | 167 ASSERT_EQ(1U, mouse_warp_controller()->warp_regions_.size()); |
| 168 EXPECT_EQ(gfx::Rect(0, 0, 360, 1), | 168 EXPECT_EQ(gfx::Rect(0, 0, 360, 1), |
| 169 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds); | 169 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds()); |
| 170 EXPECT_EQ(gfx::Rect(0, -1, 360, 1), | 170 EXPECT_EQ(gfx::Rect(0, -1, 360, 1), |
| 171 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds); | 171 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds()); |
| 172 event_filter()->ShowSharedEdgeIndicator(root_windows[1] /* secondary */); | 172 event_filter()->ShowSharedEdgeIndicator(root_windows[1] /* secondary */); |
| 173 ASSERT_EQ(1U, mouse_warp_controller()->warp_regions_.size()); | 173 ASSERT_EQ(1U, mouse_warp_controller()->warp_regions_.size()); |
| 174 EXPECT_EQ(gfx::Rect(0, -1, 360, 1), | 174 EXPECT_EQ(gfx::Rect(0, -1, 360, 1), |
| 175 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds); | 175 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds()); |
| 176 EXPECT_EQ(gfx::Rect(0, 0, 360, 1), | 176 EXPECT_EQ(gfx::Rect(0, 0, 360, 1), |
| 177 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds); | 177 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds()); |
| 178 | 178 |
| 179 layout.offset = 250; | 179 layout.offset = 250; |
| 180 display_manager->SetLayoutForCurrentDisplays(layout); | 180 display_manager->SetLayoutForCurrentDisplays(layout); |
| 181 event_filter()->ShowSharedEdgeIndicator(root_windows[0] /* primary */); | 181 event_filter()->ShowSharedEdgeIndicator(root_windows[0] /* primary */); |
| 182 ASSERT_EQ(1U, mouse_warp_controller()->warp_regions_.size()); | 182 ASSERT_EQ(1U, mouse_warp_controller()->warp_regions_.size()); |
| 183 EXPECT_EQ(gfx::Rect(250, 0, 110, 1), | 183 EXPECT_EQ(gfx::Rect(250, 0, 110, 1), |
| 184 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds); | 184 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds()); |
| 185 EXPECT_EQ(gfx::Rect(250, -1, 110, 1), | 185 EXPECT_EQ(gfx::Rect(250, -1, 110, 1), |
| 186 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds); | 186 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds()); |
| 187 event_filter()->ShowSharedEdgeIndicator(root_windows[1] /* secondary */); | 187 event_filter()->ShowSharedEdgeIndicator(root_windows[1] /* secondary */); |
| 188 ASSERT_EQ(1U, mouse_warp_controller()->warp_regions_.size()); | 188 ASSERT_EQ(1U, mouse_warp_controller()->warp_regions_.size()); |
| 189 EXPECT_EQ(gfx::Rect(250, -1, 110, 1), | 189 EXPECT_EQ(gfx::Rect(250, -1, 110, 1), |
| 190 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds); | 190 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds()); |
| 191 EXPECT_EQ(gfx::Rect(250, 0, 110, 1), | 191 EXPECT_EQ(gfx::Rect(250, 0, 110, 1), |
| 192 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds); | 192 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds()); |
| 193 | 193 |
| 194 layout.position = DisplayLayout::BOTTOM; | 194 layout.position = DisplayLayout::BOTTOM; |
| 195 layout.offset = 0; | 195 layout.offset = 0; |
| 196 display_manager->SetLayoutForCurrentDisplays(layout); | 196 display_manager->SetLayoutForCurrentDisplays(layout); |
| 197 event_filter()->ShowSharedEdgeIndicator(root_windows[0] /* primary */); | 197 event_filter()->ShowSharedEdgeIndicator(root_windows[0] /* primary */); |
| 198 ASSERT_EQ(1U, mouse_warp_controller()->warp_regions_.size()); | 198 ASSERT_EQ(1U, mouse_warp_controller()->warp_regions_.size()); |
| 199 EXPECT_EQ(gfx::Rect(0, 359, 360, 1), | 199 EXPECT_EQ(gfx::Rect(0, 359, 360, 1), |
| 200 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds); | 200 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds()); |
| 201 EXPECT_EQ(gfx::Rect(0, 360, 360, 1), | 201 EXPECT_EQ(gfx::Rect(0, 360, 360, 1), |
| 202 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds); | 202 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds()); |
| 203 event_filter()->ShowSharedEdgeIndicator(root_windows[1] /* secondary */); | 203 event_filter()->ShowSharedEdgeIndicator(root_windows[1] /* secondary */); |
| 204 ASSERT_EQ(1U, mouse_warp_controller()->warp_regions_.size()); | 204 ASSERT_EQ(1U, mouse_warp_controller()->warp_regions_.size()); |
| 205 EXPECT_EQ(gfx::Rect(0, 360, 360, 1), | 205 EXPECT_EQ(gfx::Rect(0, 360, 360, 1), |
| 206 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds); | 206 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds()); |
| 207 EXPECT_EQ(gfx::Rect(0, 359, 360, 1), | 207 EXPECT_EQ(gfx::Rect(0, 359, 360, 1), |
| 208 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds); | 208 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds()); |
| 209 | 209 |
| 210 event_filter()->HideSharedEdgeIndicator(); | 210 event_filter()->HideSharedEdgeIndicator(); |
| 211 } | 211 } |
| 212 | 212 |
| 213 // Verify indicators show up as expected with 3+ displays. | 213 // Verify indicators show up as expected with 3+ displays. |
| 214 TEST_F(ExtendedMouseWarpControllerTest, IndicatorBoundsTestThreeDisplays) { | 214 TEST_F(ExtendedMouseWarpControllerTest, IndicatorBoundsTestThreeDisplays) { |
| 215 if (!SupportsMultipleDisplays()) | 215 if (!SupportsMultipleDisplays()) |
| 216 return; | 216 return; |
| 217 | 217 |
| 218 auto run_test = [this] { |
| 219 aura::Window::Windows root_windows = Shell::GetAllRootWindows(); |
| 220 |
| 221 // Left most display |
| 222 event_filter()->ShowSharedEdgeIndicator(root_windows[0]); |
| 223 ASSERT_EQ(2U, mouse_warp_controller()->warp_regions_.size()); |
| 224 EXPECT_EQ(gfx::Rect(359, 16, 1, 344), |
| 225 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds()); |
| 226 EXPECT_EQ(gfx::Rect(360, 0, 1, 360), |
| 227 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds()); |
| 228 EXPECT_EQ(gfx::Rect(1060, 16, 1, 684), |
| 229 mouse_warp_controller()->warp_regions_[1]->a_indicator_bounds()); |
| 230 EXPECT_EQ(gfx::Rect(1059, 0, 1, 700), |
| 231 mouse_warp_controller()->warp_regions_[1]->b_indicator_bounds()); |
| 232 |
| 233 // Middle display |
| 234 event_filter()->ShowSharedEdgeIndicator(root_windows[1]); |
| 235 ASSERT_EQ(2U, mouse_warp_controller()->warp_regions_.size()); |
| 236 EXPECT_EQ(gfx::Rect(360, 16, 1, 344), |
| 237 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds()); |
| 238 EXPECT_EQ(gfx::Rect(359, 0, 1, 360), |
| 239 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds()); |
| 240 EXPECT_EQ(gfx::Rect(1059, 16, 1, 684), |
| 241 mouse_warp_controller()->warp_regions_[1]->a_indicator_bounds()); |
| 242 EXPECT_EQ(gfx::Rect(1060, 0, 1, 700), |
| 243 mouse_warp_controller()->warp_regions_[1]->b_indicator_bounds()); |
| 244 |
| 245 // Right most display |
| 246 event_filter()->ShowSharedEdgeIndicator(root_windows[2]); |
| 247 ASSERT_EQ(2U, mouse_warp_controller()->warp_regions_.size()); |
| 248 EXPECT_EQ(gfx::Rect(360, 16, 1, 344), |
| 249 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds()); |
| 250 EXPECT_EQ(gfx::Rect(359, 0, 1, 360), |
| 251 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds()); |
| 252 EXPECT_EQ(gfx::Rect(1060, 16, 1, 684), |
| 253 mouse_warp_controller()->warp_regions_[1]->a_indicator_bounds()); |
| 254 EXPECT_EQ(gfx::Rect(1059, 0, 1, 700), |
| 255 mouse_warp_controller()->warp_regions_[1]->b_indicator_bounds()); |
| 256 |
| 257 event_filter()->HideSharedEdgeIndicator(); |
| 258 }; |
| 259 |
| 218 UpdateDisplay("360x360,700x700,1000x1000"); | 260 UpdateDisplay("360x360,700x700,1000x1000"); |
| 219 aura::Window::Windows root_windows = Shell::GetAllRootWindows(); | 261 run_test(); |
| 220 | 262 |
| 221 // Left most display | 263 UpdateDisplay("360x360,700x700,1000x1000"); |
| 222 event_filter()->ShowSharedEdgeIndicator(root_windows[0]); | 264 Shell::GetInstance()->window_tree_host_manager()->SwapPrimaryDisplayForTest(); |
| 223 ASSERT_EQ(2U, mouse_warp_controller()->warp_regions_.size()); | 265 run_test(); |
| 224 EXPECT_EQ(gfx::Rect(359, 16, 1, 344), | |
| 225 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds); | |
| 226 EXPECT_EQ(gfx::Rect(360, 0, 1, 360), | |
| 227 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds); | |
| 228 EXPECT_EQ(gfx::Rect(1060, 16, 1, 684), | |
| 229 mouse_warp_controller()->warp_regions_[1]->a_indicator_bounds); | |
| 230 EXPECT_EQ(gfx::Rect(1059, 0, 1, 700), | |
| 231 mouse_warp_controller()->warp_regions_[1]->b_indicator_bounds); | |
| 232 | |
| 233 // Middle display | |
| 234 event_filter()->ShowSharedEdgeIndicator(root_windows[1]); | |
| 235 ASSERT_EQ(2U, mouse_warp_controller()->warp_regions_.size()); | |
| 236 EXPECT_EQ(gfx::Rect(360, 16, 1, 344), | |
| 237 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds); | |
| 238 EXPECT_EQ(gfx::Rect(359, 0, 1, 360), | |
| 239 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds); | |
| 240 EXPECT_EQ(gfx::Rect(1059, 16, 1, 684), | |
| 241 mouse_warp_controller()->warp_regions_[1]->a_indicator_bounds); | |
| 242 EXPECT_EQ(gfx::Rect(1060, 0, 1, 700), | |
| 243 mouse_warp_controller()->warp_regions_[1]->b_indicator_bounds); | |
| 244 | |
| 245 // Right most display | |
| 246 event_filter()->ShowSharedEdgeIndicator(root_windows[2]); | |
| 247 ASSERT_EQ(2U, mouse_warp_controller()->warp_regions_.size()); | |
| 248 EXPECT_EQ(gfx::Rect(360, 16, 1, 344), | |
| 249 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds); | |
| 250 EXPECT_EQ(gfx::Rect(359, 0, 1, 360), | |
| 251 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds); | |
| 252 EXPECT_EQ(gfx::Rect(1060, 16, 1, 684), | |
| 253 mouse_warp_controller()->warp_regions_[1]->a_indicator_bounds); | |
| 254 EXPECT_EQ(gfx::Rect(1059, 0, 1, 700), | |
| 255 mouse_warp_controller()->warp_regions_[1]->b_indicator_bounds); | |
| 256 | |
| 257 event_filter()->HideSharedEdgeIndicator(); | |
| 258 } | 266 } |
| 259 | 267 |
| 260 } // namespace ash | 268 } // namespace ash |
| OLD | NEW |