| 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 28 matching lines...) Expand all Loading... |
| 39 if (!SupportsMultipleDisplays()) | 39 if (!SupportsMultipleDisplays()) |
| 40 return; | 40 return; |
| 41 | 41 |
| 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 EXPECT_EQ("359,16 1x344", | 49 |
| 50 mouse_warp_controller()->src_indicator_bounds_.ToString()); | 50 ASSERT_EQ(1U, mouse_warp_controller()->warp_regions_.size()); |
| 51 EXPECT_EQ("360,0 1x360", | 51 EXPECT_EQ( |
| 52 mouse_warp_controller()->dst_indicator_bounds_.ToString()); | 52 "359,16 1x344", |
| 53 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds.ToString()); |
| 54 EXPECT_EQ( |
| 55 "360,0 1x360", |
| 56 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds.ToString()); |
| 53 event_filter()->ShowSharedEdgeIndicator(root_windows[1] /* secondary */); | 57 event_filter()->ShowSharedEdgeIndicator(root_windows[1] /* secondary */); |
| 54 EXPECT_EQ("360,16 1x344", | 58 EXPECT_EQ( |
| 55 mouse_warp_controller()->src_indicator_bounds_.ToString()); | 59 "360,16 1x344", |
| 56 EXPECT_EQ("359,0 1x360", | 60 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds.ToString()); |
| 57 mouse_warp_controller()->dst_indicator_bounds_.ToString()); | 61 EXPECT_EQ( |
| 62 "359,0 1x360", |
| 63 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds.ToString()); |
| 58 | 64 |
| 59 // Move 2nd display downwards a bit. | 65 // Move 2nd display downwards a bit. |
| 60 layout.offset = 5; | 66 layout.offset = 5; |
| 61 display_manager->SetLayoutForCurrentDisplays(layout); | 67 display_manager->SetLayoutForCurrentDisplays(layout); |
| 62 event_filter()->ShowSharedEdgeIndicator(root_windows[0] /* primary */); | 68 event_filter()->ShowSharedEdgeIndicator(root_windows[0] /* primary */); |
| 63 // This is same as before because the 2nd display's y is above | 69 // This is same as before because the 2nd display's y is above |
| 64 // the indicator's x. | 70 // the indicator's x. |
| 65 EXPECT_EQ("359,16 1x344", | 71 ASSERT_EQ(1U, mouse_warp_controller()->warp_regions_.size()); |
| 66 mouse_warp_controller()->src_indicator_bounds_.ToString()); | 72 EXPECT_EQ( |
| 67 EXPECT_EQ("360,5 1x355", | 73 "359,16 1x344", |
| 68 mouse_warp_controller()->dst_indicator_bounds_.ToString()); | 74 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds.ToString()); |
| 75 EXPECT_EQ( |
| 76 "360,5 1x355", |
| 77 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds.ToString()); |
| 69 event_filter()->ShowSharedEdgeIndicator(root_windows[1] /* secondary */); | 78 event_filter()->ShowSharedEdgeIndicator(root_windows[1] /* secondary */); |
| 70 EXPECT_EQ("360,21 1x339", | 79 EXPECT_EQ( |
| 71 mouse_warp_controller()->src_indicator_bounds_.ToString()); | 80 "360,21 1x339", |
| 72 EXPECT_EQ("359,5 1x355", | 81 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds.ToString()); |
| 73 mouse_warp_controller()->dst_indicator_bounds_.ToString()); | 82 EXPECT_EQ( |
| 83 "359,5 1x355", |
| 84 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds.ToString()); |
| 74 | 85 |
| 75 // Move it down further so that the shared edge is shorter than | 86 // Move it down further so that the shared edge is shorter than |
| 76 // minimum hole size (160). | 87 // minimum hole size (160). |
| 77 layout.offset = 200; | 88 layout.offset = 200; |
| 78 display_manager->SetLayoutForCurrentDisplays(layout); | 89 display_manager->SetLayoutForCurrentDisplays(layout); |
| 79 event_filter()->ShowSharedEdgeIndicator(root_windows[0] /* primary */); | 90 event_filter()->ShowSharedEdgeIndicator(root_windows[0] /* primary */); |
| 80 EXPECT_EQ("359,200 1x160", | 91 ASSERT_EQ(1U, mouse_warp_controller()->warp_regions_.size()); |
| 81 mouse_warp_controller()->src_indicator_bounds_.ToString()); | 92 EXPECT_EQ( |
| 82 EXPECT_EQ("360,200 1x160", | 93 "359,200 1x160", |
| 83 mouse_warp_controller()->dst_indicator_bounds_.ToString()); | 94 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds.ToString()); |
| 95 EXPECT_EQ( |
| 96 "360,200 1x160", |
| 97 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds.ToString()); |
| 84 event_filter()->ShowSharedEdgeIndicator(root_windows[1] /* secondary */); | 98 event_filter()->ShowSharedEdgeIndicator(root_windows[1] /* secondary */); |
| 85 EXPECT_EQ("360,200 1x160", | 99 ASSERT_EQ(1U, mouse_warp_controller()->warp_regions_.size()); |
| 86 mouse_warp_controller()->src_indicator_bounds_.ToString()); | 100 EXPECT_EQ( |
| 87 EXPECT_EQ("359,200 1x160", | 101 "360,200 1x160", |
| 88 mouse_warp_controller()->dst_indicator_bounds_.ToString()); | 102 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds.ToString()); |
| 103 EXPECT_EQ( |
| 104 "359,200 1x160", |
| 105 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds.ToString()); |
| 89 | 106 |
| 90 // Now move 2nd display upwards | 107 // Now move 2nd display upwards |
| 91 layout.offset = -5; | 108 layout.offset = -5; |
| 92 display_manager->SetLayoutForCurrentDisplays(layout); | 109 display_manager->SetLayoutForCurrentDisplays(layout); |
| 93 event_filter()->ShowSharedEdgeIndicator(root_windows[0] /* primary */); | 110 event_filter()->ShowSharedEdgeIndicator(root_windows[0] /* primary */); |
| 94 EXPECT_EQ("359,16 1x344", | 111 ASSERT_EQ(1U, mouse_warp_controller()->warp_regions_.size()); |
| 95 mouse_warp_controller()->src_indicator_bounds_.ToString()); | 112 EXPECT_EQ( |
| 96 EXPECT_EQ("360,0 1x360", | 113 "359,16 1x344", |
| 97 mouse_warp_controller()->dst_indicator_bounds_.ToString()); | 114 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds.ToString()); |
| 115 EXPECT_EQ( |
| 116 "360,0 1x360", |
| 117 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds.ToString()); |
| 98 event_filter()->ShowSharedEdgeIndicator(root_windows[1] /* secondary */); | 118 event_filter()->ShowSharedEdgeIndicator(root_windows[1] /* secondary */); |
| 99 // 16 px are reserved on 2nd display from top, so y must be | 119 // 16 px are reserved on 2nd display from top, so y must be |
| 100 // (16 - 5) = 11 | 120 // (16 - 5) = 11 |
| 101 EXPECT_EQ("360,11 1x349", | 121 ASSERT_EQ(1U, mouse_warp_controller()->warp_regions_.size()); |
| 102 mouse_warp_controller()->src_indicator_bounds_.ToString()); | 122 EXPECT_EQ( |
| 103 EXPECT_EQ("359,0 1x360", | 123 "360,11 1x349", |
| 104 mouse_warp_controller()->dst_indicator_bounds_.ToString()); | 124 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds.ToString()); |
| 125 EXPECT_EQ( |
| 126 "359,0 1x360", |
| 127 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds.ToString()); |
| 105 | 128 |
| 106 event_filter()->HideSharedEdgeIndicator(); | 129 event_filter()->HideSharedEdgeIndicator(); |
| 107 } | 130 } |
| 108 | 131 |
| 109 TEST_F(ExtendedMouseWarpControllerTest, IndicatorBoundsTestOnLeft) { | 132 TEST_F(ExtendedMouseWarpControllerTest, IndicatorBoundsTestOnLeft) { |
| 110 if (!SupportsMultipleDisplays()) | 133 if (!SupportsMultipleDisplays()) |
| 111 return; | 134 return; |
| 112 | 135 |
| 113 UpdateDisplay("360x360,700x700"); | 136 UpdateDisplay("360x360,700x700"); |
| 114 aura::Window::Windows root_windows = Shell::GetAllRootWindows(); | 137 aura::Window::Windows root_windows = Shell::GetAllRootWindows(); |
| 115 | 138 |
| 116 DisplayManager* display_manager = Shell::GetInstance()->display_manager(); | 139 DisplayManager* display_manager = Shell::GetInstance()->display_manager(); |
| 117 DisplayLayout layout(DisplayLayout::LEFT, 0); | 140 DisplayLayout layout(DisplayLayout::LEFT, 0); |
| 118 display_manager->SetLayoutForCurrentDisplays(layout); | 141 display_manager->SetLayoutForCurrentDisplays(layout); |
| 119 event_filter()->ShowSharedEdgeIndicator(root_windows[0] /* primary */); | 142 event_filter()->ShowSharedEdgeIndicator(root_windows[0] /* primary */); |
| 120 EXPECT_EQ("0,16 1x344", | 143 ASSERT_EQ(1U, mouse_warp_controller()->warp_regions_.size()); |
| 121 mouse_warp_controller()->src_indicator_bounds_.ToString()); | 144 EXPECT_EQ( |
| 122 EXPECT_EQ("-1,0 1x360", | 145 "0,16 1x344", |
| 123 mouse_warp_controller()->dst_indicator_bounds_.ToString()); | 146 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds.ToString()); |
| 147 EXPECT_EQ( |
| 148 "-1,0 1x360", |
| 149 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds.ToString()); |
| 124 event_filter()->ShowSharedEdgeIndicator(root_windows[1] /* secondary */); | 150 event_filter()->ShowSharedEdgeIndicator(root_windows[1] /* secondary */); |
| 125 EXPECT_EQ("-1,16 1x344", | 151 ASSERT_EQ(1U, mouse_warp_controller()->warp_regions_.size()); |
| 126 mouse_warp_controller()->src_indicator_bounds_.ToString()); | 152 EXPECT_EQ( |
| 127 EXPECT_EQ("0,0 1x360", | 153 "-1,16 1x344", |
| 128 mouse_warp_controller()->dst_indicator_bounds_.ToString()); | 154 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds.ToString()); |
| 155 EXPECT_EQ( |
| 156 "0,0 1x360", |
| 157 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds.ToString()); |
| 129 | 158 |
| 130 layout.offset = 250; | 159 layout.offset = 250; |
| 131 display_manager->SetLayoutForCurrentDisplays(layout); | 160 display_manager->SetLayoutForCurrentDisplays(layout); |
| 132 event_filter()->ShowSharedEdgeIndicator(root_windows[0] /* primary */); | 161 event_filter()->ShowSharedEdgeIndicator(root_windows[0] /* primary */); |
| 133 EXPECT_EQ("0,250 1x110", | 162 ASSERT_EQ(1U, mouse_warp_controller()->warp_regions_.size()); |
| 134 mouse_warp_controller()->src_indicator_bounds_.ToString()); | 163 EXPECT_EQ( |
| 135 EXPECT_EQ("-1,250 1x110", | 164 "0,250 1x110", |
| 136 mouse_warp_controller()->dst_indicator_bounds_.ToString()); | 165 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds.ToString()); |
| 166 EXPECT_EQ( |
| 167 "-1,250 1x110", |
| 168 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds.ToString()); |
| 137 event_filter()->ShowSharedEdgeIndicator(root_windows[1] /* secondary */); | 169 event_filter()->ShowSharedEdgeIndicator(root_windows[1] /* secondary */); |
| 138 EXPECT_EQ("-1,250 1x110", | 170 ASSERT_EQ(1U, mouse_warp_controller()->warp_regions_.size()); |
| 139 mouse_warp_controller()->src_indicator_bounds_.ToString()); | 171 EXPECT_EQ( |
| 140 EXPECT_EQ("0,250 1x110", | 172 "-1,250 1x110", |
| 141 mouse_warp_controller()->dst_indicator_bounds_.ToString()); | 173 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds.ToString()); |
| 174 EXPECT_EQ( |
| 175 "0,250 1x110", |
| 176 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds.ToString()); |
| 142 event_filter()->HideSharedEdgeIndicator(); | 177 event_filter()->HideSharedEdgeIndicator(); |
| 143 } | 178 } |
| 144 | 179 |
| 145 TEST_F(ExtendedMouseWarpControllerTest, IndicatorBoundsTestOnTopBottom) { | 180 TEST_F(ExtendedMouseWarpControllerTest, IndicatorBoundsTestOnTopBottom) { |
| 146 if (!SupportsMultipleDisplays()) | 181 if (!SupportsMultipleDisplays()) |
| 147 return; | 182 return; |
| 148 | 183 |
| 149 UpdateDisplay("360x360,700x700"); | 184 UpdateDisplay("360x360,700x700"); |
| 150 aura::Window::Windows root_windows = Shell::GetAllRootWindows(); | 185 aura::Window::Windows root_windows = Shell::GetAllRootWindows(); |
| 151 | 186 |
| 152 DisplayManager* display_manager = Shell::GetInstance()->display_manager(); | 187 DisplayManager* display_manager = Shell::GetInstance()->display_manager(); |
| 153 DisplayLayout layout(DisplayLayout::TOP, 0); | 188 DisplayLayout layout(DisplayLayout::TOP, 0); |
| 154 display_manager->SetLayoutForCurrentDisplays(layout); | 189 display_manager->SetLayoutForCurrentDisplays(layout); |
| 155 event_filter()->ShowSharedEdgeIndicator(root_windows[0] /* primary */); | 190 event_filter()->ShowSharedEdgeIndicator(root_windows[0] /* primary */); |
| 156 EXPECT_EQ("0,0 360x1", | 191 ASSERT_EQ(1U, mouse_warp_controller()->warp_regions_.size()); |
| 157 mouse_warp_controller()->src_indicator_bounds_.ToString()); | 192 EXPECT_EQ( |
| 158 EXPECT_EQ("0,-1 360x1", | 193 "0,0 360x1", |
| 159 mouse_warp_controller()->dst_indicator_bounds_.ToString()); | 194 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds.ToString()); |
| 195 EXPECT_EQ( |
| 196 "0,-1 360x1", |
| 197 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds.ToString()); |
| 160 event_filter()->ShowSharedEdgeIndicator(root_windows[1] /* secondary */); | 198 event_filter()->ShowSharedEdgeIndicator(root_windows[1] /* secondary */); |
| 161 EXPECT_EQ("0,-1 360x1", | 199 ASSERT_EQ(1U, mouse_warp_controller()->warp_regions_.size()); |
| 162 mouse_warp_controller()->src_indicator_bounds_.ToString()); | 200 EXPECT_EQ( |
| 163 EXPECT_EQ("0,0 360x1", | 201 "0,-1 360x1", |
| 164 mouse_warp_controller()->dst_indicator_bounds_.ToString()); | 202 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds.ToString()); |
| 203 EXPECT_EQ( |
| 204 "0,0 360x1", |
| 205 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds.ToString()); |
| 165 | 206 |
| 166 layout.offset = 250; | 207 layout.offset = 250; |
| 167 display_manager->SetLayoutForCurrentDisplays(layout); | 208 display_manager->SetLayoutForCurrentDisplays(layout); |
| 168 event_filter()->ShowSharedEdgeIndicator(root_windows[0] /* primary */); | 209 event_filter()->ShowSharedEdgeIndicator(root_windows[0] /* primary */); |
| 169 EXPECT_EQ("250,0 110x1", | 210 ASSERT_EQ(1U, mouse_warp_controller()->warp_regions_.size()); |
| 170 mouse_warp_controller()->src_indicator_bounds_.ToString()); | 211 EXPECT_EQ( |
| 171 EXPECT_EQ("250,-1 110x1", | 212 "250,0 110x1", |
| 172 mouse_warp_controller()->dst_indicator_bounds_.ToString()); | 213 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds.ToString()); |
| 214 EXPECT_EQ( |
| 215 "250,-1 110x1", |
| 216 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds.ToString()); |
| 173 event_filter()->ShowSharedEdgeIndicator(root_windows[1] /* secondary */); | 217 event_filter()->ShowSharedEdgeIndicator(root_windows[1] /* secondary */); |
| 174 EXPECT_EQ("250,-1 110x1", | 218 ASSERT_EQ(1U, mouse_warp_controller()->warp_regions_.size()); |
| 175 mouse_warp_controller()->src_indicator_bounds_.ToString()); | 219 EXPECT_EQ( |
| 176 EXPECT_EQ("250,0 110x1", | 220 "250,-1 110x1", |
| 177 mouse_warp_controller()->dst_indicator_bounds_.ToString()); | 221 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds.ToString()); |
| 222 EXPECT_EQ( |
| 223 "250,0 110x1", |
| 224 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds.ToString()); |
| 178 | 225 |
| 179 layout.position = DisplayLayout::BOTTOM; | 226 layout.position = DisplayLayout::BOTTOM; |
| 180 layout.offset = 0; | 227 layout.offset = 0; |
| 181 display_manager->SetLayoutForCurrentDisplays(layout); | 228 display_manager->SetLayoutForCurrentDisplays(layout); |
| 182 event_filter()->ShowSharedEdgeIndicator(root_windows[0] /* primary */); | 229 event_filter()->ShowSharedEdgeIndicator(root_windows[0] /* primary */); |
| 183 EXPECT_EQ("0,359 360x1", | 230 ASSERT_EQ(1U, mouse_warp_controller()->warp_regions_.size()); |
| 184 mouse_warp_controller()->src_indicator_bounds_.ToString()); | 231 EXPECT_EQ( |
| 185 EXPECT_EQ("0,360 360x1", | 232 "0,359 360x1", |
| 186 mouse_warp_controller()->dst_indicator_bounds_.ToString()); | 233 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds.ToString()); |
| 234 EXPECT_EQ( |
| 235 "0,360 360x1", |
| 236 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds.ToString()); |
| 187 event_filter()->ShowSharedEdgeIndicator(root_windows[1] /* secondary */); | 237 event_filter()->ShowSharedEdgeIndicator(root_windows[1] /* secondary */); |
| 188 EXPECT_EQ("0,360 360x1", | 238 ASSERT_EQ(1U, mouse_warp_controller()->warp_regions_.size()); |
| 189 mouse_warp_controller()->src_indicator_bounds_.ToString()); | 239 EXPECT_EQ( |
| 190 EXPECT_EQ("0,359 360x1", | 240 "0,360 360x1", |
| 191 mouse_warp_controller()->dst_indicator_bounds_.ToString()); | 241 mouse_warp_controller()->warp_regions_[0]->a_indicator_bounds.ToString()); |
| 242 EXPECT_EQ( |
| 243 "0,359 360x1", |
| 244 mouse_warp_controller()->warp_regions_[0]->b_indicator_bounds.ToString()); |
| 192 | 245 |
| 193 event_filter()->HideSharedEdgeIndicator(); | 246 event_filter()->HideSharedEdgeIndicator(); |
| 194 } | 247 } |
| 195 | 248 |
| 196 } // namespace ash | 249 } // namespace ash |
| OLD | NEW |