Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(774)

Side by Side Diff: ash/display/mirror_window_controller_unittest.cc

Issue 2355063002: Separate ash::test::DisplayManagerTestApi from ash (Closed)
Patch Set: review comment Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 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/mirror_window_controller.h" 5 #include "ash/display/mirror_window_controller.h"
6 6
7 #include "ash/display/display_manager.h" 7 #include "ash/display/display_manager.h"
8 #include "ash/display/window_tree_host_manager.h" 8 #include "ash/display/window_tree_host_manager.h"
9 #include "ash/screen_util.h"
10 #include "ash/shell.h" 9 #include "ash/shell.h"
11 #include "ash/test/ash_test_base.h" 10 #include "ash/test/ash_test_base.h"
12 #include "ash/test/cursor_manager_test_api.h" 11 #include "ash/test/cursor_manager_test_api.h"
13 #include "ash/test/display_manager_test_api.h" 12 #include "ash/test/display_manager_test_api.h"
14 #include "ash/test/mirror_window_test_api.h" 13 #include "ash/test/mirror_window_test_api.h"
15 #include "base/command_line.h" 14 #include "base/command_line.h"
16 #include "base/strings/stringprintf.h" 15 #include "base/strings/stringprintf.h"
17 #include "ui/aura/env.h" 16 #include "ui/aura/env.h"
18 #include "ui/aura/test/test_window_delegate.h" 17 #include "ui/aura/test/test_window_delegate.h"
19 #include "ui/aura/test/test_windows.h" 18 #include "ui/aura/test/test_windows.h"
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
70 #define MAYBE_MirrorCursorRotate MirrorCursorRotate 69 #define MAYBE_MirrorCursorRotate MirrorCursorRotate
71 #define MAYBE_DockMode DockMode 70 #define MAYBE_DockMode DockMode
72 #define MAYBE_MirrorOnBoot MirrorOnBoot 71 #define MAYBE_MirrorOnBoot MirrorOnBoot
73 #endif 72 #endif
74 73
75 TEST_F(MirrorWindowControllerTest, MAYBE_MirrorCursorBasic) { 74 TEST_F(MirrorWindowControllerTest, MAYBE_MirrorCursorBasic) {
76 test::MirrorWindowTestApi test_api; 75 test::MirrorWindowTestApi test_api;
77 aura::test::TestWindowDelegate test_window_delegate; 76 aura::test::TestWindowDelegate test_window_delegate;
78 test_window_delegate.set_window_component(HTTOP); 77 test_window_delegate.set_window_component(HTTOP);
79 78
80 DisplayManager* display_manager = Shell::GetInstance()->display_manager(); 79 display_manager()->SetMultiDisplayMode(DisplayManager::MIRRORING);
81 display_manager->SetMultiDisplayMode(DisplayManager::MIRRORING);
82 UpdateDisplay("400x400,400x400"); 80 UpdateDisplay("400x400,400x400");
83 aura::Window* root = Shell::GetInstance()->GetPrimaryRootWindow(); 81 aura::Window* root = Shell::GetInstance()->GetPrimaryRootWindow();
84 std::unique_ptr<aura::Window> window(aura::test::CreateTestWindowWithDelegate( 82 std::unique_ptr<aura::Window> window(aura::test::CreateTestWindowWithDelegate(
85 &test_window_delegate, 0, gfx::Rect(50, 50, 100, 100), root)); 83 &test_window_delegate, 0, gfx::Rect(50, 50, 100, 100), root));
86 window->Show(); 84 window->Show();
87 window->SetName("foo"); 85 window->SetName("foo");
88 86
89 EXPECT_TRUE(test_api.GetCursorWindow()); 87 EXPECT_TRUE(test_api.GetCursorWindow());
90 EXPECT_EQ("50,50 100x100", window->bounds().ToString()); 88 EXPECT_EQ("50,50 100x100", window->bounds().ToString());
91 89
(...skipping 25 matching lines...) Expand all
117 test_api.GetCursorHotPointLocationInRootWindow().ToString()); 115 test_api.GetCursorHotPointLocationInRootWindow().ToString());
118 EXPECT_EQ(ui::kCursorNull, test_api.GetCurrentCursorType()); 116 EXPECT_EQ(ui::kCursorNull, test_api.GetCurrentCursorType());
119 EXPECT_TRUE(test_api.GetCursorWindow()->IsVisible()); 117 EXPECT_TRUE(test_api.GetCursorWindow()->IsVisible());
120 } 118 }
121 119
122 TEST_F(MirrorWindowControllerTest, MAYBE_MirrorCursorRotate) { 120 TEST_F(MirrorWindowControllerTest, MAYBE_MirrorCursorRotate) {
123 test::MirrorWindowTestApi test_api; 121 test::MirrorWindowTestApi test_api;
124 aura::test::TestWindowDelegate test_window_delegate; 122 aura::test::TestWindowDelegate test_window_delegate;
125 test_window_delegate.set_window_component(HTTOP); 123 test_window_delegate.set_window_component(HTTOP);
126 124
127 DisplayManager* display_manager = Shell::GetInstance()->display_manager(); 125 display_manager()->SetMultiDisplayMode(DisplayManager::MIRRORING);
128 display_manager->SetMultiDisplayMode(DisplayManager::MIRRORING);
129 UpdateDisplay("400x400,400x400"); 126 UpdateDisplay("400x400,400x400");
130 aura::Window* root = Shell::GetInstance()->GetPrimaryRootWindow(); 127 aura::Window* root = Shell::GetInstance()->GetPrimaryRootWindow();
131 std::unique_ptr<aura::Window> window(aura::test::CreateTestWindowWithDelegate( 128 std::unique_ptr<aura::Window> window(aura::test::CreateTestWindowWithDelegate(
132 &test_window_delegate, 0, gfx::Rect(50, 50, 100, 100), root)); 129 &test_window_delegate, 0, gfx::Rect(50, 50, 100, 100), root));
133 window->Show(); 130 window->Show();
134 window->SetName("foo"); 131 window->SetName("foo");
135 132
136 EXPECT_TRUE(test_api.GetCursorWindow()); 133 EXPECT_TRUE(test_api.GetCursorWindow());
137 EXPECT_EQ("50,50 100x100", window->bounds().ToString()); 134 EXPECT_EQ("50,50 100x100", window->bounds().ToString());
138 135
(...skipping 30 matching lines...) Expand all
169 EXPECT_EQ("12,14", test_api.GetCursorHotPoint().ToString()); 166 EXPECT_EQ("12,14", test_api.GetCursorHotPoint().ToString());
170 EXPECT_EQ("100,300", 167 EXPECT_EQ("100,300",
171 test_api.GetCursorHotPointLocationInRootWindow().ToString()); 168 test_api.GetCursorHotPointLocationInRootWindow().ToString());
172 } 169 }
173 170
174 // Make sure that the mirror cursor's location is same as 171 // Make sure that the mirror cursor's location is same as
175 // the source display's host location in the mirror root window's 172 // the source display's host location in the mirror root window's
176 // coordinates. 173 // coordinates.
177 TEST_F(MirrorWindowControllerTest, MAYBE_MirrorCursorLocations) { 174 TEST_F(MirrorWindowControllerTest, MAYBE_MirrorCursorLocations) {
178 test::MirrorWindowTestApi test_api; 175 test::MirrorWindowTestApi test_api;
179 DisplayManager* display_manager = Shell::GetInstance()->display_manager(); 176 display_manager()->SetMultiDisplayMode(DisplayManager::MIRRORING);
180 display_manager->SetMultiDisplayMode(DisplayManager::MIRRORING);
181 177
182 // Test with device scale factor. 178 // Test with device scale factor.
183 UpdateDisplay("400x600*2,400x600"); 179 UpdateDisplay("400x600*2,400x600");
184 180
185 aura::Window* root = Shell::GetInstance()->GetPrimaryRootWindow(); 181 aura::Window* root = Shell::GetInstance()->GetPrimaryRootWindow();
186 ui::test::EventGenerator generator(root); 182 ui::test::EventGenerator generator(root);
187 generator.MoveMouseToInHost(10, 20); 183 generator.MoveMouseToInHost(10, 20);
188 184
189 EXPECT_EQ("7,7", test_api.GetCursorHotPoint().ToString()); 185 EXPECT_EQ("7,7", test_api.GetCursorHotPoint().ToString());
190 EXPECT_EQ("10,20", 186 EXPECT_EQ("10,20",
(...skipping 19 matching lines...) Expand all
210 // Test the behavior of the cursor when entering software mirror mode swaps the 206 // Test the behavior of the cursor when entering software mirror mode swaps the
211 // cursor's display. 207 // cursor's display.
212 TEST_F(MirrorWindowControllerTest, MAYBE_MirrorCursorMoveOnEnter) { 208 TEST_F(MirrorWindowControllerTest, MAYBE_MirrorCursorMoveOnEnter) {
213 aura::Env* env = aura::Env::GetInstance(); 209 aura::Env* env = aura::Env::GetInstance();
214 Shell* shell = Shell::GetInstance(); 210 Shell* shell = Shell::GetInstance();
215 WindowTreeHostManager* window_tree_host_manager = 211 WindowTreeHostManager* window_tree_host_manager =
216 shell->window_tree_host_manager(); 212 shell->window_tree_host_manager();
217 213
218 UpdateDisplay("400x400*2/r,400x400"); 214 UpdateDisplay("400x400*2/r,400x400");
219 int64_t primary_display_id = window_tree_host_manager->GetPrimaryDisplayId(); 215 int64_t primary_display_id = window_tree_host_manager->GetPrimaryDisplayId();
220 int64_t secondary_display_id = ScreenUtil::GetSecondaryDisplay().id(); 216 int64_t secondary_display_id = display_manager()->GetSecondaryDisplay().id();
221 test::ScopedSetInternalDisplayId set_internal(primary_display_id); 217 test::ScopedSetInternalDisplayId set_internal(display_manager(),
218 primary_display_id);
222 219
223 // Chrome uses the internal display as the source display for software mirror 220 // Chrome uses the internal display as the source display for software mirror
224 // mode. Move the cursor to the external display. 221 // mode. Move the cursor to the external display.
225 aura::Window* secondary_root_window = 222 aura::Window* secondary_root_window =
226 window_tree_host_manager->GetRootWindowForDisplayId(secondary_display_id); 223 window_tree_host_manager->GetRootWindowForDisplayId(secondary_display_id);
227 secondary_root_window->MoveCursorTo(gfx::Point(100, 200)); 224 secondary_root_window->MoveCursorTo(gfx::Point(100, 200));
228 EXPECT_EQ("300,200", env->last_mouse_location().ToString()); 225 EXPECT_EQ("300,200", env->last_mouse_location().ToString());
229 test::CursorManagerTestApi cursor_test_api(shell->cursor_manager()); 226 test::CursorManagerTestApi cursor_test_api(shell->cursor_manager());
230 EXPECT_EQ(1.0f, cursor_test_api.GetCurrentCursor().device_scale_factor()); 227 EXPECT_EQ(1.0f, cursor_test_api.GetCurrentCursor().device_scale_factor());
231 EXPECT_EQ(display::Display::ROTATE_0, 228 EXPECT_EQ(display::Display::ROTATE_0,
232 cursor_test_api.GetCurrentCursorRotation()); 229 cursor_test_api.GetCurrentCursorRotation());
233 230
234 shell->display_manager()->SetMultiDisplayMode(DisplayManager::MIRRORING); 231 display_manager()->SetMultiDisplayMode(DisplayManager::MIRRORING);
235 UpdateDisplay("400x400*2/r,400x400"); 232 UpdateDisplay("400x400*2/r,400x400");
236 233
237 // Entering mirror mode should have centered the cursor on the primary display 234 // Entering mirror mode should have centered the cursor on the primary display
238 // because the cursor's previous position is out of bounds. 235 // because the cursor's previous position is out of bounds.
239 // Check real cursor's position and properties. 236 // Check real cursor's position and properties.
240 EXPECT_EQ("100,100", env->last_mouse_location().ToString()); 237 EXPECT_EQ("100,100", env->last_mouse_location().ToString());
241 EXPECT_EQ(2.0f, cursor_test_api.GetCurrentCursor().device_scale_factor()); 238 EXPECT_EQ(2.0f, cursor_test_api.GetCurrentCursor().device_scale_factor());
242 EXPECT_EQ(display::Display::ROTATE_90, 239 EXPECT_EQ(display::Display::ROTATE_90,
243 cursor_test_api.GetCurrentCursorRotation()); 240 cursor_test_api.GetCurrentCursorRotation());
244 241
245 // Check mirrored cursor's location. 242 // Check mirrored cursor's location.
246 test::MirrorWindowTestApi test_api; 243 test::MirrorWindowTestApi test_api;
247 // Rotated hot point must be (25-7, 7). 244 // Rotated hot point must be (25-7, 7).
248 EXPECT_EQ("18,7", test_api.GetCursorHotPoint().ToString()); 245 EXPECT_EQ("18,7", test_api.GetCursorHotPoint().ToString());
249 // New coordinates are not (200,200) because (200,200) is not the center of 246 // New coordinates are not (200,200) because (200,200) is not the center of
250 // the display. 247 // the display.
251 EXPECT_EQ("199,200", 248 EXPECT_EQ("199,200",
252 test_api.GetCursorHotPointLocationInRootWindow().ToString()); 249 test_api.GetCursorHotPointLocationInRootWindow().ToString());
253 } 250 }
254 251
255 // Make sure that the compositor based mirroring can switch 252 // Make sure that the compositor based mirroring can switch
256 // from/to dock mode. 253 // from/to dock mode.
257 TEST_F(MirrorWindowControllerTest, MAYBE_DockMode) { 254 TEST_F(MirrorWindowControllerTest, MAYBE_DockMode) {
258 DisplayManager* display_manager = Shell::GetInstance()->display_manager();
259 const int64_t internal_id = 1; 255 const int64_t internal_id = 1;
260 const int64_t external_id = 2; 256 const int64_t external_id = 2;
261 257
262 const display::ManagedDisplayInfo internal_display_info = 258 const display::ManagedDisplayInfo internal_display_info =
263 CreateDisplayInfo(internal_id, gfx::Rect(0, 0, 500, 500)); 259 CreateDisplayInfo(internal_id, gfx::Rect(0, 0, 500, 500));
264 const display::ManagedDisplayInfo external_display_info = 260 const display::ManagedDisplayInfo external_display_info =
265 CreateDisplayInfo(external_id, gfx::Rect(1, 1, 100, 100)); 261 CreateDisplayInfo(external_id, gfx::Rect(1, 1, 100, 100));
266 std::vector<display::ManagedDisplayInfo> display_info_list; 262 std::vector<display::ManagedDisplayInfo> display_info_list;
267 263
268 display_manager->SetMultiDisplayMode(DisplayManager::MIRRORING); 264 display_manager()->SetMultiDisplayMode(DisplayManager::MIRRORING);
269 265
270 // software mirroring. 266 // software mirroring.
271 display_info_list.push_back(internal_display_info); 267 display_info_list.push_back(internal_display_info);
272 display_info_list.push_back(external_display_info); 268 display_info_list.push_back(external_display_info);
273 display_manager->OnNativeDisplaysChanged(display_info_list); 269 display_manager()->OnNativeDisplaysChanged(display_info_list);
274 const int64_t internal_display_id = 270 const int64_t internal_display_id =
275 test::DisplayManagerTestApi().SetFirstDisplayAsInternalDisplay(); 271 test::DisplayManagerTestApi(display_manager())
272 .SetFirstDisplayAsInternalDisplay();
276 EXPECT_EQ(internal_id, internal_display_id); 273 EXPECT_EQ(internal_id, internal_display_id);
277 274
278 EXPECT_EQ(1U, display_manager->GetNumDisplays()); 275 EXPECT_EQ(1U, display_manager()->GetNumDisplays());
279 EXPECT_TRUE(display_manager->IsInMirrorMode()); 276 EXPECT_TRUE(display_manager()->IsInMirrorMode());
280 EXPECT_EQ(external_id, display_manager->mirroring_display_id()); 277 EXPECT_EQ(external_id, display_manager()->mirroring_display_id());
281 278
282 // dock mode. 279 // dock mode.
283 display_info_list.clear(); 280 display_info_list.clear();
284 display_info_list.push_back(external_display_info); 281 display_info_list.push_back(external_display_info);
285 display_manager->SetMultiDisplayMode(DisplayManager::MIRRORING); 282 display_manager()->SetMultiDisplayMode(DisplayManager::MIRRORING);
286 display_manager->OnNativeDisplaysChanged(display_info_list); 283 display_manager()->OnNativeDisplaysChanged(display_info_list);
287 EXPECT_EQ(1U, display_manager->GetNumDisplays()); 284 EXPECT_EQ(1U, display_manager()->GetNumDisplays());
288 EXPECT_FALSE(display_manager->IsInMirrorMode()); 285 EXPECT_FALSE(display_manager()->IsInMirrorMode());
289 286
290 // back to software mirroring. 287 // back to software mirroring.
291 display_info_list.clear(); 288 display_info_list.clear();
292 display_info_list.push_back(internal_display_info); 289 display_info_list.push_back(internal_display_info);
293 display_info_list.push_back(external_display_info); 290 display_info_list.push_back(external_display_info);
294 display_manager->SetMultiDisplayMode(DisplayManager::MIRRORING); 291 display_manager()->SetMultiDisplayMode(DisplayManager::MIRRORING);
295 display_manager->OnNativeDisplaysChanged(display_info_list); 292 display_manager()->OnNativeDisplaysChanged(display_info_list);
296 EXPECT_EQ(1U, display_manager->GetNumDisplays()); 293 EXPECT_EQ(1U, display_manager()->GetNumDisplays());
297 EXPECT_TRUE(display_manager->IsInMirrorMode()); 294 EXPECT_TRUE(display_manager()->IsInMirrorMode());
298 EXPECT_EQ(external_id, display_manager->mirroring_display_id()); 295 EXPECT_EQ(external_id, display_manager()->mirroring_display_id());
299 } 296 }
300 297
301 TEST_F(MirrorOnBootTest, MAYBE_MirrorOnBoot) { 298 TEST_F(MirrorOnBootTest, MAYBE_MirrorOnBoot) {
302 DisplayManager* display_manager = Shell::GetInstance()->display_manager(); 299 EXPECT_TRUE(display_manager()->IsInMirrorMode());
303 EXPECT_TRUE(display_manager->IsInMirrorMode());
304 RunAllPendingInMessageLoop(); 300 RunAllPendingInMessageLoop();
305 test::MirrorWindowTestApi test_api; 301 test::MirrorWindowTestApi test_api;
306 EXPECT_TRUE(test_api.GetHost()); 302 EXPECT_TRUE(test_api.GetHost());
307 } 303 }
308 304
309 } // namespace ash 305 } // namespace ash
OLDNEW
« no previous file with comments | « ash/display/extended_mouse_warp_controller_unittest.cc ('k') | ash/display/mouse_cursor_event_filter.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698