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

Side by Side Diff: ash/wm/shelf_layout_manager_unittest.cc

Issue 11017079: Remove Shell::shelf()|status_area_widget()|launcher() (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 8 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 | Annotate | Revision Log
« no previous file with comments | « ash/wm/shelf_layout_manager.cc ('k') | ash/wm/status_area_layout_manager.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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/wm/shelf_layout_manager.h" 5 #include "ash/wm/shelf_layout_manager.h"
6 6
7 #include "ash/accelerators/accelerator_controller.h" 7 #include "ash/accelerators/accelerator_controller.h"
8 #include "ash/accelerators/accelerator_table.h" 8 #include "ash/accelerators/accelerator_table.h"
9 #include "ash/ash_switches.h" 9 #include "ash/ash_switches.h"
10 #include "ash/focus_cycler.h" 10 #include "ash/focus_cycler.h"
11 #include "ash/launcher/launcher.h" 11 #include "ash/launcher/launcher.h"
12 #include "ash/root_window_controller.h"
12 #include "ash/screen_ash.h" 13 #include "ash/screen_ash.h"
13 #include "ash/shell.h" 14 #include "ash/shell.h"
14 #include "ash/shell_delegate.h" 15 #include "ash/shell_delegate.h"
15 #include "ash/shell_window_ids.h" 16 #include "ash/shell_window_ids.h"
16 #include "ash/system/status_area_widget.h" 17 #include "ash/system/status_area_widget.h"
17 #include "ash/system/tray/system_tray.h" 18 #include "ash/system/tray/system_tray.h"
18 #include "ash/system/tray/system_tray_item.h" 19 #include "ash/system/tray/system_tray_item.h"
19 #include "ash/test/ash_test_base.h" 20 #include "ash/test/ash_test_base.h"
20 #include "ash/wm/window_util.h" 21 #include "ash/wm/window_util.h"
21 #include "base/command_line.h" 22 #include "base/command_line.h"
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after
145 146
146 DISALLOW_COPY_AND_ASSIGN(TestItem); 147 DISALLOW_COPY_AND_ASSIGN(TestItem);
147 }; 148 };
148 149
149 } // namespace 150 } // namespace
150 151
151 class ShelfLayoutManagerTest : public ash::test::AshTestBase { 152 class ShelfLayoutManagerTest : public ash::test::AshTestBase {
152 public: 153 public:
153 ShelfLayoutManagerTest() {} 154 ShelfLayoutManagerTest() {}
154 155
156 ShelfLayoutManager* shelf_layout_manager() {
157 return Shell::GetPrimaryRootWindowController()->shelf();
158 }
159
155 void SetState(ShelfLayoutManager* shelf, 160 void SetState(ShelfLayoutManager* shelf,
156 ShelfLayoutManager::VisibilityState state) { 161 ShelfLayoutManager::VisibilityState state) {
157 shelf->SetState(state); 162 shelf->SetState(state);
158 } 163 }
159 164
160 void UpdateAutoHideStateNow() { 165 void UpdateAutoHideStateNow() {
161 GetShelfLayoutManager()->UpdateAutoHideStateNow(); 166 GetShelfLayoutManager()->UpdateAutoHideStateNow();
162 } 167 }
163 168
164 aura::Window* CreateTestWindow() { 169 aura::Window* CreateTestWindow() {
(...skipping 21 matching lines...) Expand all
186 #else 191 #else
187 #define MAYBE_SetVisible SetVisible 192 #define MAYBE_SetVisible SetVisible
188 #endif 193 #endif
189 // Makes sure SetVisible updates work area and widget appropriately. 194 // Makes sure SetVisible updates work area and widget appropriately.
190 TEST_F(ShelfLayoutManagerTest, MAYBE_SetVisible) { 195 TEST_F(ShelfLayoutManagerTest, MAYBE_SetVisible) {
191 ShelfLayoutManager* shelf = GetShelfLayoutManager(); 196 ShelfLayoutManager* shelf = GetShelfLayoutManager();
192 // Force an initial layout. 197 // Force an initial layout.
193 shelf->LayoutShelf(); 198 shelf->LayoutShelf();
194 EXPECT_EQ(ShelfLayoutManager::VISIBLE, shelf->visibility_state()); 199 EXPECT_EQ(ShelfLayoutManager::VISIBLE, shelf->visibility_state());
195 200
196 gfx::Rect status_bounds(shelf->status()->GetWindowBoundsInScreen()); 201 gfx::Rect status_bounds(
202 shelf->status_area_widget()->GetWindowBoundsInScreen());
197 gfx::Rect launcher_bounds( 203 gfx::Rect launcher_bounds(
198 shelf->launcher_widget()->GetWindowBoundsInScreen()); 204 shelf->launcher_widget()->GetWindowBoundsInScreen());
199 int shelf_height = shelf->GetIdealBounds().height(); 205 int shelf_height = shelf->GetIdealBounds().height();
200 206
201 const aura::DisplayManager* manager = 207 const aura::DisplayManager* manager =
202 aura::Env::GetInstance()->display_manager(); 208 aura::Env::GetInstance()->display_manager();
203 const gfx::Display& display = 209 const gfx::Display& display =
204 manager->GetDisplayNearestWindow(Shell::GetPrimaryRootWindow()); 210 manager->GetDisplayNearestWindow(Shell::GetPrimaryRootWindow());
205 ASSERT_NE(-1, display.id()); 211 ASSERT_NE(-1, display.id());
206 // Bottom inset should be the max of widget heights. 212 // Bottom inset should be the max of widget heights.
207 EXPECT_EQ(shelf_height, 213 EXPECT_EQ(shelf_height,
208 display.bounds().bottom() - display.work_area().bottom()); 214 display.bounds().bottom() - display.work_area().bottom());
209 215
210 // Hide the shelf. 216 // Hide the shelf.
211 SetState(shelf, ShelfLayoutManager::HIDDEN); 217 SetState(shelf, ShelfLayoutManager::HIDDEN);
212 // Run the animation to completion. 218 // Run the animation to completion.
213 StepWidgetLayerAnimatorToEnd(shelf->launcher_widget()); 219 StepWidgetLayerAnimatorToEnd(shelf->launcher_widget());
214 StepWidgetLayerAnimatorToEnd(shelf->status()); 220 StepWidgetLayerAnimatorToEnd(shelf->status_area_widget());
215 EXPECT_EQ(ShelfLayoutManager::HIDDEN, shelf->visibility_state()); 221 EXPECT_EQ(ShelfLayoutManager::HIDDEN, shelf->visibility_state());
216 EXPECT_EQ(0, 222 EXPECT_EQ(0,
217 display.bounds().bottom() - display.work_area().bottom()); 223 display.bounds().bottom() - display.work_area().bottom());
218 224
219 // Make sure the bounds of the two widgets changed. 225 // Make sure the bounds of the two widgets changed.
220 EXPECT_GE(shelf->launcher_widget()->GetNativeView()->bounds().y(), 226 EXPECT_GE(shelf->launcher_widget()->GetNativeView()->bounds().y(),
221 Shell::GetScreen()->GetPrimaryDisplay().bounds().bottom()); 227 Shell::GetScreen()->GetPrimaryDisplay().bounds().bottom());
222 EXPECT_GE(shelf->status()->GetNativeView()->bounds().y(), 228 EXPECT_GE(shelf->status_area_widget()->GetNativeView()->bounds().y(),
223 Shell::GetScreen()->GetPrimaryDisplay().bounds().bottom()); 229 Shell::GetScreen()->GetPrimaryDisplay().bounds().bottom());
224 230
225 // And show it again. 231 // And show it again.
226 SetState(shelf, ShelfLayoutManager::VISIBLE); 232 SetState(shelf, ShelfLayoutManager::VISIBLE);
227 // Run the animation to completion. 233 // Run the animation to completion.
228 StepWidgetLayerAnimatorToEnd(shelf->launcher_widget()); 234 StepWidgetLayerAnimatorToEnd(shelf->launcher_widget());
229 StepWidgetLayerAnimatorToEnd(shelf->status()); 235 StepWidgetLayerAnimatorToEnd(shelf->status_area_widget());
230 EXPECT_EQ(ShelfLayoutManager::VISIBLE, shelf->visibility_state()); 236 EXPECT_EQ(ShelfLayoutManager::VISIBLE, shelf->visibility_state());
231 EXPECT_EQ(shelf_height, 237 EXPECT_EQ(shelf_height,
232 display.bounds().bottom() - display.work_area().bottom()); 238 display.bounds().bottom() - display.work_area().bottom());
233 239
234 // Make sure the bounds of the two widgets changed. 240 // Make sure the bounds of the two widgets changed.
235 launcher_bounds = shelf->launcher_widget()->GetNativeView()->bounds(); 241 launcher_bounds = shelf->launcher_widget()->GetNativeView()->bounds();
236 int bottom = 242 int bottom =
237 Shell::GetScreen()->GetPrimaryDisplay().bounds().bottom() - shelf_height; 243 Shell::GetScreen()->GetPrimaryDisplay().bounds().bottom() - shelf_height;
238 EXPECT_EQ(launcher_bounds.y(), 244 EXPECT_EQ(launcher_bounds.y(),
239 bottom + (shelf->GetIdealBounds().height() - 245 bottom + (shelf->GetIdealBounds().height() -
240 launcher_bounds.height()) / 2); 246 launcher_bounds.height()) / 2);
241 status_bounds = shelf->status()->GetNativeView()->bounds(); 247 status_bounds = shelf->status_area_widget()->GetNativeView()->bounds();
242 EXPECT_EQ(status_bounds.y(), 248 EXPECT_EQ(status_bounds.y(),
243 bottom + shelf_height - status_bounds.height()); 249 bottom + shelf_height - status_bounds.height());
244 } 250 }
245 251
246 // Makes sure LayoutShelf invoked while animating cleans things up. 252 // Makes sure LayoutShelf invoked while animating cleans things up.
247 TEST_F(ShelfLayoutManagerTest, LayoutShelfWhileAnimating) { 253 TEST_F(ShelfLayoutManagerTest, LayoutShelfWhileAnimating) {
248 ShelfLayoutManager* shelf = GetShelfLayoutManager(); 254 ShelfLayoutManager* shelf = GetShelfLayoutManager();
249 // Force an initial layout. 255 // Force an initial layout.
250 shelf->LayoutShelf(); 256 shelf->LayoutShelf();
251 EXPECT_EQ(ShelfLayoutManager::VISIBLE, shelf->visibility_state()); 257 EXPECT_EQ(ShelfLayoutManager::VISIBLE, shelf->visibility_state());
252 258
253 const aura::DisplayManager* manager = 259 const aura::DisplayManager* manager =
254 aura::Env::GetInstance()->display_manager(); 260 aura::Env::GetInstance()->display_manager();
255 const gfx::Display& display = 261 const gfx::Display& display =
256 manager->GetDisplayNearestWindow(Shell::GetPrimaryRootWindow()); 262 manager->GetDisplayNearestWindow(Shell::GetPrimaryRootWindow());
257 263
258 // Hide the shelf. 264 // Hide the shelf.
259 SetState(shelf, ShelfLayoutManager::HIDDEN); 265 SetState(shelf, ShelfLayoutManager::HIDDEN);
260 shelf->LayoutShelf(); 266 shelf->LayoutShelf();
261 EXPECT_EQ(ShelfLayoutManager::HIDDEN, shelf->visibility_state()); 267 EXPECT_EQ(ShelfLayoutManager::HIDDEN, shelf->visibility_state());
262 EXPECT_EQ(0, display.bounds().bottom() - display.work_area().bottom()); 268 EXPECT_EQ(0, display.bounds().bottom() - display.work_area().bottom());
263 269
264 // Make sure the bounds of the two widgets changed. 270 // Make sure the bounds of the two widgets changed.
265 EXPECT_GE(shelf->launcher_widget()->GetNativeView()->bounds().y(), 271 EXPECT_GE(shelf->launcher_widget()->GetNativeView()->bounds().y(),
266 Shell::GetScreen()->GetPrimaryDisplay().bounds().bottom()); 272 Shell::GetScreen()->GetPrimaryDisplay().bounds().bottom());
267 EXPECT_GE(shelf->status()->GetNativeView()->bounds().y(), 273 EXPECT_GE(shelf->status_area_widget()->GetNativeView()->bounds().y(),
268 Shell::GetScreen()->GetPrimaryDisplay().bounds().bottom()); 274 Shell::GetScreen()->GetPrimaryDisplay().bounds().bottom());
269 } 275 }
270 276
271 // Makes sure the launcher is initially sized correctly. 277 // Makes sure the launcher is initially sized correctly.
272 TEST_F(ShelfLayoutManagerTest, LauncherInitiallySized) { 278 TEST_F(ShelfLayoutManagerTest, LauncherInitiallySized) {
273 Launcher* launcher = Shell::GetInstance()->launcher(); 279 Launcher* launcher = Launcher::ForPrimaryDisplay();
274 ASSERT_TRUE(launcher); 280 ASSERT_TRUE(launcher);
275 ShelfLayoutManager* shelf_layout_manager = GetShelfLayoutManager(); 281 ShelfLayoutManager* shelf_layout_manager = GetShelfLayoutManager();
276 ASSERT_TRUE(shelf_layout_manager); 282 ASSERT_TRUE(shelf_layout_manager);
277 ASSERT_TRUE(shelf_layout_manager->status()); 283 ASSERT_TRUE(shelf_layout_manager->status_area_widget());
278 int status_width = 284 int status_width = shelf_layout_manager->status_area_widget()->
279 shelf_layout_manager->status()->GetWindowBoundsInScreen().width(); 285 GetWindowBoundsInScreen().width();
280 // Test only makes sense if the status is > 0, which is better be. 286 // Test only makes sense if the status is > 0, which is better be.
281 EXPECT_GT(status_width, 0); 287 EXPECT_GT(status_width, 0);
282 EXPECT_EQ(status_width, launcher->status_size().width()); 288 EXPECT_EQ(status_width, launcher->status_size().width());
283 } 289 }
284 290
285 // Makes sure the launcher is sized when the status area changes size. 291 // Makes sure the launcher is sized when the status area changes size.
286 TEST_F(ShelfLayoutManagerTest, LauncherUpdatedWhenStatusAreaChangesSize) { 292 TEST_F(ShelfLayoutManagerTest, LauncherUpdatedWhenStatusAreaChangesSize) {
287 Launcher* launcher = Shell::GetInstance()->launcher(); 293 Launcher* launcher = Launcher::ForPrimaryDisplay();
288 ASSERT_TRUE(launcher); 294 ASSERT_TRUE(launcher);
289 ShelfLayoutManager* shelf_layout_manager = GetShelfLayoutManager(); 295 ShelfLayoutManager* shelf_layout_manager = GetShelfLayoutManager();
290 ASSERT_TRUE(shelf_layout_manager); 296 ASSERT_TRUE(shelf_layout_manager);
291 ASSERT_TRUE(shelf_layout_manager->status()); 297 ASSERT_TRUE(shelf_layout_manager->status_area_widget());
292 shelf_layout_manager->status()->SetBounds(gfx::Rect(0, 0, 200, 200)); 298 shelf_layout_manager->status_area_widget()->SetBounds(
299 gfx::Rect(0, 0, 200, 200));
293 EXPECT_EQ(200, launcher->status_size().width()); 300 EXPECT_EQ(200, launcher->status_size().width());
294 } 301 }
295 302
296 // Verifies when the shell is deleted with a full screen window we don't 303 // Verifies when the shell is deleted with a full screen window we don't
297 // crash. This test is here as originally the crash was in ShelfLayoutManager. 304 // crash. This test is here as originally the crash was in ShelfLayoutManager.
298 TEST_F(ShelfLayoutManagerTest, DontReferenceLauncherAfterDeletion) { 305 TEST_F(ShelfLayoutManagerTest, DontReferenceLauncherAfterDeletion) {
299 views::Widget* widget = new views::Widget; 306 views::Widget* widget = new views::Widget;
300 views::Widget::InitParams params(views::Widget::InitParams::TYPE_WINDOW); 307 views::Widget::InitParams params(views::Widget::InitParams::TYPE_WINDOW);
301 params.bounds = gfx::Rect(0, 0, 200, 200); 308 params.bounds = gfx::Rect(0, 0, 200, 200);
302 // Widget is now owned by the parent window. 309 // Widget is now owned by the parent window.
(...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after
486 // Focus the launcher. Have to go through the focus cycler as normal focus 493 // Focus the launcher. Have to go through the focus cycler as normal focus
487 // requests to it do nothing. 494 // requests to it do nothing.
488 shelf->launcher()->GetFocusCycler()->RotateFocus(FocusCycler::FORWARD); 495 shelf->launcher()->GetFocusCycler()->RotateFocus(FocusCycler::FORWARD);
489 EXPECT_EQ(ShelfLayoutManager::AUTO_HIDE_SHOWN, shelf->auto_hide_state()); 496 EXPECT_EQ(ShelfLayoutManager::AUTO_HIDE_SHOWN, shelf->auto_hide_state());
490 497
491 widget->Activate(); 498 widget->Activate();
492 EXPECT_EQ(ShelfLayoutManager::AUTO_HIDE_HIDDEN, shelf->auto_hide_state()); 499 EXPECT_EQ(ShelfLayoutManager::AUTO_HIDE_HIDDEN, shelf->auto_hide_state());
493 500
494 // Trying to activate the status should fail, since we only allow activating 501 // Trying to activate the status should fail, since we only allow activating
495 // it when the user is using the keyboard (i.e. through FocusCycler). 502 // it when the user is using the keyboard (i.e. through FocusCycler).
496 shelf->status()->Activate(); 503 shelf->status_area_widget()->Activate();
497 EXPECT_EQ(ShelfLayoutManager::AUTO_HIDE_HIDDEN, shelf->auto_hide_state()); 504 EXPECT_EQ(ShelfLayoutManager::AUTO_HIDE_HIDDEN, shelf->auto_hide_state());
498 505
499 shelf->launcher()->GetFocusCycler()->RotateFocus(FocusCycler::FORWARD); 506 shelf->launcher()->GetFocusCycler()->RotateFocus(FocusCycler::FORWARD);
500 EXPECT_EQ(ShelfLayoutManager::AUTO_HIDE_SHOWN, shelf->auto_hide_state()); 507 EXPECT_EQ(ShelfLayoutManager::AUTO_HIDE_SHOWN, shelf->auto_hide_state());
501 } 508 }
502 509
503 // Makes sure shelf will be visible when app list opens as shelf is in VISIBLE 510 // Makes sure shelf will be visible when app list opens as shelf is in VISIBLE
504 // state,and toggling app list won't change shelf visibility state. 511 // state,and toggling app list won't change shelf visibility state.
505 TEST_F(ShelfLayoutManagerTest, OpenAppListWithShelfVisibleState) { 512 TEST_F(ShelfLayoutManagerTest, OpenAppListWithShelfVisibleState) {
506 Shell* shell = Shell::GetInstance(); 513 Shell* shell = Shell::GetInstance();
507 ShelfLayoutManager* shelf = Shell::GetInstance()->shelf(); 514 ShelfLayoutManager* shelf = shelf_layout_manager();
508 shelf->LayoutShelf(); 515 shelf->LayoutShelf();
509 shell->SetShelfAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_NEVER); 516 shell->SetShelfAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_NEVER);
510 517
511 // Create a normal unmaximized windowm shelf should be visible. 518 // Create a normal unmaximized windowm shelf should be visible.
512 aura::Window* window = CreateTestWindow(); 519 aura::Window* window = CreateTestWindow();
513 window->SetBounds(gfx::Rect(0, 0, 100, 100)); 520 window->SetBounds(gfx::Rect(0, 0, 100, 100));
514 window->Show(); 521 window->Show();
515 EXPECT_FALSE(shell->GetAppListTargetVisibility()); 522 EXPECT_FALSE(shell->GetAppListTargetVisibility());
516 EXPECT_EQ(ShelfLayoutManager::VISIBLE, shelf->visibility_state()); 523 EXPECT_EQ(ShelfLayoutManager::VISIBLE, shelf->visibility_state());
517 524
518 // Toggle app list to show, and the shelf stays visible. 525 // Toggle app list to show, and the shelf stays visible.
519 shell->ToggleAppList(); 526 shell->ToggleAppList();
520 EXPECT_TRUE(shell->GetAppListTargetVisibility()); 527 EXPECT_TRUE(shell->GetAppListTargetVisibility());
521 EXPECT_EQ(ShelfLayoutManager::VISIBLE, shelf->visibility_state()); 528 EXPECT_EQ(ShelfLayoutManager::VISIBLE, shelf->visibility_state());
522 529
523 // Toggle app list to hide, and the shelf stays visible. 530 // Toggle app list to hide, and the shelf stays visible.
524 shell->ToggleAppList(); 531 shell->ToggleAppList();
525 EXPECT_FALSE(shell->GetAppListTargetVisibility()); 532 EXPECT_FALSE(shell->GetAppListTargetVisibility());
526 EXPECT_EQ(ShelfLayoutManager::VISIBLE, shelf->visibility_state()); 533 EXPECT_EQ(ShelfLayoutManager::VISIBLE, shelf->visibility_state());
527 } 534 }
528 535
529 // Makes sure shelf will be shown with AUTO_HIDE_SHOWN state when app list opens 536 // Makes sure shelf will be shown with AUTO_HIDE_SHOWN state when app list opens
530 // as shelf is in AUTO_HIDE state, and toggling app list won't change shelf 537 // as shelf is in AUTO_HIDE state, and toggling app list won't change shelf
531 // visibility state. 538 // visibility state.
532 TEST_F(ShelfLayoutManagerTest, OpenAppListWithShelfAutoHideState) { 539 TEST_F(ShelfLayoutManagerTest, OpenAppListWithShelfAutoHideState) {
533 Shell* shell = Shell::GetInstance(); 540 Shell* shell = Shell::GetInstance();
534 ShelfLayoutManager* shelf = Shell::GetInstance()->shelf(); 541 ShelfLayoutManager* shelf = shelf_layout_manager();
535 shelf->LayoutShelf(); 542 shelf->LayoutShelf();
536 shell->SetShelfAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS); 543 shell->SetShelfAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS);
537 544
538 // Create a window and show it in maximized state. 545 // Create a window and show it in maximized state.
539 aura::Window* window = CreateTestWindow(); 546 aura::Window* window = CreateTestWindow();
540 window->SetBounds(gfx::Rect(0, 0, 100, 100)); 547 window->SetBounds(gfx::Rect(0, 0, 100, 100));
541 window->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_MAXIMIZED); 548 window->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_MAXIMIZED);
542 window->Show(); 549 window->Show();
543 wm::ActivateWindow(window); 550 wm::ActivateWindow(window);
544 551
(...skipping 13 matching lines...) Expand all
558 // Toggle app list to hide. 565 // Toggle app list to hide.
559 shell->ToggleAppList(); 566 shell->ToggleAppList();
560 EXPECT_FALSE(shell->GetAppListTargetVisibility()); 567 EXPECT_FALSE(shell->GetAppListTargetVisibility());
561 EXPECT_EQ(ShelfLayoutManager::AUTO_HIDE, shelf->visibility_state()); 568 EXPECT_EQ(ShelfLayoutManager::AUTO_HIDE, shelf->visibility_state());
562 } 569 }
563 570
564 // Makes sure shelf will be hidden when app list opens as shelf is in HIDDEN 571 // Makes sure shelf will be hidden when app list opens as shelf is in HIDDEN
565 // state, and toggling app list won't change shelf visibility state. 572 // state, and toggling app list won't change shelf visibility state.
566 TEST_F(ShelfLayoutManagerTest, OpenAppListWithShelfHiddenState) { 573 TEST_F(ShelfLayoutManagerTest, OpenAppListWithShelfHiddenState) {
567 Shell* shell = Shell::GetInstance(); 574 Shell* shell = Shell::GetInstance();
568 ShelfLayoutManager* shelf = Shell::GetInstance()->shelf(); 575 ShelfLayoutManager* shelf = shelf_layout_manager();
569 // For shelf to be visible, app list is not open in initial state. 576 // For shelf to be visible, app list is not open in initial state.
570 shelf->LayoutShelf(); 577 shelf->LayoutShelf();
571 578
572 // Create a window and make it full screen. 579 // Create a window and make it full screen.
573 aura::Window* window = CreateTestWindow(); 580 aura::Window* window = CreateTestWindow();
574 window->SetBounds(gfx::Rect(0, 0, 100, 100)); 581 window->SetBounds(gfx::Rect(0, 0, 100, 100));
575 window->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_FULLSCREEN); 582 window->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_FULLSCREEN);
576 window->Show(); 583 window->Show();
577 wm::ActivateWindow(window); 584 wm::ActivateWindow(window);
578 585
579 // App list and shelf is not shown. 586 // App list and shelf is not shown.
580 EXPECT_FALSE(shell->GetAppListTargetVisibility()); 587 EXPECT_FALSE(shell->GetAppListTargetVisibility());
581 EXPECT_EQ(ShelfLayoutManager::HIDDEN, shelf->visibility_state()); 588 EXPECT_EQ(ShelfLayoutManager::HIDDEN, shelf->visibility_state());
582 589
583 // Toggle app list to show. 590 // Toggle app list to show.
584 shell->ToggleAppList(); 591 shell->ToggleAppList();
585 EXPECT_TRUE(shell->GetAppListTargetVisibility()); 592 EXPECT_TRUE(shell->GetAppListTargetVisibility());
586 EXPECT_EQ(ShelfLayoutManager::HIDDEN, shelf->visibility_state()); 593 EXPECT_EQ(ShelfLayoutManager::HIDDEN, shelf->visibility_state());
587 594
588 // Toggle app list to hide. 595 // Toggle app list to hide.
589 shell->ToggleAppList(); 596 shell->ToggleAppList();
590 EXPECT_FALSE(shell->GetAppListTargetVisibility()); 597 EXPECT_FALSE(shell->GetAppListTargetVisibility());
591 EXPECT_EQ(ShelfLayoutManager::HIDDEN, shelf->visibility_state()); 598 EXPECT_EQ(ShelfLayoutManager::HIDDEN, shelf->visibility_state());
592 } 599 }
593 600
594 // Tests SHELF_ALIGNMENT_LEFT and SHELF_ALIGNMENT_RIGHT. 601 // Tests SHELF_ALIGNMENT_LEFT and SHELF_ALIGNMENT_RIGHT.
595 TEST_F(ShelfLayoutManagerTest, SetAlignment) { 602 TEST_F(ShelfLayoutManagerTest, SetAlignment) {
596 ShelfLayoutManager* shelf = GetShelfLayoutManager(); 603 ShelfLayoutManager* shelf = shelf_layout_manager();
597 // Force an initial layout. 604 // Force an initial layout.
598 shelf->LayoutShelf(); 605 shelf->LayoutShelf();
599 EXPECT_EQ(ShelfLayoutManager::VISIBLE, shelf->visibility_state()); 606 EXPECT_EQ(ShelfLayoutManager::VISIBLE, shelf->visibility_state());
600 607
601 shelf->SetAlignment(SHELF_ALIGNMENT_LEFT); 608 shelf->SetAlignment(SHELF_ALIGNMENT_LEFT);
602 609
603 gfx::Rect launcher_bounds( 610 gfx::Rect launcher_bounds(
604 shelf->launcher_widget()->GetWindowBoundsInScreen()); 611 shelf->launcher_widget()->GetWindowBoundsInScreen());
605 const aura::DisplayManager* manager = 612 const aura::DisplayManager* manager =
606 aura::Env::GetInstance()->display_manager(); 613 aura::Env::GetInstance()->display_manager();
607 gfx::Display display = 614 gfx::Display display =
608 manager->GetDisplayNearestWindow(Shell::GetPrimaryRootWindow()); 615 manager->GetDisplayNearestWindow(Shell::GetPrimaryRootWindow());
609 ASSERT_NE(-1, display.id()); 616 ASSERT_NE(-1, display.id());
610 EXPECT_EQ(shelf->GetIdealBounds().width(), 617 EXPECT_EQ(shelf->GetIdealBounds().width(),
611 display.GetWorkAreaInsets().left()); 618 display.GetWorkAreaInsets().left());
612 EXPECT_GE( 619 EXPECT_GE(
613 launcher_bounds.width(), 620 launcher_bounds.width(),
614 shelf->launcher_widget()->GetContentsView()->GetPreferredSize().width()); 621 shelf->launcher_widget()->GetContentsView()->GetPreferredSize().width());
615 EXPECT_EQ(SHELF_ALIGNMENT_LEFT, 622 EXPECT_EQ(SHELF_ALIGNMENT_LEFT,
616 Shell::GetInstance()->system_tray()->shelf_alignment()); 623 Shell::GetInstance()->system_tray()->shelf_alignment());
617 gfx::Rect status_bounds(shelf->status()->GetWindowBoundsInScreen()); 624 StatusAreaWidget* status_area_widget = shelf->status_area_widget();
625 gfx::Rect status_bounds(status_area_widget->GetWindowBoundsInScreen());
618 EXPECT_GE(status_bounds.width(), 626 EXPECT_GE(status_bounds.width(),
619 shelf->status()->GetContentsView()->GetPreferredSize().width()); 627 status_area_widget->GetContentsView()->GetPreferredSize().width());
620 EXPECT_EQ(shelf->GetIdealBounds().width(), 628 EXPECT_EQ(shelf->GetIdealBounds().width(),
621 display.GetWorkAreaInsets().left()); 629 display.GetWorkAreaInsets().left());
622 EXPECT_EQ(0, display.GetWorkAreaInsets().top()); 630 EXPECT_EQ(0, display.GetWorkAreaInsets().top());
623 EXPECT_EQ(0, display.GetWorkAreaInsets().bottom()); 631 EXPECT_EQ(0, display.GetWorkAreaInsets().bottom());
624 EXPECT_EQ(0, display.GetWorkAreaInsets().right()); 632 EXPECT_EQ(0, display.GetWorkAreaInsets().right());
625 EXPECT_EQ(display.bounds().x(), launcher_bounds.x()); 633 EXPECT_EQ(display.bounds().x(), launcher_bounds.x());
626 EXPECT_EQ(display.bounds().y(), launcher_bounds.y()); 634 EXPECT_EQ(display.bounds().y(), launcher_bounds.y());
627 EXPECT_EQ(display.bounds().height(), launcher_bounds.height()); 635 EXPECT_EQ(display.bounds().height(), launcher_bounds.height());
628 636
629 shelf->SetAlignment(SHELF_ALIGNMENT_RIGHT); 637 shelf->SetAlignment(SHELF_ALIGNMENT_RIGHT);
630 launcher_bounds = shelf->launcher_widget()->GetWindowBoundsInScreen(); 638 launcher_bounds = shelf->launcher_widget()->GetWindowBoundsInScreen();
631 display = manager->GetDisplayNearestWindow(Shell::GetPrimaryRootWindow()); 639 display = manager->GetDisplayNearestWindow(Shell::GetPrimaryRootWindow());
632 ASSERT_NE(-1, display.id()); 640 ASSERT_NE(-1, display.id());
633 EXPECT_EQ(shelf->GetIdealBounds().width(), 641 EXPECT_EQ(shelf->GetIdealBounds().width(),
634 display.GetWorkAreaInsets().right()); 642 display.GetWorkAreaInsets().right());
635 EXPECT_GE( 643 EXPECT_GE(
636 launcher_bounds.width(), 644 launcher_bounds.width(),
637 shelf->launcher_widget()->GetContentsView()->GetPreferredSize().width()); 645 shelf->launcher_widget()->GetContentsView()->GetPreferredSize().width());
638 EXPECT_EQ(SHELF_ALIGNMENT_RIGHT, 646 EXPECT_EQ(SHELF_ALIGNMENT_RIGHT,
639 Shell::GetInstance()->system_tray()->shelf_alignment()); 647 Shell::GetInstance()->system_tray()->shelf_alignment());
640 status_bounds = gfx::Rect(shelf->status()->GetWindowBoundsInScreen()); 648 status_bounds = gfx::Rect(status_area_widget->GetWindowBoundsInScreen());
641 EXPECT_GE(status_bounds.width(), 649 EXPECT_GE(status_bounds.width(),
642 shelf->status()->GetContentsView()->GetPreferredSize().width()); 650 status_area_widget->GetContentsView()->GetPreferredSize().width());
643 EXPECT_EQ(shelf->GetIdealBounds().width(), 651 EXPECT_EQ(shelf->GetIdealBounds().width(),
644 display.GetWorkAreaInsets().right()); 652 display.GetWorkAreaInsets().right());
645 EXPECT_EQ(0, display.GetWorkAreaInsets().top()); 653 EXPECT_EQ(0, display.GetWorkAreaInsets().top());
646 EXPECT_EQ(0, display.GetWorkAreaInsets().bottom()); 654 EXPECT_EQ(0, display.GetWorkAreaInsets().bottom());
647 EXPECT_EQ(0, display.GetWorkAreaInsets().left()); 655 EXPECT_EQ(0, display.GetWorkAreaInsets().left());
648 EXPECT_EQ(display.work_area().right(), launcher_bounds.x()); 656 EXPECT_EQ(display.work_area().right(), launcher_bounds.x());
649 EXPECT_EQ(display.bounds().y(), launcher_bounds.y()); 657 EXPECT_EQ(display.bounds().y(), launcher_bounds.y());
650 EXPECT_EQ(display.bounds().height(), launcher_bounds.height()); 658 EXPECT_EQ(display.bounds().height(), launcher_bounds.height());
651 } 659 }
652 660
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
756 shelf->LayoutShelf(); 764 shelf->LayoutShelf();
757 765
758 aura::test::EventGenerator generator(Shell::GetPrimaryRootWindow()); 766 aura::test::EventGenerator generator(Shell::GetPrimaryRootWindow());
759 SystemTray* tray = Shell::GetInstance()->system_tray(); 767 SystemTray* tray = Shell::GetInstance()->system_tray();
760 768
761 // First, make sure the shelf is visible. 769 // First, make sure the shelf is visible.
762 shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_NEVER); 770 shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_NEVER);
763 EXPECT_FALSE(tray->HasSystemBubble()); 771 EXPECT_FALSE(tray->HasSystemBubble());
764 772
765 // Now, drag up on the tray to show the bubble. 773 // Now, drag up on the tray to show the bubble.
766 gfx::Point start = shelf->status()->GetWindowBoundsInScreen().CenterPoint(); 774 gfx::Point start =
775 shelf->status_area_widget()->GetWindowBoundsInScreen().CenterPoint();
767 gfx::Point end(start.x(), start.y() - 100); 776 gfx::Point end(start.x(), start.y() - 100);
768 generator.GestureScrollSequence(start, end, 777 generator.GestureScrollSequence(start, end,
769 base::TimeDelta::FromMilliseconds(10), 1); 778 base::TimeDelta::FromMilliseconds(10), 1);
770 EXPECT_TRUE(tray->HasSystemBubble()); 779 EXPECT_TRUE(tray->HasSystemBubble());
771 tray->CloseBubbleForTest(); 780 tray->CloseBubbleForTest();
772 RunAllPendingInMessageLoop(); 781 RunAllPendingInMessageLoop();
773 EXPECT_FALSE(tray->HasSystemBubble()); 782 EXPECT_FALSE(tray->HasSystemBubble());
774 783
775 // Drag again, but only a small amount, and slowly. The bubble should not be 784 // Drag again, but only a small amount, and slowly. The bubble should not be
776 // visible. 785 // visible.
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
872 // Activate the first window. Now, both windows should be of the same size 881 // Activate the first window. Now, both windows should be of the same size
873 // again. 882 // again.
874 widget_two->Activate(); 883 widget_two->Activate();
875 EXPECT_EQ(widget_one->GetNativeWindow()->bounds().ToString(), 884 EXPECT_EQ(widget_one->GetNativeWindow()->bounds().ToString(),
876 widget_two->GetNativeWindow()->bounds().ToString()); 885 widget_two->GetNativeWindow()->bounds().ToString());
877 } 886 }
878 887
879 // Confirm that the shelf is dimmed only when content is maximized and 888 // Confirm that the shelf is dimmed only when content is maximized and
880 // shelf is not autohidden. 889 // shelf is not autohidden.
881 TEST_F(ShelfLayoutManagerTest, Dimming) { 890 TEST_F(ShelfLayoutManagerTest, Dimming) {
882 Shell::GetInstance()->shelf()->SetAutoHideBehavior( 891 shelf_layout_manager()->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_NEVER);
883 SHELF_AUTO_HIDE_BEHAVIOR_NEVER);
884 scoped_ptr<aura::Window> w1(CreateTestWindow()); 892 scoped_ptr<aura::Window> w1(CreateTestWindow());
885 w1->Show(); 893 w1->Show();
886 wm::ActivateWindow(w1.get()); 894 wm::ActivateWindow(w1.get());
887 895
888 // Normal window doesn't dim shelf. 896 // Normal window doesn't dim shelf.
889 w1->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_NORMAL); 897 w1->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_NORMAL);
890 EXPECT_FALSE(Shell::GetInstance()->launcher()->GetDimsShelf()); 898 Launcher* launcher = Launcher::ForPrimaryDisplay();
899 EXPECT_FALSE(launcher->GetDimsShelf());
891 900
892 // Maximized window does. 901 // Maximized window does.
893 w1->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_MAXIMIZED); 902 w1->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_MAXIMIZED);
894 EXPECT_TRUE(Shell::GetInstance()->launcher()->GetDimsShelf()); 903 EXPECT_TRUE(launcher->GetDimsShelf());
895 904
896 // Change back to normal stops dimming. 905 // Change back to normal stops dimming.
897 w1->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_NORMAL); 906 w1->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_NORMAL);
898 EXPECT_FALSE(Shell::GetInstance()->launcher()->GetDimsShelf()); 907 EXPECT_FALSE(launcher->GetDimsShelf());
899 908
900 // Changing back to maximized dims again. 909 // Changing back to maximized dims again.
901 w1->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_MAXIMIZED); 910 w1->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_MAXIMIZED);
902 EXPECT_TRUE(Shell::GetInstance()->launcher()->GetDimsShelf()); 911 EXPECT_TRUE(launcher->GetDimsShelf());
903 912
904 // Changing shelf to autohide stops dimming. 913 // Changing shelf to autohide stops dimming.
905 Shell::GetInstance()->shelf()->SetAutoHideBehavior( 914 shelf_layout_manager()->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS);
906 SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS); 915 EXPECT_FALSE(launcher->GetDimsShelf());
907 EXPECT_FALSE(Shell::GetInstance()->launcher()->GetDimsShelf());
908 } 916 }
909 917
910 // Make sure that the shelf will not hide if the mouse is between a bubble and 918 // Make sure that the shelf will not hide if the mouse is between a bubble and
911 // the shelf. 919 // the shelf.
912 TEST_F(ShelfLayoutManagerTest, BubbleEnlargesShelfMouseHitArea) { 920 TEST_F(ShelfLayoutManagerTest, BubbleEnlargesShelfMouseHitArea) {
913 ShelfLayoutManager* shelf = GetShelfLayoutManager(); 921 ShelfLayoutManager* shelf = GetShelfLayoutManager();
914 StatusAreaWidget* status_area = Shell::GetInstance()->status_area_widget(); 922 StatusAreaWidget* status_area_widget =
923 Shell::GetPrimaryRootWindowController()->status_area_widget();
915 SystemTray* tray = Shell::GetInstance()->system_tray(); 924 SystemTray* tray = Shell::GetInstance()->system_tray();
916 925
917 shelf->LayoutShelf(); 926 shelf->LayoutShelf();
918 aura::test::EventGenerator generator(Shell::GetPrimaryRootWindow()); 927 aura::test::EventGenerator generator(Shell::GetPrimaryRootWindow());
919 928
920 // Make two iterations - first without a message bubble which should make 929 // Make two iterations - first without a message bubble which should make
921 // the shelf disappear and then with a message bubble which should keep it 930 // the shelf disappear and then with a message bubble which should keep it
922 // visible. 931 // visible.
923 for (int i = 0; i < 2; i++) { 932 for (int i = 0; i < 2; i++) {
924 // Make sure the shelf is visible and position the mouse over it. Then 933 // Make sure the shelf is visible and position the mouse over it. Then
925 // allow auto hide. 934 // allow auto hide.
926 shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_NEVER); 935 shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_NEVER);
927 EXPECT_FALSE(status_area->IsMessageBubbleShown()); 936 EXPECT_FALSE(status_area_widget->IsMessageBubbleShown());
928 gfx::Point center = 937 gfx::Point center =
929 shelf->status()->GetWindowBoundsInScreen().CenterPoint(); 938 status_area_widget->GetWindowBoundsInScreen().CenterPoint();
930 generator.MoveMouseTo(center.x(), center.y()); 939 generator.MoveMouseTo(center.x(), center.y());
931 shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS); 940 shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS);
932 EXPECT_TRUE(shelf->IsVisible()); 941 EXPECT_TRUE(shelf->IsVisible());
933 if (!i) { 942 if (!i) {
934 // In our first iteration we make sure there is no bubble. 943 // In our first iteration we make sure there is no bubble.
935 tray->CloseBubbleForTest(); 944 tray->CloseBubbleForTest();
936 EXPECT_FALSE(status_area->IsMessageBubbleShown()); 945 EXPECT_FALSE(status_area_widget->IsMessageBubbleShown());
937 } else { 946 } else {
938 // In our second iteration we show a bubble. 947 // In our second iteration we show a bubble.
939 TestItem *item = new TestItem; 948 TestItem *item = new TestItem;
940 tray->AddTrayItem(item); 949 tray->AddTrayItem(item);
941 tray->ShowNotificationView(item); 950 tray->ShowNotificationView(item);
942 EXPECT_TRUE(status_area->IsMessageBubbleShown()); 951 EXPECT_TRUE(status_area_widget->IsMessageBubbleShown());
943 } 952 }
944 // Move the pointer over the edge of the shelf. 953 // Move the pointer over the edge of the shelf.
945 generator.MoveMouseTo(center.x(), 954 generator.MoveMouseTo(
946 shelf->status()->GetWindowBoundsInScreen().y() - 7); 955 center.x(), status_area_widget->GetWindowBoundsInScreen().y() - 7);
947 shelf->UpdateVisibilityState(); 956 shelf->UpdateVisibilityState();
948 if (i) { 957 if (i) {
949 EXPECT_TRUE(shelf->IsVisible()); 958 EXPECT_TRUE(shelf->IsVisible());
950 EXPECT_TRUE(status_area->IsMessageBubbleShown()); 959 EXPECT_TRUE(status_area_widget->IsMessageBubbleShown());
951 } else { 960 } else {
952 EXPECT_FALSE(shelf->IsVisible()); 961 EXPECT_FALSE(shelf->IsVisible());
953 EXPECT_FALSE(status_area->IsMessageBubbleShown()); 962 EXPECT_FALSE(status_area_widget->IsMessageBubbleShown());
954 } 963 }
955 } 964 }
956 } 965 }
957 966
958 } // namespace internal 967 } // namespace internal
959 } // namespace ash 968 } // namespace ash
OLDNEW
« no previous file with comments | « ash/wm/shelf_layout_manager.cc ('k') | ash/wm/status_area_layout_manager.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698