OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/root_window_controller.h" | 5 #include "ash/root_window_controller.h" |
6 | 6 |
7 #include "ash/session_state_delegate.h" | 7 #include "ash/session_state_delegate.h" |
8 #include "ash/shelf/shelf_layout_manager.h" | 8 #include "ash/shelf/shelf_layout_manager.h" |
9 #include "ash/shell.h" | 9 #include "ash/shell.h" |
10 #include "ash/shell_window_ids.h" | 10 #include "ash/shell_window_ids.h" |
(...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
111 gfx::NativeWindow parent) { | 111 gfx::NativeWindow parent) { |
112 views::Widget* widget = | 112 views::Widget* widget = |
113 views::Widget::CreateWindowWithParentAndBounds(new TestDelegate(true), | 113 views::Widget::CreateWindowWithParentAndBounds(new TestDelegate(true), |
114 parent, | 114 parent, |
115 bounds); | 115 bounds); |
116 widget->Show(); | 116 widget->Show(); |
117 return widget; | 117 return widget; |
118 } | 118 } |
119 | 119 |
120 aura::Window* GetModalContainer(aura::Window* root_window) { | 120 aura::Window* GetModalContainer(aura::Window* root_window) { |
121 return Shell::GetContainer( | 121 return Shell::GetContainer(root_window, |
122 root_window, | 122 ash::kShellWindowId_SystemModalContainer); |
123 ash::internal::kShellWindowId_SystemModalContainer); | |
124 } | 123 } |
125 }; | 124 }; |
126 | 125 |
127 TEST_F(RootWindowControllerTest, MoveWindows_Basic) { | 126 TEST_F(RootWindowControllerTest, MoveWindows_Basic) { |
128 if (!SupportsMultipleDisplays()) | 127 if (!SupportsMultipleDisplays()) |
129 return; | 128 return; |
130 // Windows origin should be doubled when moved to the 1st display. | 129 // Windows origin should be doubled when moved to the 1st display. |
131 UpdateDisplay("600x600,300x300"); | 130 UpdateDisplay("600x600,300x300"); |
132 aura::Window::Windows root_windows = Shell::GetAllRootWindows(); | 131 aura::Window::Windows root_windows = Shell::GetAllRootWindows(); |
133 internal::RootWindowController* controller = | 132 RootWindowController* controller = Shell::GetPrimaryRootWindowController(); |
134 Shell::GetPrimaryRootWindowController(); | 133 ShelfLayoutManager* shelf_layout_manager = |
135 internal::ShelfLayoutManager* shelf_layout_manager = | |
136 controller->GetShelfLayoutManager(); | 134 controller->GetShelfLayoutManager(); |
137 shelf_layout_manager->SetAutoHideBehavior( | 135 shelf_layout_manager->SetAutoHideBehavior( |
138 ash::SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS); | 136 ash::SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS); |
139 | 137 |
140 views::Widget* normal = CreateTestWidget(gfx::Rect(650, 10, 100, 100)); | 138 views::Widget* normal = CreateTestWidget(gfx::Rect(650, 10, 100, 100)); |
141 EXPECT_EQ(root_windows[1], normal->GetNativeView()->GetRootWindow()); | 139 EXPECT_EQ(root_windows[1], normal->GetNativeView()->GetRootWindow()); |
142 EXPECT_EQ("650,10 100x100", normal->GetWindowBoundsInScreen().ToString()); | 140 EXPECT_EQ("650,10 100x100", normal->GetWindowBoundsInScreen().ToString()); |
143 EXPECT_EQ("50,10 100x100", | 141 EXPECT_EQ("50,10 100x100", |
144 normal->GetNativeView()->GetBoundsInRootWindow().ToString()); | 142 normal->GetNativeView()->GetBoundsInRootWindow().ToString()); |
145 | 143 |
(...skipping 20 matching lines...) Expand all Loading... |
166 fullscreen->GetNativeView()->GetBoundsInRootWindow().ToString()); | 164 fullscreen->GetNativeView()->GetBoundsInRootWindow().ToString()); |
167 | 165 |
168 views::Widget* unparented_control = new Widget; | 166 views::Widget* unparented_control = new Widget; |
169 Widget::InitParams params; | 167 Widget::InitParams params; |
170 params.bounds = gfx::Rect(650, 10, 100, 100); | 168 params.bounds = gfx::Rect(650, 10, 100, 100); |
171 params.context = CurrentContext(); | 169 params.context = CurrentContext(); |
172 params.type = Widget::InitParams::TYPE_CONTROL; | 170 params.type = Widget::InitParams::TYPE_CONTROL; |
173 unparented_control->Init(params); | 171 unparented_control->Init(params); |
174 EXPECT_EQ(root_windows[1], | 172 EXPECT_EQ(root_windows[1], |
175 unparented_control->GetNativeView()->GetRootWindow()); | 173 unparented_control->GetNativeView()->GetRootWindow()); |
176 EXPECT_EQ(internal::kShellWindowId_UnparentedControlContainer, | 174 EXPECT_EQ(kShellWindowId_UnparentedControlContainer, |
177 unparented_control->GetNativeView()->parent()->id()); | 175 unparented_control->GetNativeView()->parent()->id()); |
178 | 176 |
179 aura::Window* panel = CreateTestWindowInShellWithDelegateAndType( | 177 aura::Window* panel = CreateTestWindowInShellWithDelegateAndType( |
180 NULL, ui::wm::WINDOW_TYPE_PANEL, 0, gfx::Rect(700, 100, 100, 100)); | 178 NULL, ui::wm::WINDOW_TYPE_PANEL, 0, gfx::Rect(700, 100, 100, 100)); |
181 EXPECT_EQ(root_windows[1], panel->GetRootWindow()); | 179 EXPECT_EQ(root_windows[1], panel->GetRootWindow()); |
182 EXPECT_EQ(internal::kShellWindowId_PanelContainer, panel->parent()->id()); | 180 EXPECT_EQ(kShellWindowId_PanelContainer, panel->parent()->id()); |
183 | 181 |
184 // Make sure a window that will delete itself when losing focus | 182 // Make sure a window that will delete itself when losing focus |
185 // will not crash. | 183 // will not crash. |
186 aura::WindowTracker tracker; | 184 aura::WindowTracker tracker; |
187 DeleteOnBlurDelegate delete_on_blur_delegate; | 185 DeleteOnBlurDelegate delete_on_blur_delegate; |
188 aura::Window* d2 = CreateTestWindowInShellWithDelegate( | 186 aura::Window* d2 = CreateTestWindowInShellWithDelegate( |
189 &delete_on_blur_delegate, 0, gfx::Rect(50, 50, 100, 100)); | 187 &delete_on_blur_delegate, 0, gfx::Rect(50, 50, 100, 100)); |
190 delete_on_blur_delegate.SetWindow(d2); | 188 delete_on_blur_delegate.SetWindow(d2); |
191 aura::client::GetFocusClient(root_windows[0])->FocusWindow(d2); | 189 aura::client::GetFocusClient(root_windows[0])->FocusWindow(d2); |
192 tracker.Add(d2); | 190 tracker.Add(d2); |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
241 | 239 |
242 fullscreen->SetFullscreen(false); | 240 fullscreen->SetFullscreen(false); |
243 EXPECT_EQ("500,20 100x100", | 241 EXPECT_EQ("500,20 100x100", |
244 fullscreen->GetWindowBoundsInScreen().ToString()); | 242 fullscreen->GetWindowBoundsInScreen().ToString()); |
245 EXPECT_EQ("500,20 100x100", | 243 EXPECT_EQ("500,20 100x100", |
246 fullscreen->GetNativeView()->GetBoundsInRootWindow().ToString()); | 244 fullscreen->GetNativeView()->GetBoundsInRootWindow().ToString()); |
247 | 245 |
248 // Test if the unparented widget has moved. | 246 // Test if the unparented widget has moved. |
249 EXPECT_EQ(root_windows[0], | 247 EXPECT_EQ(root_windows[0], |
250 unparented_control->GetNativeView()->GetRootWindow()); | 248 unparented_control->GetNativeView()->GetRootWindow()); |
251 EXPECT_EQ(internal::kShellWindowId_UnparentedControlContainer, | 249 EXPECT_EQ(kShellWindowId_UnparentedControlContainer, |
252 unparented_control->GetNativeView()->parent()->id()); | 250 unparented_control->GetNativeView()->parent()->id()); |
253 | 251 |
254 // Test if the panel has moved. | 252 // Test if the panel has moved. |
255 EXPECT_EQ(root_windows[0], panel->GetRootWindow()); | 253 EXPECT_EQ(root_windows[0], panel->GetRootWindow()); |
256 EXPECT_EQ(internal::kShellWindowId_PanelContainer, panel->parent()->id()); | 254 EXPECT_EQ(kShellWindowId_PanelContainer, panel->parent()->id()); |
257 } | 255 } |
258 | 256 |
259 TEST_F(RootWindowControllerTest, MoveWindows_Modal) { | 257 TEST_F(RootWindowControllerTest, MoveWindows_Modal) { |
260 if (!SupportsMultipleDisplays()) | 258 if (!SupportsMultipleDisplays()) |
261 return; | 259 return; |
262 | 260 |
263 UpdateDisplay("500x500,500x500"); | 261 UpdateDisplay("500x500,500x500"); |
264 | 262 |
265 aura::Window::Windows root_windows = Shell::GetAllRootWindows(); | 263 aura::Window::Windows root_windows = Shell::GetAllRootWindows(); |
266 // Emulate virtual screen coordinate system. | 264 // Emulate virtual screen coordinate system. |
(...skipping 17 matching lines...) Expand all Loading... |
284 UpdateDisplay("500x500"); | 282 UpdateDisplay("500x500"); |
285 EXPECT_EQ(root_windows[0], modal->GetNativeView()->GetRootWindow()); | 283 EXPECT_EQ(root_windows[0], modal->GetNativeView()->GetRootWindow()); |
286 EXPECT_TRUE(wm::IsActiveWindow(modal->GetNativeView())); | 284 EXPECT_TRUE(wm::IsActiveWindow(modal->GetNativeView())); |
287 generator_1st.ClickLeftButton(); | 285 generator_1st.ClickLeftButton(); |
288 EXPECT_TRUE(wm::IsActiveWindow(modal->GetNativeView())); | 286 EXPECT_TRUE(wm::IsActiveWindow(modal->GetNativeView())); |
289 } | 287 } |
290 | 288 |
291 TEST_F(RootWindowControllerTest, ModalContainer) { | 289 TEST_F(RootWindowControllerTest, ModalContainer) { |
292 UpdateDisplay("600x600"); | 290 UpdateDisplay("600x600"); |
293 Shell* shell = Shell::GetInstance(); | 291 Shell* shell = Shell::GetInstance(); |
294 internal::RootWindowController* controller = | 292 RootWindowController* controller = shell->GetPrimaryRootWindowController(); |
295 shell->GetPrimaryRootWindowController(); | |
296 EXPECT_EQ(user::LOGGED_IN_USER, | 293 EXPECT_EQ(user::LOGGED_IN_USER, |
297 shell->system_tray_delegate()->GetUserLoginStatus()); | 294 shell->system_tray_delegate()->GetUserLoginStatus()); |
298 EXPECT_EQ(Shell::GetContainer(controller->root_window(), | 295 EXPECT_EQ(Shell::GetContainer(controller->root_window(), |
299 internal::kShellWindowId_SystemModalContainer)->layout_manager(), | 296 kShellWindowId_SystemModalContainer) |
300 controller->GetSystemModalLayoutManager(NULL)); | 297 ->layout_manager(), |
| 298 controller->GetSystemModalLayoutManager(NULL)); |
301 | 299 |
302 views::Widget* session_modal_widget = | 300 views::Widget* session_modal_widget = |
303 CreateModalWidget(gfx::Rect(300, 10, 100, 100)); | 301 CreateModalWidget(gfx::Rect(300, 10, 100, 100)); |
304 EXPECT_EQ(Shell::GetContainer(controller->root_window(), | 302 EXPECT_EQ(Shell::GetContainer(controller->root_window(), |
305 internal::kShellWindowId_SystemModalContainer)->layout_manager(), | 303 kShellWindowId_SystemModalContainer) |
306 controller->GetSystemModalLayoutManager( | 304 ->layout_manager(), |
307 session_modal_widget->GetNativeView())); | 305 controller->GetSystemModalLayoutManager( |
| 306 session_modal_widget->GetNativeView())); |
308 | 307 |
309 shell->session_state_delegate()->LockScreen(); | 308 shell->session_state_delegate()->LockScreen(); |
310 EXPECT_EQ(user::LOGGED_IN_LOCKED, | 309 EXPECT_EQ(user::LOGGED_IN_LOCKED, |
311 shell->system_tray_delegate()->GetUserLoginStatus()); | 310 shell->system_tray_delegate()->GetUserLoginStatus()); |
312 EXPECT_EQ(Shell::GetContainer(controller->root_window(), | 311 EXPECT_EQ(Shell::GetContainer(controller->root_window(), |
313 internal::kShellWindowId_LockSystemModalContainer)->layout_manager(), | 312 kShellWindowId_LockSystemModalContainer) |
314 controller->GetSystemModalLayoutManager(NULL)); | 313 ->layout_manager(), |
| 314 controller->GetSystemModalLayoutManager(NULL)); |
315 | 315 |
316 aura::Window* lock_container = | 316 aura::Window* lock_container = Shell::GetContainer( |
317 Shell::GetContainer(controller->root_window(), | 317 controller->root_window(), kShellWindowId_LockScreenContainer); |
318 internal::kShellWindowId_LockScreenContainer); | |
319 views::Widget* lock_modal_widget = | 318 views::Widget* lock_modal_widget = |
320 CreateModalWidgetWithParent(gfx::Rect(300, 10, 100, 100), lock_container); | 319 CreateModalWidgetWithParent(gfx::Rect(300, 10, 100, 100), lock_container); |
321 EXPECT_EQ(Shell::GetContainer(controller->root_window(), | 320 EXPECT_EQ(Shell::GetContainer(controller->root_window(), |
322 internal::kShellWindowId_LockSystemModalContainer)->layout_manager(), | 321 kShellWindowId_LockSystemModalContainer) |
323 controller->GetSystemModalLayoutManager( | 322 ->layout_manager(), |
324 lock_modal_widget->GetNativeView())); | 323 controller->GetSystemModalLayoutManager( |
| 324 lock_modal_widget->GetNativeView())); |
325 EXPECT_EQ(Shell::GetContainer(controller->root_window(), | 325 EXPECT_EQ(Shell::GetContainer(controller->root_window(), |
326 internal::kShellWindowId_SystemModalContainer)->layout_manager(), | 326 kShellWindowId_SystemModalContainer) |
| 327 ->layout_manager(), |
327 controller->GetSystemModalLayoutManager( | 328 controller->GetSystemModalLayoutManager( |
328 session_modal_widget->GetNativeView())); | 329 session_modal_widget->GetNativeView())); |
329 | 330 |
330 shell->session_state_delegate()->UnlockScreen(); | 331 shell->session_state_delegate()->UnlockScreen(); |
331 } | 332 } |
332 | 333 |
333 TEST_F(RootWindowControllerTest, ModalContainerNotLoggedInLoggedIn) { | 334 TEST_F(RootWindowControllerTest, ModalContainerNotLoggedInLoggedIn) { |
334 UpdateDisplay("600x600"); | 335 UpdateDisplay("600x600"); |
335 Shell* shell = Shell::GetInstance(); | 336 Shell* shell = Shell::GetInstance(); |
336 | 337 |
337 // Configure login screen environment. | 338 // Configure login screen environment. |
338 SetUserLoggedIn(false); | 339 SetUserLoggedIn(false); |
339 EXPECT_EQ(user::LOGGED_IN_NONE, | 340 EXPECT_EQ(user::LOGGED_IN_NONE, |
340 shell->system_tray_delegate()->GetUserLoginStatus()); | 341 shell->system_tray_delegate()->GetUserLoginStatus()); |
341 EXPECT_EQ(0, shell->session_state_delegate()->NumberOfLoggedInUsers()); | 342 EXPECT_EQ(0, shell->session_state_delegate()->NumberOfLoggedInUsers()); |
342 EXPECT_FALSE(shell->session_state_delegate()->IsActiveUserSessionStarted()); | 343 EXPECT_FALSE(shell->session_state_delegate()->IsActiveUserSessionStarted()); |
343 | 344 |
344 internal::RootWindowController* controller = | 345 RootWindowController* controller = shell->GetPrimaryRootWindowController(); |
345 shell->GetPrimaryRootWindowController(); | |
346 EXPECT_EQ(Shell::GetContainer(controller->root_window(), | 346 EXPECT_EQ(Shell::GetContainer(controller->root_window(), |
347 internal::kShellWindowId_LockSystemModalContainer)->layout_manager(), | 347 kShellWindowId_LockSystemModalContainer) |
348 controller->GetSystemModalLayoutManager(NULL)); | 348 ->layout_manager(), |
| 349 controller->GetSystemModalLayoutManager(NULL)); |
349 | 350 |
350 aura::Window* lock_container = | 351 aura::Window* lock_container = Shell::GetContainer( |
351 Shell::GetContainer(controller->root_window(), | 352 controller->root_window(), kShellWindowId_LockScreenContainer); |
352 internal::kShellWindowId_LockScreenContainer); | |
353 views::Widget* login_modal_widget = | 353 views::Widget* login_modal_widget = |
354 CreateModalWidgetWithParent(gfx::Rect(300, 10, 100, 100), lock_container); | 354 CreateModalWidgetWithParent(gfx::Rect(300, 10, 100, 100), lock_container); |
355 EXPECT_EQ(Shell::GetContainer(controller->root_window(), | 355 EXPECT_EQ(Shell::GetContainer(controller->root_window(), |
356 internal::kShellWindowId_LockSystemModalContainer)->layout_manager(), | 356 kShellWindowId_LockSystemModalContainer) |
357 controller->GetSystemModalLayoutManager( | 357 ->layout_manager(), |
358 login_modal_widget->GetNativeView())); | 358 controller->GetSystemModalLayoutManager( |
| 359 login_modal_widget->GetNativeView())); |
359 login_modal_widget->Close(); | 360 login_modal_widget->Close(); |
360 | 361 |
361 // Configure user session environment. | 362 // Configure user session environment. |
362 SetUserLoggedIn(true); | 363 SetUserLoggedIn(true); |
363 SetSessionStarted(true); | 364 SetSessionStarted(true); |
364 EXPECT_EQ(user::LOGGED_IN_USER, | 365 EXPECT_EQ(user::LOGGED_IN_USER, |
365 shell->system_tray_delegate()->GetUserLoginStatus()); | 366 shell->system_tray_delegate()->GetUserLoginStatus()); |
366 EXPECT_EQ(1, shell->session_state_delegate()->NumberOfLoggedInUsers()); | 367 EXPECT_EQ(1, shell->session_state_delegate()->NumberOfLoggedInUsers()); |
367 EXPECT_TRUE(shell->session_state_delegate()->IsActiveUserSessionStarted()); | 368 EXPECT_TRUE(shell->session_state_delegate()->IsActiveUserSessionStarted()); |
368 EXPECT_EQ(Shell::GetContainer(controller->root_window(), | 369 EXPECT_EQ(Shell::GetContainer(controller->root_window(), |
369 internal::kShellWindowId_SystemModalContainer)->layout_manager(), | 370 kShellWindowId_SystemModalContainer) |
370 controller->GetSystemModalLayoutManager(NULL)); | 371 ->layout_manager(), |
| 372 controller->GetSystemModalLayoutManager(NULL)); |
371 | 373 |
372 views::Widget* session_modal_widget = | 374 views::Widget* session_modal_widget = |
373 CreateModalWidget(gfx::Rect(300, 10, 100, 100)); | 375 CreateModalWidget(gfx::Rect(300, 10, 100, 100)); |
374 EXPECT_EQ(Shell::GetContainer(controller->root_window(), | 376 EXPECT_EQ(Shell::GetContainer(controller->root_window(), |
375 internal::kShellWindowId_SystemModalContainer)->layout_manager(), | 377 kShellWindowId_SystemModalContainer) |
376 controller->GetSystemModalLayoutManager( | 378 ->layout_manager(), |
377 session_modal_widget->GetNativeView())); | 379 controller->GetSystemModalLayoutManager( |
| 380 session_modal_widget->GetNativeView())); |
378 } | 381 } |
379 | 382 |
380 TEST_F(RootWindowControllerTest, ModalContainerBlockedSession) { | 383 TEST_F(RootWindowControllerTest, ModalContainerBlockedSession) { |
381 UpdateDisplay("600x600"); | 384 UpdateDisplay("600x600"); |
382 Shell* shell = Shell::GetInstance(); | 385 Shell* shell = Shell::GetInstance(); |
383 internal::RootWindowController* controller = | 386 RootWindowController* controller = shell->GetPrimaryRootWindowController(); |
384 shell->GetPrimaryRootWindowController(); | 387 aura::Window* lock_container = Shell::GetContainer( |
385 aura::Window* lock_container = | 388 controller->root_window(), kShellWindowId_LockScreenContainer); |
386 Shell::GetContainer(controller->root_window(), | |
387 internal::kShellWindowId_LockScreenContainer); | |
388 for (int block_reason = FIRST_BLOCK_REASON; | 389 for (int block_reason = FIRST_BLOCK_REASON; |
389 block_reason < NUMBER_OF_BLOCK_REASONS; | 390 block_reason < NUMBER_OF_BLOCK_REASONS; |
390 ++block_reason) { | 391 ++block_reason) { |
391 views::Widget* session_modal_widget = | 392 views::Widget* session_modal_widget = |
392 CreateModalWidget(gfx::Rect(300, 10, 100, 100)); | 393 CreateModalWidget(gfx::Rect(300, 10, 100, 100)); |
393 EXPECT_EQ(Shell::GetContainer(controller->root_window(), | 394 EXPECT_EQ(Shell::GetContainer(controller->root_window(), |
394 internal::kShellWindowId_SystemModalContainer)->layout_manager(), | 395 kShellWindowId_SystemModalContainer) |
395 controller->GetSystemModalLayoutManager( | 396 ->layout_manager(), |
396 session_modal_widget->GetNativeView())); | 397 controller->GetSystemModalLayoutManager( |
| 398 session_modal_widget->GetNativeView())); |
397 EXPECT_EQ(Shell::GetContainer(controller->root_window(), | 399 EXPECT_EQ(Shell::GetContainer(controller->root_window(), |
398 internal::kShellWindowId_SystemModalContainer)->layout_manager(), | 400 kShellWindowId_SystemModalContainer) |
399 controller->GetSystemModalLayoutManager(NULL)); | 401 ->layout_manager(), |
| 402 controller->GetSystemModalLayoutManager(NULL)); |
400 session_modal_widget->Close(); | 403 session_modal_widget->Close(); |
401 | 404 |
402 BlockUserSession(static_cast<UserSessionBlockReason>(block_reason)); | 405 BlockUserSession(static_cast<UserSessionBlockReason>(block_reason)); |
403 | 406 |
404 EXPECT_EQ(Shell::GetContainer(controller->root_window(), | 407 EXPECT_EQ(Shell::GetContainer(controller->root_window(), |
405 internal::kShellWindowId_LockSystemModalContainer)->layout_manager(), | 408 kShellWindowId_LockSystemModalContainer) |
406 controller->GetSystemModalLayoutManager(NULL)); | 409 ->layout_manager(), |
| 410 controller->GetSystemModalLayoutManager(NULL)); |
407 | 411 |
408 views::Widget* lock_modal_widget = | 412 views::Widget* lock_modal_widget = |
409 CreateModalWidgetWithParent(gfx::Rect(300, 10, 100, 100), | 413 CreateModalWidgetWithParent(gfx::Rect(300, 10, 100, 100), |
410 lock_container); | 414 lock_container); |
411 EXPECT_EQ(Shell::GetContainer(controller->root_window(), | 415 EXPECT_EQ(Shell::GetContainer(controller->root_window(), |
412 internal::kShellWindowId_LockSystemModalContainer)->layout_manager(), | 416 kShellWindowId_LockSystemModalContainer) |
| 417 ->layout_manager(), |
413 controller->GetSystemModalLayoutManager( | 418 controller->GetSystemModalLayoutManager( |
414 lock_modal_widget->GetNativeView())); | 419 lock_modal_widget->GetNativeView())); |
415 | 420 |
416 session_modal_widget = | 421 session_modal_widget = |
417 CreateModalWidget(gfx::Rect(300, 10, 100, 100)); | 422 CreateModalWidget(gfx::Rect(300, 10, 100, 100)); |
418 EXPECT_EQ(Shell::GetContainer(controller->root_window(), | 423 EXPECT_EQ(Shell::GetContainer(controller->root_window(), |
419 internal::kShellWindowId_SystemModalContainer)->layout_manager(), | 424 kShellWindowId_SystemModalContainer) |
420 controller->GetSystemModalLayoutManager( | 425 ->layout_manager(), |
421 session_modal_widget->GetNativeView())); | 426 controller->GetSystemModalLayoutManager( |
| 427 session_modal_widget->GetNativeView())); |
422 session_modal_widget->Close(); | 428 session_modal_widget->Close(); |
423 | 429 |
424 lock_modal_widget->Close(); | 430 lock_modal_widget->Close(); |
425 UnblockUserSession(); | 431 UnblockUserSession(); |
426 } | 432 } |
427 } | 433 } |
428 | 434 |
429 TEST_F(RootWindowControllerTest, GetWindowForFullscreenMode) { | 435 TEST_F(RootWindowControllerTest, GetWindowForFullscreenMode) { |
430 UpdateDisplay("600x600"); | 436 UpdateDisplay("600x600"); |
431 internal::RootWindowController* controller = | 437 RootWindowController* controller = |
432 Shell::GetInstance()->GetPrimaryRootWindowController(); | 438 Shell::GetInstance()->GetPrimaryRootWindowController(); |
433 | 439 |
434 Widget* w1 = CreateTestWidget(gfx::Rect(0, 0, 100, 100)); | 440 Widget* w1 = CreateTestWidget(gfx::Rect(0, 0, 100, 100)); |
435 w1->Maximize(); | 441 w1->Maximize(); |
436 Widget* w2 = CreateTestWidget(gfx::Rect(0, 0, 100, 100)); | 442 Widget* w2 = CreateTestWidget(gfx::Rect(0, 0, 100, 100)); |
437 w2->SetFullscreen(true); | 443 w2->SetFullscreen(true); |
438 // |w3| is a transient child of |w2|. | 444 // |w3| is a transient child of |w2|. |
439 Widget* w3 = Widget::CreateWindowWithParentAndBounds(NULL, | 445 Widget* w3 = Widget::CreateWindowWithParentAndBounds(NULL, |
440 w2->GetNativeWindow(), gfx::Rect(0, 0, 100, 100)); | 446 w2->GetNativeWindow(), gfx::Rect(0, 0, 100, 100)); |
441 | 447 |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
493 w3->Activate(); | 499 w3->Activate(); |
494 EXPECT_EQ(w2->GetNativeWindow(), | 500 EXPECT_EQ(w2->GetNativeWindow(), |
495 controllers[0]->GetWindowForFullscreenMode()); | 501 controllers[0]->GetWindowForFullscreenMode()); |
496 EXPECT_EQ(NULL, controllers[1]->GetWindowForFullscreenMode()); | 502 EXPECT_EQ(NULL, controllers[1]->GetWindowForFullscreenMode()); |
497 } | 503 } |
498 | 504 |
499 // Test that user session window can't be focused if user session blocked by | 505 // Test that user session window can't be focused if user session blocked by |
500 // some overlapping UI. | 506 // some overlapping UI. |
501 TEST_F(RootWindowControllerTest, FocusBlockedWindow) { | 507 TEST_F(RootWindowControllerTest, FocusBlockedWindow) { |
502 UpdateDisplay("600x600"); | 508 UpdateDisplay("600x600"); |
503 internal::RootWindowController* controller = | 509 RootWindowController* controller = |
504 Shell::GetInstance()->GetPrimaryRootWindowController(); | 510 Shell::GetInstance()->GetPrimaryRootWindowController(); |
505 aura::Window* lock_container = | 511 aura::Window* lock_container = Shell::GetContainer( |
506 Shell::GetContainer(controller->root_window(), | 512 controller->root_window(), kShellWindowId_LockScreenContainer); |
507 internal::kShellWindowId_LockScreenContainer); | |
508 aura::Window* lock_window = Widget::CreateWindowWithParentAndBounds(NULL, | 513 aura::Window* lock_window = Widget::CreateWindowWithParentAndBounds(NULL, |
509 lock_container, gfx::Rect(0, 0, 100, 100))->GetNativeView(); | 514 lock_container, gfx::Rect(0, 0, 100, 100))->GetNativeView(); |
510 lock_window->Show(); | 515 lock_window->Show(); |
511 aura::Window* session_window = | 516 aura::Window* session_window = |
512 CreateTestWidget(gfx::Rect(0, 0, 100, 100))->GetNativeView(); | 517 CreateTestWidget(gfx::Rect(0, 0, 100, 100))->GetNativeView(); |
513 session_window->Show(); | 518 session_window->Show(); |
514 | 519 |
515 for (int block_reason = FIRST_BLOCK_REASON; | 520 for (int block_reason = FIRST_BLOCK_REASON; |
516 block_reason < NUMBER_OF_BLOCK_REASONS; | 521 block_reason < NUMBER_OF_BLOCK_REASONS; |
517 ++block_reason) { | 522 ++block_reason) { |
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
632 return; | 637 return; |
633 | 638 |
634 UpdateDisplay("500x500,500x500"); | 639 UpdateDisplay("500x500,500x500"); |
635 | 640 |
636 aura::Window::Windows root_windows = Shell::GetAllRootWindows(); | 641 aura::Window::Windows root_windows = Shell::GetAllRootWindows(); |
637 aura::Window* primary_root_window = Shell::GetPrimaryRootWindow(); | 642 aura::Window* primary_root_window = Shell::GetPrimaryRootWindow(); |
638 aura::Window* secondary_root_window = | 643 aura::Window* secondary_root_window = |
639 root_windows[0] == primary_root_window ? | 644 root_windows[0] == primary_root_window ? |
640 root_windows[1] : root_windows[0]; | 645 root_windows[1] : root_windows[0]; |
641 | 646 |
642 ASSERT_TRUE(Shell::GetContainer( | 647 ASSERT_TRUE(Shell::GetContainer(primary_root_window, |
643 primary_root_window, | 648 kShellWindowId_VirtualKeyboardContainer)); |
644 internal::kShellWindowId_VirtualKeyboardContainer)); | 649 ASSERT_FALSE(Shell::GetContainer(secondary_root_window, |
645 ASSERT_FALSE(Shell::GetContainer( | 650 kShellWindowId_VirtualKeyboardContainer)); |
646 secondary_root_window, | |
647 internal::kShellWindowId_VirtualKeyboardContainer)); | |
648 } | 651 } |
649 | 652 |
650 // Test for http://crbug.com/263599. Virtual keyboard should be able to receive | 653 // Test for http://crbug.com/263599. Virtual keyboard should be able to receive |
651 // events at blocked user session. | 654 // events at blocked user session. |
652 TEST_F(VirtualKeyboardRootWindowControllerTest, | 655 TEST_F(VirtualKeyboardRootWindowControllerTest, |
653 ClickVirtualKeyboardInBlockedWindow) { | 656 ClickVirtualKeyboardInBlockedWindow) { |
654 aura::Window* root_window = Shell::GetPrimaryRootWindow(); | 657 aura::Window* root_window = Shell::GetPrimaryRootWindow(); |
655 aura::Window* keyboard_container = Shell::GetContainer(root_window, | 658 aura::Window* keyboard_container = |
656 internal::kShellWindowId_VirtualKeyboardContainer); | 659 Shell::GetContainer(root_window, kShellWindowId_VirtualKeyboardContainer); |
657 ASSERT_TRUE(keyboard_container); | 660 ASSERT_TRUE(keyboard_container); |
658 keyboard_container->Show(); | 661 keyboard_container->Show(); |
659 | 662 |
660 aura::Window* keyboard_window = Shell::GetInstance()->keyboard_controller()-> | 663 aura::Window* keyboard_window = Shell::GetInstance()->keyboard_controller()-> |
661 proxy()->GetKeyboardWindow(); | 664 proxy()->GetKeyboardWindow(); |
662 keyboard_container->AddChild(keyboard_window); | 665 keyboard_container->AddChild(keyboard_window); |
663 keyboard_window->set_owned_by_parent(false); | 666 keyboard_window->set_owned_by_parent(false); |
664 keyboard_window->SetBounds(gfx::Rect()); | 667 keyboard_window->SetBounds(gfx::Rect()); |
665 keyboard_window->Show(); | 668 keyboard_window->Show(); |
666 | 669 |
(...skipping 15 matching lines...) Expand all Loading... |
682 UnblockUserSession(); | 685 UnblockUserSession(); |
683 } | 686 } |
684 } | 687 } |
685 | 688 |
686 // Test for http://crbug.com/299787. RootWindowController should delete | 689 // Test for http://crbug.com/299787. RootWindowController should delete |
687 // the old container since the keyboard controller creates a new window in | 690 // the old container since the keyboard controller creates a new window in |
688 // GetWindowContainer(). | 691 // GetWindowContainer(). |
689 TEST_F(VirtualKeyboardRootWindowControllerTest, | 692 TEST_F(VirtualKeyboardRootWindowControllerTest, |
690 DeleteOldContainerOnVirtualKeyboardInit) { | 693 DeleteOldContainerOnVirtualKeyboardInit) { |
691 aura::Window* root_window = Shell::GetPrimaryRootWindow(); | 694 aura::Window* root_window = Shell::GetPrimaryRootWindow(); |
692 aura::Window* keyboard_container = Shell::GetContainer(root_window, | 695 aura::Window* keyboard_container = |
693 internal::kShellWindowId_VirtualKeyboardContainer); | 696 Shell::GetContainer(root_window, kShellWindowId_VirtualKeyboardContainer); |
694 ASSERT_TRUE(keyboard_container); | 697 ASSERT_TRUE(keyboard_container); |
695 // Track the keyboard container window. | 698 // Track the keyboard container window. |
696 aura::WindowTracker tracker; | 699 aura::WindowTracker tracker; |
697 tracker.Add(keyboard_container); | 700 tracker.Add(keyboard_container); |
698 // Mock a login user profile change to reinitialize the keyboard. | 701 // Mock a login user profile change to reinitialize the keyboard. |
699 ash::Shell::GetInstance()->OnLoginUserProfilePrepared(); | 702 ash::Shell::GetInstance()->OnLoginUserProfilePrepared(); |
700 // keyboard_container should no longer be present. | 703 // keyboard_container should no longer be present. |
701 EXPECT_FALSE(tracker.Contains(keyboard_container)); | 704 EXPECT_FALSE(tracker.Contains(keyboard_container)); |
702 } | 705 } |
703 | 706 |
704 // Test for crbug.com/342524. After user login, the work space should restore to | 707 // Test for crbug.com/342524. After user login, the work space should restore to |
705 // full screen. | 708 // full screen. |
706 TEST_F(VirtualKeyboardRootWindowControllerTest, RestoreWorkspaceAfterLogin) { | 709 TEST_F(VirtualKeyboardRootWindowControllerTest, RestoreWorkspaceAfterLogin) { |
707 aura::Window* root_window = Shell::GetPrimaryRootWindow(); | 710 aura::Window* root_window = Shell::GetPrimaryRootWindow(); |
708 aura::Window* keyboard_container = Shell::GetContainer(root_window, | 711 aura::Window* keyboard_container = |
709 internal::kShellWindowId_VirtualKeyboardContainer); | 712 Shell::GetContainer(root_window, kShellWindowId_VirtualKeyboardContainer); |
710 keyboard_container->Show(); | 713 keyboard_container->Show(); |
711 keyboard::KeyboardController* controller = | 714 keyboard::KeyboardController* controller = |
712 Shell::GetInstance()->keyboard_controller(); | 715 Shell::GetInstance()->keyboard_controller(); |
713 aura::Window* keyboard_window = controller->proxy()->GetKeyboardWindow(); | 716 aura::Window* keyboard_window = controller->proxy()->GetKeyboardWindow(); |
714 keyboard_container->AddChild(keyboard_window); | 717 keyboard_container->AddChild(keyboard_window); |
715 keyboard_window->set_owned_by_parent(false); | 718 keyboard_window->set_owned_by_parent(false); |
716 keyboard_window->Show(); | 719 keyboard_window->Show(); |
717 | 720 |
718 gfx::Rect before = ash::Shell::GetScreen()->GetPrimaryDisplay().work_area(); | 721 gfx::Rect before = ash::Shell::GetScreen()->GetPrimaryDisplay().work_area(); |
719 | 722 |
720 // Notify keyboard bounds changing. | 723 // Notify keyboard bounds changing. |
721 controller->NotifyKeyboardBoundsChanging( | 724 controller->NotifyKeyboardBoundsChanging( |
722 controller->proxy()->GetKeyboardWindow()->bounds()); | 725 controller->proxy()->GetKeyboardWindow()->bounds()); |
723 | 726 |
724 gfx::Rect after = ash::Shell::GetScreen()->GetPrimaryDisplay().work_area(); | 727 gfx::Rect after = ash::Shell::GetScreen()->GetPrimaryDisplay().work_area(); |
725 EXPECT_LT(after, before); | 728 EXPECT_LT(after, before); |
726 | 729 |
727 // Mock a login user profile change to reinitialize the keyboard. | 730 // Mock a login user profile change to reinitialize the keyboard. |
728 ash::Shell::GetInstance()->OnLoginUserProfilePrepared(); | 731 ash::Shell::GetInstance()->OnLoginUserProfilePrepared(); |
729 EXPECT_EQ(ash::Shell::GetScreen()->GetPrimaryDisplay().work_area(), before); | 732 EXPECT_EQ(ash::Shell::GetScreen()->GetPrimaryDisplay().work_area(), before); |
730 } | 733 } |
731 | 734 |
732 // Ensure that system modal dialogs do not block events targeted at the virtual | 735 // Ensure that system modal dialogs do not block events targeted at the virtual |
733 // keyboard. | 736 // keyboard. |
734 TEST_F(VirtualKeyboardRootWindowControllerTest, ClickWithActiveModalDialog) { | 737 TEST_F(VirtualKeyboardRootWindowControllerTest, ClickWithActiveModalDialog) { |
735 aura::Window* root_window = Shell::GetPrimaryRootWindow(); | 738 aura::Window* root_window = Shell::GetPrimaryRootWindow(); |
736 aura::Window* keyboard_container = Shell::GetContainer(root_window, | 739 aura::Window* keyboard_container = |
737 internal::kShellWindowId_VirtualKeyboardContainer); | 740 Shell::GetContainer(root_window, kShellWindowId_VirtualKeyboardContainer); |
738 ASSERT_TRUE(keyboard_container); | 741 ASSERT_TRUE(keyboard_container); |
739 keyboard_container->Show(); | 742 keyboard_container->Show(); |
740 | 743 |
741 aura::Window* keyboard_window = Shell::GetInstance()->keyboard_controller()-> | 744 aura::Window* keyboard_window = Shell::GetInstance()->keyboard_controller()-> |
742 proxy()->GetKeyboardWindow(); | 745 proxy()->GetKeyboardWindow(); |
743 keyboard_container->AddChild(keyboard_window); | 746 keyboard_container->AddChild(keyboard_window); |
744 keyboard_window->set_owned_by_parent(false); | 747 keyboard_window->set_owned_by_parent(false); |
745 keyboard_window->SetBounds(gfx::Rect()); | 748 keyboard_window->SetBounds(gfx::Rect()); |
746 keyboard_window->Show(); | 749 keyboard_window->Show(); |
747 | 750 |
(...skipping 17 matching lines...) Expand all Loading... |
765 | 768 |
766 modal_widget->Close(); | 769 modal_widget->Close(); |
767 | 770 |
768 // Verify that mouse events are now unblocked to the root window. | 771 // Verify that mouse events are now unblocked to the root window. |
769 root_window_event_generator.ClickLeftButton(); | 772 root_window_event_generator.ClickLeftButton(); |
770 EXPECT_EQ(2, handler->num_mouse_events() / 2); | 773 EXPECT_EQ(2, handler->num_mouse_events() / 2); |
771 } | 774 } |
772 | 775 |
773 } // namespace test | 776 } // namespace test |
774 } // namespace ash | 777 } // namespace ash |
OLD | NEW |