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

Side by Side Diff: ash/root_window_controller_unittest.cc

Issue 2067223003: Parameterize Ash unittests to pass with material design enabled (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: for further feedback Created 4 years, 6 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) 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 <memory> 7 #include <memory>
8 8
9 #include "ash/common/material_design/material_design_controller.h"
9 #include "ash/common/session/session_state_delegate.h" 10 #include "ash/common/session/session_state_delegate.h"
10 #include "ash/common/shell_window_ids.h" 11 #include "ash/common/shell_window_ids.h"
11 #include "ash/common/system/tray/system_tray_delegate.h" 12 #include "ash/common/system/tray/system_tray_delegate.h"
12 #include "ash/common/wm/window_state.h" 13 #include "ash/common/wm/window_state.h"
13 #include "ash/common/wm_shell.h" 14 #include "ash/common/wm_shell.h"
14 #include "ash/display/display_manager.h" 15 #include "ash/display/display_manager.h"
15 #include "ash/shell.h" 16 #include "ash/shell.h"
16 #include "ash/test/ash_test_base.h" 17 #include "ash/test/ash_test_base.h"
17 #include "ash/test/display_manager_test_api.h" 18 #include "ash/test/display_manager_test_api.h"
19 #include "ash/test/material_design_controller_test_api.h"
18 #include "ash/wm/system_modal_container_layout_manager.h" 20 #include "ash/wm/system_modal_container_layout_manager.h"
19 #include "ash/wm/window_properties.h" 21 #include "ash/wm/window_properties.h"
20 #include "ash/wm/window_state_aura.h" 22 #include "ash/wm/window_state_aura.h"
21 #include "ash/wm/window_util.h" 23 #include "ash/wm/window_util.h"
22 #include "base/command_line.h" 24 #include "base/command_line.h"
23 #include "ui/aura/client/focus_change_observer.h" 25 #include "ui/aura/client/focus_change_observer.h"
24 #include "ui/aura/client/focus_client.h" 26 #include "ui/aura/client/focus_client.h"
25 #include "ui/aura/client/window_tree_client.h" 27 #include "ui/aura/client/window_tree_client.h"
26 #include "ui/aura/env.h" 28 #include "ui/aura/env.h"
27 #include "ui/aura/test/test_window_delegate.h" 29 #include "ui/aura/test/test_window_delegate.h"
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
90 92
91 aura::Window* window_; 93 aura::Window* window_;
92 94
93 DISALLOW_COPY_AND_ASSIGN(DeleteOnBlurDelegate); 95 DISALLOW_COPY_AND_ASSIGN(DeleteOnBlurDelegate);
94 }; 96 };
95 97
96 } // namespace 98 } // namespace
97 99
98 namespace test { 100 namespace test {
99 101
100 class RootWindowControllerTest : public test::AshTestBase { 102 class RootWindowControllerTest
103 : public test::AshTestBase,
104 public testing::WithParamInterface<ash::MaterialDesignController::Mode> {
101 public: 105 public:
106 RootWindowControllerTest() : md_maximized_window_height_offset_(0) {}
107
108 void SetUp() override {
109 test::AshTestBase::SetUp();
110 material_design_state_.reset(
111 new test::MaterialDesignControllerTestAPI(GetParam()));
112 md_maximized_window_height_offset_ =
113 ash::MaterialDesignController::IsMaterial() ? -1 : 0;
114 }
115
116 void TearDown() override {
117 material_design_state_.reset();
118 test::AshTestBase::TearDown();
119 }
120
102 views::Widget* CreateTestWidget(const gfx::Rect& bounds) { 121 views::Widget* CreateTestWidget(const gfx::Rect& bounds) {
103 views::Widget* widget = views::Widget::CreateWindowWithContextAndBounds( 122 views::Widget* widget = views::Widget::CreateWindowWithContextAndBounds(
104 NULL, CurrentContext(), bounds); 123 NULL, CurrentContext(), bounds);
105 widget->Show(); 124 widget->Show();
106 return widget; 125 return widget;
107 } 126 }
108 127
109 views::Widget* CreateModalWidget(const gfx::Rect& bounds) { 128 views::Widget* CreateModalWidget(const gfx::Rect& bounds) {
110 views::Widget* widget = views::Widget::CreateWindowWithContextAndBounds( 129 views::Widget* widget = views::Widget::CreateWindowWithContextAndBounds(
111 new TestDelegate(true), CurrentContext(), bounds); 130 new TestDelegate(true), CurrentContext(), bounds);
112 widget->Show(); 131 widget->Show();
113 return widget; 132 return widget;
114 } 133 }
115 134
116 views::Widget* CreateModalWidgetWithParent(const gfx::Rect& bounds, 135 views::Widget* CreateModalWidgetWithParent(const gfx::Rect& bounds,
117 gfx::NativeWindow parent) { 136 gfx::NativeWindow parent) {
118 views::Widget* widget = 137 views::Widget* widget =
119 views::Widget::CreateWindowWithParentAndBounds(new TestDelegate(true), 138 views::Widget::CreateWindowWithParentAndBounds(new TestDelegate(true),
120 parent, 139 parent,
121 bounds); 140 bounds);
122 widget->Show(); 141 widget->Show();
123 return widget; 142 return widget;
124 } 143 }
125 144
126 aura::Window* GetModalContainer(aura::Window* root_window) { 145 aura::Window* GetModalContainer(aura::Window* root_window) {
127 return Shell::GetContainer(root_window, 146 return Shell::GetContainer(root_window,
128 ash::kShellWindowId_SystemModalContainer); 147 ash::kShellWindowId_SystemModalContainer);
129 } 148 }
149
150 int GetMdMaximizedWindowHeightOffset() {
151 return md_maximized_window_height_offset_;
152 }
153
154 private:
155 std::unique_ptr<test::MaterialDesignControllerTestAPI>
156 material_design_state_;
157
158 // The material design shelf is taller (by 1px) so use this offset to
159 // adjust the expected height of a maximized window.
160 int md_maximized_window_height_offset_;
130 }; 161 };
131 162
132 TEST_F(RootWindowControllerTest, MoveWindows_Basic) { 163 // Note: First argument is optional and intentionally left blank.
164 // (it's a prefix for the generated test cases)
165 INSTANTIATE_TEST_CASE_P(
166 ,
167 RootWindowControllerTest,
168 testing::Values(ash::MaterialDesignController::NON_MATERIAL,
169 ash::MaterialDesignController::MATERIAL_NORMAL,
170 ash::MaterialDesignController::MATERIAL_EXPERIMENTAL));
171
172 TEST_P(RootWindowControllerTest, MoveWindows_Basic) {
133 if (!SupportsMultipleDisplays()) 173 if (!SupportsMultipleDisplays())
134 return; 174 return;
175 const int height_offset = GetMdMaximizedWindowHeightOffset();
176
135 // Windows origin should be doubled when moved to the 1st display. 177 // Windows origin should be doubled when moved to the 1st display.
136 UpdateDisplay("600x600,300x300"); 178 UpdateDisplay("600x600,300x300");
137 aura::Window::Windows root_windows = Shell::GetAllRootWindows(); 179 aura::Window::Windows root_windows = Shell::GetAllRootWindows();
138 180
139 views::Widget* normal = CreateTestWidget(gfx::Rect(650, 10, 100, 100)); 181 views::Widget* normal = CreateTestWidget(gfx::Rect(650, 10, 100, 100));
140 EXPECT_EQ(root_windows[1], normal->GetNativeView()->GetRootWindow()); 182 EXPECT_EQ(root_windows[1], normal->GetNativeView()->GetRootWindow());
141 EXPECT_EQ("650,10 100x100", normal->GetWindowBoundsInScreen().ToString()); 183 EXPECT_EQ("650,10 100x100", normal->GetWindowBoundsInScreen().ToString());
142 EXPECT_EQ("50,10 100x100", 184 EXPECT_EQ("50,10 100x100",
143 normal->GetNativeView()->GetBoundsInRootWindow().ToString()); 185 normal->GetNativeView()->GetBoundsInRootWindow().ToString());
144 186
145 views::Widget* maximized = CreateTestWidget(gfx::Rect(700, 10, 100, 100)); 187 views::Widget* maximized = CreateTestWidget(gfx::Rect(700, 10, 100, 100));
146 maximized->Maximize(); 188 maximized->Maximize();
147 EXPECT_EQ(root_windows[1], maximized->GetNativeView()->GetRootWindow()); 189 EXPECT_EQ(root_windows[1], maximized->GetNativeView()->GetRootWindow());
148 EXPECT_EQ("600,0 300x253", maximized->GetWindowBoundsInScreen().ToString()); 190 EXPECT_EQ(gfx::Rect(600, 0, 300, 253 + height_offset).ToString(),
149 EXPECT_EQ("0,0 300x253", 191 maximized->GetWindowBoundsInScreen().ToString());
192 EXPECT_EQ(gfx::Rect(0, 0, 300, 253 + height_offset).ToString(),
150 maximized->GetNativeView()->GetBoundsInRootWindow().ToString()); 193 maximized->GetNativeView()->GetBoundsInRootWindow().ToString());
151 194
152 views::Widget* minimized = CreateTestWidget(gfx::Rect(800, 10, 100, 100)); 195 views::Widget* minimized = CreateTestWidget(gfx::Rect(800, 10, 100, 100));
153 minimized->Minimize(); 196 minimized->Minimize();
154 EXPECT_EQ(root_windows[1], minimized->GetNativeView()->GetRootWindow()); 197 EXPECT_EQ(root_windows[1], minimized->GetNativeView()->GetRootWindow());
155 EXPECT_EQ("800,10 100x100", 198 EXPECT_EQ("800,10 100x100",
156 minimized->GetWindowBoundsInScreen().ToString()); 199 minimized->GetWindowBoundsInScreen().ToString());
157 200
158 views::Widget* fullscreen = CreateTestWidget(gfx::Rect(850, 10, 100, 100)); 201 views::Widget* fullscreen = CreateTestWidget(gfx::Rect(850, 10, 100, 100));
159 fullscreen->SetFullscreen(true); 202 fullscreen->SetFullscreen(true);
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after
200 EXPECT_EQ("100,20 100x100", 243 EXPECT_EQ("100,20 100x100",
201 normal->GetNativeView()->GetBoundsInRootWindow().ToString()); 244 normal->GetNativeView()->GetBoundsInRootWindow().ToString());
202 245
203 // Maximized area on primary display has 47px for non-md and 48px for md 246 // Maximized area on primary display has 47px for non-md and 48px for md
204 // (defined in ash::SHELF_SIZE) inset at the bottom. 247 // (defined in ash::SHELF_SIZE) inset at the bottom.
205 248
206 // First clear fullscreen status, since both fullscreen and maximized windows 249 // First clear fullscreen status, since both fullscreen and maximized windows
207 // share the same desktop workspace, which cancels the shelf status. 250 // share the same desktop workspace, which cancels the shelf status.
208 fullscreen->SetFullscreen(false); 251 fullscreen->SetFullscreen(false);
209 EXPECT_EQ(root_windows[0], maximized->GetNativeView()->GetRootWindow()); 252 EXPECT_EQ(root_windows[0], maximized->GetNativeView()->GetRootWindow());
210 EXPECT_EQ("0,0 600x553", maximized->GetWindowBoundsInScreen().ToString()); 253 EXPECT_EQ(gfx::Rect(0, 0, 600, 553 + height_offset).ToString(),
211 EXPECT_EQ("0,0 600x553", 254 maximized->GetWindowBoundsInScreen().ToString());
255 EXPECT_EQ(gfx::Rect(0, 0, 600, 553 + height_offset).ToString(),
212 maximized->GetNativeView()->GetBoundsInRootWindow().ToString()); 256 maximized->GetNativeView()->GetBoundsInRootWindow().ToString());
213 257
214 // Set fullscreen to true, but maximized window's size won't change because 258 // Set fullscreen to true, but maximized window's size won't change because
215 // it's not visible. see crbug.com/504299. 259 // it's not visible. see crbug.com/504299.
216 fullscreen->SetFullscreen(true); 260 fullscreen->SetFullscreen(true);
217 EXPECT_EQ(root_windows[0], maximized->GetNativeView()->GetRootWindow()); 261 EXPECT_EQ(root_windows[0], maximized->GetNativeView()->GetRootWindow());
218 EXPECT_EQ("0,0 600x553", maximized->GetWindowBoundsInScreen().ToString()); 262 EXPECT_EQ(gfx::Rect(0, 0, 600, 553 + height_offset).ToString(),
219 EXPECT_EQ("0,0 600x553", 263 maximized->GetWindowBoundsInScreen().ToString());
264 EXPECT_EQ(gfx::Rect(0, 0, 600, 553 + height_offset).ToString(),
220 maximized->GetNativeView()->GetBoundsInRootWindow().ToString()); 265 maximized->GetNativeView()->GetBoundsInRootWindow().ToString());
221 266
222 EXPECT_EQ(root_windows[0], minimized->GetNativeView()->GetRootWindow()); 267 EXPECT_EQ(root_windows[0], minimized->GetNativeView()->GetRootWindow());
223 EXPECT_EQ("400,20 100x100", 268 EXPECT_EQ("400,20 100x100",
224 minimized->GetWindowBoundsInScreen().ToString()); 269 minimized->GetWindowBoundsInScreen().ToString());
225 270
226 EXPECT_EQ(root_windows[0], fullscreen->GetNativeView()->GetRootWindow()); 271 EXPECT_EQ(root_windows[0], fullscreen->GetNativeView()->GetRootWindow());
227 EXPECT_TRUE(fullscreen->IsFullscreen()); 272 EXPECT_TRUE(fullscreen->IsFullscreen());
228 EXPECT_EQ("0,0 600x600", 273 EXPECT_EQ("0,0 600x600",
229 fullscreen->GetWindowBoundsInScreen().ToString()); 274 fullscreen->GetWindowBoundsInScreen().ToString());
(...skipping 16 matching lines...) Expand all
246 EXPECT_EQ(root_windows[0], 291 EXPECT_EQ(root_windows[0],
247 unparented_control->GetNativeView()->GetRootWindow()); 292 unparented_control->GetNativeView()->GetRootWindow());
248 EXPECT_EQ(kShellWindowId_UnparentedControlContainer, 293 EXPECT_EQ(kShellWindowId_UnparentedControlContainer,
249 unparented_control->GetNativeView()->parent()->id()); 294 unparented_control->GetNativeView()->parent()->id());
250 295
251 // Test if the panel has moved. 296 // Test if the panel has moved.
252 EXPECT_EQ(root_windows[0], panel->GetRootWindow()); 297 EXPECT_EQ(root_windows[0], panel->GetRootWindow());
253 EXPECT_EQ(kShellWindowId_PanelContainer, panel->parent()->id()); 298 EXPECT_EQ(kShellWindowId_PanelContainer, panel->parent()->id());
254 } 299 }
255 300
256 TEST_F(RootWindowControllerTest, MoveWindows_Modal) { 301 TEST_P(RootWindowControllerTest, MoveWindows_Modal) {
257 if (!SupportsMultipleDisplays()) 302 if (!SupportsMultipleDisplays())
258 return; 303 return;
259 304
260 UpdateDisplay("500x500,500x500"); 305 UpdateDisplay("500x500,500x500");
261 306
262 aura::Window::Windows root_windows = Shell::GetAllRootWindows(); 307 aura::Window::Windows root_windows = Shell::GetAllRootWindows();
263 // Emulate virtual screen coordinate system. 308 // Emulate virtual screen coordinate system.
264 root_windows[0]->SetBounds(gfx::Rect(0, 0, 500, 500)); 309 root_windows[0]->SetBounds(gfx::Rect(0, 0, 500, 500));
265 root_windows[1]->SetBounds(gfx::Rect(500, 0, 500, 500)); 310 root_windows[1]->SetBounds(gfx::Rect(500, 0, 500, 500));
266 311
(...skipping 12 matching lines...) Expand all
279 EXPECT_TRUE(wm::IsActiveWindow(modal->GetNativeView())); 324 EXPECT_TRUE(wm::IsActiveWindow(modal->GetNativeView()));
280 325
281 UpdateDisplay("500x500"); 326 UpdateDisplay("500x500");
282 EXPECT_EQ(root_windows[0], modal->GetNativeView()->GetRootWindow()); 327 EXPECT_EQ(root_windows[0], modal->GetNativeView()->GetRootWindow());
283 EXPECT_TRUE(wm::IsActiveWindow(modal->GetNativeView())); 328 EXPECT_TRUE(wm::IsActiveWindow(modal->GetNativeView()));
284 generator_1st.ClickLeftButton(); 329 generator_1st.ClickLeftButton();
285 EXPECT_TRUE(wm::IsActiveWindow(modal->GetNativeView())); 330 EXPECT_TRUE(wm::IsActiveWindow(modal->GetNativeView()));
286 } 331 }
287 332
288 // Make sure lock related windows moves. 333 // Make sure lock related windows moves.
289 TEST_F(RootWindowControllerTest, MoveWindows_LockWindowsInUnified) { 334 TEST_P(RootWindowControllerTest, MoveWindows_LockWindowsInUnified) {
290 if (!SupportsMultipleDisplays()) 335 if (!SupportsMultipleDisplays())
291 return; 336 return;
292 Shell::GetInstance()->display_manager()->SetUnifiedDesktopEnabled(true); 337 Shell::GetInstance()->display_manager()->SetUnifiedDesktopEnabled(true);
293 338
294 UpdateDisplay("500x500"); 339 UpdateDisplay("500x500");
295 const int kLockScreenWindowId = 1000; 340 const int kLockScreenWindowId = 1000;
296 const int kLockBackgroundWindowId = 1001; 341 const int kLockBackgroundWindowId = 1001;
297 342
298 RootWindowController* controller = 343 RootWindowController* controller =
299 Shell::GetInstance()->GetPrimaryRootWindowController(); 344 Shell::GetInstance()->GetPrimaryRootWindowController();
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
361 406
362 controller = Shell::GetInstance()->GetPrimaryRootWindowController(); 407 controller = Shell::GetInstance()->GetPrimaryRootWindowController();
363 408
364 ASSERT_EQ(lock_screen->GetNativeWindow(), 409 ASSERT_EQ(lock_screen->GetNativeWindow(),
365 controller->GetRootWindow()->GetChildById(kLockScreenWindowId)); 410 controller->GetRootWindow()->GetChildById(kLockScreenWindowId));
366 ASSERT_EQ(lock_background->GetNativeWindow(), 411 ASSERT_EQ(lock_background->GetNativeWindow(),
367 controller->GetRootWindow()->GetChildById(kLockBackgroundWindowId)); 412 controller->GetRootWindow()->GetChildById(kLockBackgroundWindowId));
368 EXPECT_EQ("0,0 600x500", lock_screen->GetNativeWindow()->bounds().ToString()); 413 EXPECT_EQ("0,0 600x500", lock_screen->GetNativeWindow()->bounds().ToString());
369 } 414 }
370 415
371 TEST_F(RootWindowControllerTest, ModalContainer) { 416 TEST_P(RootWindowControllerTest, ModalContainer) {
372 UpdateDisplay("600x600"); 417 UpdateDisplay("600x600");
373 Shell* shell = Shell::GetInstance(); 418 Shell* shell = Shell::GetInstance();
374 WmShell* wm_shell = WmShell::Get(); 419 WmShell* wm_shell = WmShell::Get();
375 RootWindowController* controller = shell->GetPrimaryRootWindowController(); 420 RootWindowController* controller = shell->GetPrimaryRootWindowController();
376 EXPECT_EQ(LoginStatus::USER, 421 EXPECT_EQ(LoginStatus::USER,
377 wm_shell->system_tray_delegate()->GetUserLoginStatus()); 422 wm_shell->system_tray_delegate()->GetUserLoginStatus());
378 EXPECT_EQ(controller->GetContainer(kShellWindowId_SystemModalContainer) 423 EXPECT_EQ(controller->GetContainer(kShellWindowId_SystemModalContainer)
379 ->layout_manager(), 424 ->layout_manager(),
380 controller->GetSystemModalLayoutManager(NULL)); 425 controller->GetSystemModalLayoutManager(NULL));
381 426
(...skipping 20 matching lines...) Expand all
402 controller->GetSystemModalLayoutManager( 447 controller->GetSystemModalLayoutManager(
403 lock_modal_widget->GetNativeView())); 448 lock_modal_widget->GetNativeView()));
404 EXPECT_EQ(controller->GetContainer(kShellWindowId_SystemModalContainer) 449 EXPECT_EQ(controller->GetContainer(kShellWindowId_SystemModalContainer)
405 ->layout_manager(), 450 ->layout_manager(),
406 controller->GetSystemModalLayoutManager( 451 controller->GetSystemModalLayoutManager(
407 session_modal_widget->GetNativeView())); 452 session_modal_widget->GetNativeView()));
408 453
409 shell->session_state_delegate()->UnlockScreen(); 454 shell->session_state_delegate()->UnlockScreen();
410 } 455 }
411 456
412 TEST_F(RootWindowControllerTest, ModalContainerNotLoggedInLoggedIn) { 457 TEST_P(RootWindowControllerTest, ModalContainerNotLoggedInLoggedIn) {
413 UpdateDisplay("600x600"); 458 UpdateDisplay("600x600");
414 Shell* shell = Shell::GetInstance(); 459 Shell* shell = Shell::GetInstance();
415 WmShell* wm_shell = WmShell::Get(); 460 WmShell* wm_shell = WmShell::Get();
416 461
417 // Configure login screen environment. 462 // Configure login screen environment.
418 SetUserLoggedIn(false); 463 SetUserLoggedIn(false);
419 EXPECT_EQ(LoginStatus::NOT_LOGGED_IN, 464 EXPECT_EQ(LoginStatus::NOT_LOGGED_IN,
420 wm_shell->system_tray_delegate()->GetUserLoginStatus()); 465 wm_shell->system_tray_delegate()->GetUserLoginStatus());
421 EXPECT_EQ(0, shell->session_state_delegate()->NumberOfLoggedInUsers()); 466 EXPECT_EQ(0, shell->session_state_delegate()->NumberOfLoggedInUsers());
422 EXPECT_FALSE(shell->session_state_delegate()->IsActiveUserSessionStarted()); 467 EXPECT_FALSE(shell->session_state_delegate()->IsActiveUserSessionStarted());
(...skipping 25 matching lines...) Expand all
448 controller->GetSystemModalLayoutManager(NULL)); 493 controller->GetSystemModalLayoutManager(NULL));
449 494
450 views::Widget* session_modal_widget = 495 views::Widget* session_modal_widget =
451 CreateModalWidget(gfx::Rect(300, 10, 100, 100)); 496 CreateModalWidget(gfx::Rect(300, 10, 100, 100));
452 EXPECT_EQ(controller->GetContainer(kShellWindowId_SystemModalContainer) 497 EXPECT_EQ(controller->GetContainer(kShellWindowId_SystemModalContainer)
453 ->layout_manager(), 498 ->layout_manager(),
454 controller->GetSystemModalLayoutManager( 499 controller->GetSystemModalLayoutManager(
455 session_modal_widget->GetNativeView())); 500 session_modal_widget->GetNativeView()));
456 } 501 }
457 502
458 TEST_F(RootWindowControllerTest, ModalContainerBlockedSession) { 503 TEST_P(RootWindowControllerTest, ModalContainerBlockedSession) {
459 UpdateDisplay("600x600"); 504 UpdateDisplay("600x600");
460 RootWindowController* controller = Shell::GetPrimaryRootWindowController(); 505 RootWindowController* controller = Shell::GetPrimaryRootWindowController();
461 aura::Window* lock_container = 506 aura::Window* lock_container =
462 controller->GetContainer(kShellWindowId_LockScreenContainer); 507 controller->GetContainer(kShellWindowId_LockScreenContainer);
463 for (int block_reason = FIRST_BLOCK_REASON; 508 for (int block_reason = FIRST_BLOCK_REASON;
464 block_reason < NUMBER_OF_BLOCK_REASONS; 509 block_reason < NUMBER_OF_BLOCK_REASONS;
465 ++block_reason) { 510 ++block_reason) {
466 views::Widget* session_modal_widget = 511 views::Widget* session_modal_widget =
467 CreateModalWidget(gfx::Rect(300, 10, 100, 100)); 512 CreateModalWidget(gfx::Rect(300, 10, 100, 100));
468 EXPECT_EQ(controller->GetContainer(kShellWindowId_SystemModalContainer) 513 EXPECT_EQ(controller->GetContainer(kShellWindowId_SystemModalContainer)
(...skipping 25 matching lines...) Expand all
494 ->layout_manager(), 539 ->layout_manager(),
495 controller->GetSystemModalLayoutManager( 540 controller->GetSystemModalLayoutManager(
496 session_modal_widget->GetNativeView())); 541 session_modal_widget->GetNativeView()));
497 session_modal_widget->Close(); 542 session_modal_widget->Close();
498 543
499 lock_modal_widget->Close(); 544 lock_modal_widget->Close();
500 UnblockUserSession(); 545 UnblockUserSession();
501 } 546 }
502 } 547 }
503 548
504 TEST_F(RootWindowControllerTest, GetWindowForFullscreenMode) { 549 TEST_P(RootWindowControllerTest, GetWindowForFullscreenMode) {
505 UpdateDisplay("600x600"); 550 UpdateDisplay("600x600");
506 RootWindowController* controller = 551 RootWindowController* controller =
507 Shell::GetInstance()->GetPrimaryRootWindowController(); 552 Shell::GetInstance()->GetPrimaryRootWindowController();
508 553
509 Widget* w1 = CreateTestWidget(gfx::Rect(0, 0, 100, 100)); 554 Widget* w1 = CreateTestWidget(gfx::Rect(0, 0, 100, 100));
510 w1->Maximize(); 555 w1->Maximize();
511 Widget* w2 = CreateTestWidget(gfx::Rect(0, 0, 100, 100)); 556 Widget* w2 = CreateTestWidget(gfx::Rect(0, 0, 100, 100));
512 w2->SetFullscreen(true); 557 w2->SetFullscreen(true);
513 // |w3| is a transient child of |w2|. 558 // |w3| is a transient child of |w2|.
514 Widget* w3 = Widget::CreateWindowWithParentAndBounds(NULL, 559 Widget* w3 = Widget::CreateWindowWithParentAndBounds(NULL,
(...skipping 11 matching lines...) Expand all
526 w3->Close(); 571 w3->Close();
527 572
528 // Only w2 remains, if minimized GetWindowForFullscreenMode should return 573 // Only w2 remains, if minimized GetWindowForFullscreenMode should return
529 // NULL. 574 // NULL.
530 w2->Activate(); 575 w2->Activate();
531 EXPECT_EQ(w2->GetNativeWindow(), controller->GetWindowForFullscreenMode()); 576 EXPECT_EQ(w2->GetNativeWindow(), controller->GetWindowForFullscreenMode());
532 w2->Minimize(); 577 w2->Minimize();
533 EXPECT_EQ(NULL, controller->GetWindowForFullscreenMode()); 578 EXPECT_EQ(NULL, controller->GetWindowForFullscreenMode());
534 } 579 }
535 580
536 TEST_F(RootWindowControllerTest, MultipleDisplaysGetWindowForFullscreenMode) { 581 TEST_P(RootWindowControllerTest, MultipleDisplaysGetWindowForFullscreenMode) {
537 if (!SupportsMultipleDisplays()) 582 if (!SupportsMultipleDisplays())
538 return; 583 return;
539 584
540 UpdateDisplay("600x600,600x600"); 585 UpdateDisplay("600x600,600x600");
541 Shell::RootWindowControllerList controllers = 586 Shell::RootWindowControllerList controllers =
542 Shell::GetInstance()->GetAllRootWindowControllers(); 587 Shell::GetInstance()->GetAllRootWindowControllers();
543 588
544 Widget* w1 = CreateTestWidget(gfx::Rect(0, 0, 100, 100)); 589 Widget* w1 = CreateTestWidget(gfx::Rect(0, 0, 100, 100));
545 w1->Maximize(); 590 w1->Maximize();
546 Widget* w2 = CreateTestWidget(gfx::Rect(0, 0, 100, 100)); 591 Widget* w2 = CreateTestWidget(gfx::Rect(0, 0, 100, 100));
(...skipping 19 matching lines...) Expand all
566 // Verify that the first root window controller remains in fullscreen mode 611 // Verify that the first root window controller remains in fullscreen mode
567 // when a window on the other display is activated. 612 // when a window on the other display is activated.
568 w3->Activate(); 613 w3->Activate();
569 EXPECT_EQ(w2->GetNativeWindow(), 614 EXPECT_EQ(w2->GetNativeWindow(),
570 controllers[0]->GetWindowForFullscreenMode()); 615 controllers[0]->GetWindowForFullscreenMode());
571 EXPECT_EQ(NULL, controllers[1]->GetWindowForFullscreenMode()); 616 EXPECT_EQ(NULL, controllers[1]->GetWindowForFullscreenMode());
572 } 617 }
573 618
574 // Test that GetRootWindowController() works with multiple displays and 619 // Test that GetRootWindowController() works with multiple displays and
575 // child widgets. 620 // child widgets.
576 TEST_F(RootWindowControllerTest, GetRootWindowController) { 621 TEST_P(RootWindowControllerTest, GetRootWindowController) {
577 if (!SupportsMultipleDisplays()) 622 if (!SupportsMultipleDisplays())
578 return; 623 return;
579 UpdateDisplay("600x600,600x600"); 624 UpdateDisplay("600x600,600x600");
580 Shell::RootWindowControllerList controllers = 625 Shell::RootWindowControllerList controllers =
581 Shell::GetInstance()->GetAllRootWindowControllers(); 626 Shell::GetInstance()->GetAllRootWindowControllers();
582 ASSERT_EQ(2u, controllers.size()); 627 ASSERT_EQ(2u, controllers.size());
583 628
584 // Test null. 629 // Test null.
585 EXPECT_FALSE(GetRootWindowController(nullptr)); 630 EXPECT_FALSE(GetRootWindowController(nullptr));
586 631
587 // Test a widget on the first display. 632 // Test a widget on the first display.
588 Widget* w1 = CreateTestWidget(gfx::Rect(0, 0, 100, 100)); 633 Widget* w1 = CreateTestWidget(gfx::Rect(0, 0, 100, 100));
589 EXPECT_EQ(controllers[0], 634 EXPECT_EQ(controllers[0],
590 GetRootWindowController(w1->GetNativeWindow()->GetRootWindow())); 635 GetRootWindowController(w1->GetNativeWindow()->GetRootWindow()));
591 636
592 // Test a child widget. 637 // Test a child widget.
593 Widget* w2 = Widget::CreateWindowWithParentAndBounds( 638 Widget* w2 = Widget::CreateWindowWithParentAndBounds(
594 nullptr, w1->GetNativeWindow(), gfx::Rect(0, 0, 100, 100)); 639 nullptr, w1->GetNativeWindow(), gfx::Rect(0, 0, 100, 100));
595 EXPECT_EQ(controllers[0], 640 EXPECT_EQ(controllers[0],
596 GetRootWindowController(w2->GetNativeWindow()->GetRootWindow())); 641 GetRootWindowController(w2->GetNativeWindow()->GetRootWindow()));
597 642
598 // Test a widget on the second display. 643 // Test a widget on the second display.
599 Widget* w3 = CreateTestWidget(gfx::Rect(600, 0, 100, 100)); 644 Widget* w3 = CreateTestWidget(gfx::Rect(600, 0, 100, 100));
600 EXPECT_EQ(controllers[1], 645 EXPECT_EQ(controllers[1],
601 GetRootWindowController(w3->GetNativeWindow()->GetRootWindow())); 646 GetRootWindowController(w3->GetNativeWindow()->GetRootWindow()));
602 } 647 }
603 648
604 // Test that user session window can't be focused if user session blocked by 649 // Test that user session window can't be focused if user session blocked by
605 // some overlapping UI. 650 // some overlapping UI.
606 TEST_F(RootWindowControllerTest, FocusBlockedWindow) { 651 TEST_P(RootWindowControllerTest, FocusBlockedWindow) {
607 UpdateDisplay("600x600"); 652 UpdateDisplay("600x600");
608 RootWindowController* controller = 653 RootWindowController* controller =
609 Shell::GetInstance()->GetPrimaryRootWindowController(); 654 Shell::GetInstance()->GetPrimaryRootWindowController();
610 aura::Window* lock_container = 655 aura::Window* lock_container =
611 controller->GetContainer(kShellWindowId_LockScreenContainer); 656 controller->GetContainer(kShellWindowId_LockScreenContainer);
612 aura::Window* lock_window = Widget::CreateWindowWithParentAndBounds(NULL, 657 aura::Window* lock_window = Widget::CreateWindowWithParentAndBounds(NULL,
613 lock_container, gfx::Rect(0, 0, 100, 100))->GetNativeView(); 658 lock_container, gfx::Rect(0, 0, 100, 100))->GetNativeView();
614 lock_window->Show(); 659 lock_window->Show();
615 aura::Window* session_window = 660 aura::Window* session_window =
616 CreateTestWidget(gfx::Rect(0, 0, 100, 100))->GetNativeView(); 661 CreateTestWidget(gfx::Rect(0, 0, 100, 100))->GetNativeView();
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after
655 window_ = NULL; 700 window_ = NULL;
656 } 701 }
657 702
658 bool destroyed_; 703 bool destroyed_;
659 Window* window_; 704 Window* window_;
660 705
661 DISALLOW_COPY_AND_ASSIGN(DestroyedWindowObserver); 706 DISALLOW_COPY_AND_ASSIGN(DestroyedWindowObserver);
662 }; 707 };
663 708
664 // Verifies shutdown doesn't delete windows that are not owned by the parent. 709 // Verifies shutdown doesn't delete windows that are not owned by the parent.
665 TEST_F(RootWindowControllerTest, DontDeleteWindowsNotOwnedByParent) { 710 TEST_P(RootWindowControllerTest, DontDeleteWindowsNotOwnedByParent) {
666 DestroyedWindowObserver observer1; 711 DestroyedWindowObserver observer1;
667 aura::test::TestWindowDelegate delegate1; 712 aura::test::TestWindowDelegate delegate1;
668 aura::Window* window1 = new aura::Window(&delegate1); 713 aura::Window* window1 = new aura::Window(&delegate1);
669 window1->SetType(ui::wm::WINDOW_TYPE_CONTROL); 714 window1->SetType(ui::wm::WINDOW_TYPE_CONTROL);
670 window1->set_owned_by_parent(false); 715 window1->set_owned_by_parent(false);
671 observer1.SetWindow(window1); 716 observer1.SetWindow(window1);
672 window1->Init(ui::LAYER_NOT_DRAWN); 717 window1->Init(ui::LAYER_NOT_DRAWN);
673 aura::client::ParentWindowWithContext( 718 aura::client::ParentWindowWithContext(
674 window1, Shell::GetInstance()->GetPrimaryRootWindow(), gfx::Rect()); 719 window1, Shell::GetInstance()->GetPrimaryRootWindow(), gfx::Rect());
675 720
(...skipping 370 matching lines...) Expand 10 before | Expand all | Expand 10 after
1046 keyboard_controller->ui()->GetKeyboardWindow()->SetBounds( 1091 keyboard_controller->ui()->GetKeyboardWindow()->SetBounds(
1047 gfx::Rect(0, 400, 800, 200)); 1092 gfx::Rect(0, 400, 800, 200));
1048 EXPECT_EQ("0,400 800x200", keyboard_container->bounds().ToString()); 1093 EXPECT_EQ("0,400 800x200", keyboard_container->bounds().ToString());
1049 1094
1050 UpdateDisplay("600x800"); 1095 UpdateDisplay("600x800");
1051 EXPECT_EQ("0,600 600x200", keyboard_container->bounds().ToString()); 1096 EXPECT_EQ("0,600 600x200", keyboard_container->bounds().ToString());
1052 } 1097 }
1053 1098
1054 } // namespace test 1099 } // namespace test
1055 } // namespace ash 1100 } // namespace ash
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698