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/shelf/shelf_layout_manager.h" | 5 #include "ash/shelf/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/focus_cycler.h" | 9 #include "ash/focus_cycler.h" |
10 #include "ash/public/cpp/config.h" | 10 #include "ash/public/cpp/config.h" |
11 #include "ash/public/cpp/shell_window_ids.h" | 11 #include "ash/public/cpp/shell_window_ids.h" |
12 #include "ash/root_window_controller.h" | 12 #include "ash/root_window_controller.h" |
13 #include "ash/session/session_controller.h" | 13 #include "ash/session/session_controller.h" |
| 14 #include "ash/shelf/shelf.h" |
14 #include "ash/shelf/shelf_constants.h" | 15 #include "ash/shelf/shelf_constants.h" |
15 #include "ash/shelf/shelf_layout_manager_observer.h" | 16 #include "ash/shelf/shelf_layout_manager_observer.h" |
16 #include "ash/shelf/shelf_view.h" | 17 #include "ash/shelf/shelf_view.h" |
17 #include "ash/shelf/shelf_widget.h" | 18 #include "ash/shelf/shelf_widget.h" |
18 #include "ash/shelf/wm_shelf.h" | |
19 #include "ash/shell.h" | 19 #include "ash/shell.h" |
20 #include "ash/shell_port.h" | 20 #include "ash/shell_port.h" |
21 #include "ash/system/status_area_widget.h" | 21 #include "ash/system/status_area_widget.h" |
22 #include "ash/system/tray/system_tray.h" | 22 #include "ash/system/tray/system_tray.h" |
23 #include "ash/system/tray/system_tray_item.h" | 23 #include "ash/system/tray/system_tray_item.h" |
24 #include "ash/test/ash_test_base.h" | 24 #include "ash/test/ash_test_base.h" |
25 #include "ash/test/test_app_list_view_presenter_impl.h" | 25 #include "ash/test/test_app_list_view_presenter_impl.h" |
26 #include "ash/test/test_system_tray_item.h" | 26 #include "ash/test/test_system_tray_item.h" |
27 #include "ash/wm/lock_state_controller.h" | 27 #include "ash/wm/lock_state_controller.h" |
28 #include "ash/wm/window_state.h" | 28 #include "ash/wm/window_state.h" |
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
149 return; | 149 return; |
150 } | 150 } |
151 | 151 |
152 // The state of the shelf at the end of the gesture is tested separately. | 152 // The state of the shelf at the end of the gesture is tested separately. |
153 if (type == ui::ET_GESTURE_SCROLL_END) | 153 if (type == ui::ET_GESTURE_SCROLL_END) |
154 return; | 154 return; |
155 | 155 |
156 if (type == ui::ET_GESTURE_SCROLL_UPDATE) | 156 if (type == ui::ET_GESTURE_SCROLL_UPDATE) |
157 scroll_.Add(delta); | 157 scroll_.Add(delta); |
158 | 158 |
159 WmShelf* shelf = test::AshTestBase::GetPrimaryShelf(); | 159 Shelf* shelf = test::AshTestBase::GetPrimaryShelf(); |
160 gfx::Rect shelf_bounds = GetShelfWidget()->GetWindowBoundsInScreen(); | 160 gfx::Rect shelf_bounds = GetShelfWidget()->GetWindowBoundsInScreen(); |
161 if (shelf->IsHorizontalAlignment()) { | 161 if (shelf->IsHorizontalAlignment()) { |
162 EXPECT_EQ(auto_hidden_shelf_widget_bounds_.bottom(), | 162 EXPECT_EQ(auto_hidden_shelf_widget_bounds_.bottom(), |
163 shelf_bounds.bottom()); | 163 shelf_bounds.bottom()); |
164 EXPECT_EQ(shelf_widget_bounds_.bottom(), shelf_bounds.bottom()); | 164 EXPECT_EQ(shelf_widget_bounds_.bottom(), shelf_bounds.bottom()); |
165 } else if (SHELF_ALIGNMENT_RIGHT == shelf->alignment()) { | 165 } else if (SHELF_ALIGNMENT_RIGHT == shelf->alignment()) { |
166 EXPECT_EQ(auto_hidden_shelf_widget_bounds_.right(), shelf_bounds.right()); | 166 EXPECT_EQ(auto_hidden_shelf_widget_bounds_.right(), shelf_bounds.right()); |
167 EXPECT_EQ(shelf_widget_bounds_.right(), shelf_bounds.right()); | 167 EXPECT_EQ(shelf_widget_bounds_.right(), shelf_bounds.right()); |
168 } else if (SHELF_ALIGNMENT_LEFT == shelf->alignment()) { | 168 } else if (SHELF_ALIGNMENT_LEFT == shelf->alignment()) { |
169 EXPECT_EQ(auto_hidden_shelf_widget_bounds_.x(), shelf_bounds.x()); | 169 EXPECT_EQ(auto_hidden_shelf_widget_bounds_.x(), shelf_bounds.x()); |
(...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
306 | 306 |
307 int64_t GetPrimaryDisplayId() { | 307 int64_t GetPrimaryDisplayId() { |
308 return display::Screen::GetScreen()->GetPrimaryDisplay().id(); | 308 return display::Screen::GetScreen()->GetPrimaryDisplay().id(); |
309 } | 309 } |
310 | 310 |
311 private: | 311 private: |
312 DISALLOW_COPY_AND_ASSIGN(ShelfLayoutManagerTest); | 312 DISALLOW_COPY_AND_ASSIGN(ShelfLayoutManagerTest); |
313 }; | 313 }; |
314 | 314 |
315 void ShelfLayoutManagerTest::RunGestureDragTests(gfx::Vector2d delta) { | 315 void ShelfLayoutManagerTest::RunGestureDragTests(gfx::Vector2d delta) { |
316 WmShelf* shelf = GetPrimaryShelf(); | 316 Shelf* shelf = GetPrimaryShelf(); |
317 shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_NEVER); | 317 shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_NEVER); |
318 | 318 |
319 views::Widget* widget = CreateTestWidget(); | 319 views::Widget* widget = CreateTestWidget(); |
320 widget->Maximize(); | 320 widget->Maximize(); |
321 | 321 |
322 // The time delta should be large enough to prevent accidental fling creation. | 322 // The time delta should be large enough to prevent accidental fling creation. |
323 const base::TimeDelta kTimeDelta = base::TimeDelta::FromMilliseconds(100); | 323 const base::TimeDelta kTimeDelta = base::TimeDelta::FromMilliseconds(100); |
324 | 324 |
325 aura::Window* window = widget->GetNativeWindow(); | 325 aura::Window* window = widget->GetNativeWindow(); |
326 ShelfLayoutManager* layout_manager = GetShelfLayoutManager(); | 326 ShelfLayoutManager* layout_manager = GetShelfLayoutManager(); |
(...skipping 345 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
672 | 672 |
673 // Make sure the bounds of the two widgets changed. | 673 // Make sure the bounds of the two widgets changed. |
674 shelf_bounds = shelf_widget->GetNativeView()->bounds(); | 674 shelf_bounds = shelf_widget->GetNativeView()->bounds(); |
675 EXPECT_LT(shelf_bounds.y(), display.bounds().bottom()); | 675 EXPECT_LT(shelf_bounds.y(), display.bounds().bottom()); |
676 status_bounds = shelf_widget->status_area_widget()->GetNativeView()->bounds(); | 676 status_bounds = shelf_widget->status_area_widget()->GetNativeView()->bounds(); |
677 EXPECT_LT(status_bounds.y(), display.bounds().bottom()); | 677 EXPECT_LT(status_bounds.y(), display.bounds().bottom()); |
678 } | 678 } |
679 | 679 |
680 // Makes sure LayoutShelf invoked while animating cleans things up. | 680 // Makes sure LayoutShelf invoked while animating cleans things up. |
681 TEST_F(ShelfLayoutManagerTest, LayoutShelfWhileAnimating) { | 681 TEST_F(ShelfLayoutManagerTest, LayoutShelfWhileAnimating) { |
682 WmShelf* shelf = GetPrimaryShelf(); | 682 Shelf* shelf = GetPrimaryShelf(); |
683 ShelfLayoutManager* layout_manager = GetShelfLayoutManager(); | 683 ShelfLayoutManager* layout_manager = GetShelfLayoutManager(); |
684 // Force an initial layout. | 684 // Force an initial layout. |
685 layout_manager->LayoutShelf(); | 685 layout_manager->LayoutShelf(); |
686 EXPECT_EQ(SHELF_VISIBLE, shelf->GetVisibilityState()); | 686 EXPECT_EQ(SHELF_VISIBLE, shelf->GetVisibilityState()); |
687 | 687 |
688 // Hide the shelf. | 688 // Hide the shelf. |
689 SetState(layout_manager, SHELF_HIDDEN); | 689 SetState(layout_manager, SHELF_HIDDEN); |
690 layout_manager->LayoutShelf(); | 690 layout_manager->LayoutShelf(); |
691 EXPECT_EQ(SHELF_HIDDEN, shelf->GetVisibilityState()); | 691 EXPECT_EQ(SHELF_HIDDEN, shelf->GetVisibilityState()); |
692 display::Display display = display::Screen::GetScreen()->GetPrimaryDisplay(); | 692 display::Display display = display::Screen::GetScreen()->GetPrimaryDisplay(); |
(...skipping 30 matching lines...) Expand all Loading... |
723 EXPECT_LE( | 723 EXPECT_LE( |
724 std::abs(initial_shelf_bounds.height() - current_shelf_bounds.height()), | 724 std::abs(initial_shelf_bounds.height() - current_shelf_bounds.height()), |
725 small_change); | 725 small_change); |
726 EXPECT_LE( | 726 EXPECT_LE( |
727 std::abs(initial_status_bounds.height() - current_status_bounds.height()), | 727 std::abs(initial_status_bounds.height() - current_status_bounds.height()), |
728 small_change); | 728 small_change); |
729 } | 729 } |
730 | 730 |
731 // Makes sure the shelf is sized when the status area changes size. | 731 // Makes sure the shelf is sized when the status area changes size. |
732 TEST_F(ShelfLayoutManagerTest, ShelfUpdatedWhenStatusAreaChangesSize) { | 732 TEST_F(ShelfLayoutManagerTest, ShelfUpdatedWhenStatusAreaChangesSize) { |
733 WmShelf* shelf = GetPrimaryShelf(); | 733 Shelf* shelf = GetPrimaryShelf(); |
734 ASSERT_TRUE(shelf); | 734 ASSERT_TRUE(shelf); |
735 ShelfWidget* shelf_widget = GetShelfWidget(); | 735 ShelfWidget* shelf_widget = GetShelfWidget(); |
736 ASSERT_TRUE(shelf_widget); | 736 ASSERT_TRUE(shelf_widget); |
737 ASSERT_TRUE(shelf_widget->status_area_widget()); | 737 ASSERT_TRUE(shelf_widget->status_area_widget()); |
738 shelf_widget->status_area_widget()->SetBounds(gfx::Rect(0, 0, 200, 200)); | 738 shelf_widget->status_area_widget()->SetBounds(gfx::Rect(0, 0, 200, 200)); |
739 EXPECT_EQ(200, shelf_widget->GetContentsView()->width() - | 739 EXPECT_EQ(200, shelf_widget->GetContentsView()->width() - |
740 shelf->GetShelfViewForTesting()->width()); | 740 shelf->GetShelfViewForTesting()->width()); |
741 } | 741 } |
742 | 742 |
743 // Various assertions around auto-hide. | 743 // Various assertions around auto-hide. |
744 TEST_F(ShelfLayoutManagerTest, AutoHide) { | 744 TEST_F(ShelfLayoutManagerTest, AutoHide) { |
745 // TODO: investigate failure in mash, http://crbug.com/695686. | 745 // TODO: investigate failure in mash, http://crbug.com/695686. |
746 if (Shell::GetAshConfig() == Config::MASH) | 746 if (Shell::GetAshConfig() == Config::MASH) |
747 return; | 747 return; |
748 | 748 |
749 ui::test::EventGenerator& generator(GetEventGenerator()); | 749 ui::test::EventGenerator& generator(GetEventGenerator()); |
750 | 750 |
751 WmShelf* shelf = GetPrimaryShelf(); | 751 Shelf* shelf = GetPrimaryShelf(); |
752 ShelfLayoutManager* layout_manager = GetShelfLayoutManager(); | 752 ShelfLayoutManager* layout_manager = GetShelfLayoutManager(); |
753 shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS); | 753 shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS); |
754 views::Widget* widget = CreateTestWidget(); | 754 views::Widget* widget = CreateTestWidget(); |
755 widget->Maximize(); | 755 widget->Maximize(); |
756 EXPECT_EQ(SHELF_AUTO_HIDE, shelf->GetVisibilityState()); | 756 EXPECT_EQ(SHELF_AUTO_HIDE, shelf->GetVisibilityState()); |
757 EXPECT_EQ(SHELF_AUTO_HIDE_HIDDEN, shelf->GetAutoHideState()); | 757 EXPECT_EQ(SHELF_AUTO_HIDE_HIDDEN, shelf->GetAutoHideState()); |
758 | 758 |
759 // LayoutShelf() forces the animation to completion, at which point the | 759 // LayoutShelf() forces the animation to completion, at which point the |
760 // shelf should go off the screen. | 760 // shelf should go off the screen. |
761 layout_manager->LayoutShelf(); | 761 layout_manager->LayoutShelf(); |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
808 if (Shell::GetAshConfig() == Config::MASH) | 808 if (Shell::GetAshConfig() == Config::MASH) |
809 return; | 809 return; |
810 | 810 |
811 UpdateDisplay("800x600,800x600"); | 811 UpdateDisplay("800x600,800x600"); |
812 // TODO: SetLayoutForCurrentDisplays() needs to ported to mash. | 812 // TODO: SetLayoutForCurrentDisplays() needs to ported to mash. |
813 // http://crbug.com/698043. | 813 // http://crbug.com/698043. |
814 Shell::Get()->display_manager()->SetLayoutForCurrentDisplays( | 814 Shell::Get()->display_manager()->SetLayoutForCurrentDisplays( |
815 display::test::CreateDisplayLayout(display_manager(), | 815 display::test::CreateDisplayLayout(display_manager(), |
816 display::DisplayPlacement::RIGHT, 0)); | 816 display::DisplayPlacement::RIGHT, 0)); |
817 // Put the primary monitor's shelf on the display boundary. | 817 // Put the primary monitor's shelf on the display boundary. |
818 WmShelf* shelf = GetPrimaryShelf(); | 818 Shelf* shelf = GetPrimaryShelf(); |
819 shelf->SetAlignment(SHELF_ALIGNMENT_RIGHT); | 819 shelf->SetAlignment(SHELF_ALIGNMENT_RIGHT); |
820 | 820 |
821 // Create a window because the shelf is always shown when no windows are | 821 // Create a window because the shelf is always shown when no windows are |
822 // visible. | 822 // visible. |
823 CreateTestWidget(); | 823 CreateTestWidget(); |
824 | 824 |
825 shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS); | 825 shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS); |
826 EXPECT_EQ(SHELF_AUTO_HIDE, shelf->GetVisibilityState()); | 826 EXPECT_EQ(SHELF_AUTO_HIDE, shelf->GetVisibilityState()); |
827 | 827 |
828 display::Display display = display::Screen::GetScreen()->GetPrimaryDisplay(); | 828 display::Display display = display::Screen::GetScreen()->GetPrimaryDisplay(); |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
891 | 891 |
892 // Moving to the left edge of the secondary display without first crossing | 892 // Moving to the left edge of the secondary display without first crossing |
893 // the primary display's right aligned shelf first should not show the shelf. | 893 // the primary display's right aligned shelf first should not show the shelf. |
894 generator.MoveMouseTo(right_edge + 2, y); | 894 generator.MoveMouseTo(right_edge + 2, y); |
895 UpdateAutoHideStateNow(); | 895 UpdateAutoHideStateNow(); |
896 EXPECT_EQ(SHELF_AUTO_HIDE_HIDDEN, shelf->GetAutoHideState()); | 896 EXPECT_EQ(SHELF_AUTO_HIDE_HIDDEN, shelf->GetAutoHideState()); |
897 } | 897 } |
898 | 898 |
899 // Assertions around the login screen. | 899 // Assertions around the login screen. |
900 TEST_F(ShelfLayoutManagerTest, VisibleWhenLoginScreenShowing) { | 900 TEST_F(ShelfLayoutManagerTest, VisibleWhenLoginScreenShowing) { |
901 WmShelf* shelf = GetPrimaryShelf(); | 901 Shelf* shelf = GetPrimaryShelf(); |
902 | 902 |
903 mojom::SessionInfoPtr info = mojom::SessionInfo::New(); | 903 mojom::SessionInfoPtr info = mojom::SessionInfo::New(); |
904 info->state = session_manager::SessionState::LOGIN_PRIMARY; | 904 info->state = session_manager::SessionState::LOGIN_PRIMARY; |
905 ash::Shell::Get()->session_controller()->SetSessionInfo(std::move(info)); | 905 ash::Shell::Get()->session_controller()->SetSessionInfo(std::move(info)); |
906 | 906 |
907 EXPECT_EQ(SHELF_VISIBLE, shelf->GetVisibilityState()); | 907 EXPECT_EQ(SHELF_VISIBLE, shelf->GetVisibilityState()); |
908 EXPECT_EQ(SHELF_BACKGROUND_OVERLAP, GetShelfWidget()->GetBackgroundType()); | 908 EXPECT_EQ(SHELF_BACKGROUND_OVERLAP, GetShelfWidget()->GetBackgroundType()); |
909 } | 909 } |
910 | 910 |
911 // Assertions around the lock screen showing. | 911 // Assertions around the lock screen showing. |
912 TEST_F(ShelfLayoutManagerTest, VisibleWhenLockScreenShowing) { | 912 TEST_F(ShelfLayoutManagerTest, VisibleWhenLockScreenShowing) { |
913 WmShelf* shelf = GetPrimaryShelf(); | 913 Shelf* shelf = GetPrimaryShelf(); |
914 ShelfLayoutManager* layout_manager = GetShelfLayoutManager(); | 914 ShelfLayoutManager* layout_manager = GetShelfLayoutManager(); |
915 shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS); | 915 shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS); |
916 views::Widget* widget = CreateTestWidget(); | 916 views::Widget* widget = CreateTestWidget(); |
917 widget->Maximize(); | 917 widget->Maximize(); |
918 EXPECT_EQ(SHELF_AUTO_HIDE, shelf->GetVisibilityState()); | 918 EXPECT_EQ(SHELF_AUTO_HIDE, shelf->GetVisibilityState()); |
919 EXPECT_EQ(SHELF_AUTO_HIDE_HIDDEN, shelf->GetAutoHideState()); | 919 EXPECT_EQ(SHELF_AUTO_HIDE_HIDDEN, shelf->GetAutoHideState()); |
920 | 920 |
921 // LayoutShelf() forces the animation to completion, at which point the | 921 // LayoutShelf() forces the animation to completion, at which point the |
922 // shelf should go off the screen. | 922 // shelf should go off the screen. |
923 layout_manager->LayoutShelf(); | 923 layout_manager->LayoutShelf(); |
(...skipping 11 matching lines...) Expand all Loading... |
935 EXPECT_EQ(SHELF_VISIBLE, shelf->GetVisibilityState()); | 935 EXPECT_EQ(SHELF_VISIBLE, shelf->GetVisibilityState()); |
936 EXPECT_EQ(SHELF_BACKGROUND_OVERLAP, GetShelfWidget()->GetBackgroundType()); | 936 EXPECT_EQ(SHELF_BACKGROUND_OVERLAP, GetShelfWidget()->GetBackgroundType()); |
937 | 937 |
938 UnlockScreen(); | 938 UnlockScreen(); |
939 EXPECT_EQ(SHELF_AUTO_HIDE, shelf->GetVisibilityState()); | 939 EXPECT_EQ(SHELF_AUTO_HIDE, shelf->GetVisibilityState()); |
940 EXPECT_EQ(SHELF_BACKGROUND_OVERLAP, GetShelfWidget()->GetBackgroundType()); | 940 EXPECT_EQ(SHELF_BACKGROUND_OVERLAP, GetShelfWidget()->GetBackgroundType()); |
941 } | 941 } |
942 | 942 |
943 // Assertions around SetAutoHideBehavior. | 943 // Assertions around SetAutoHideBehavior. |
944 TEST_F(ShelfLayoutManagerTest, SetAutoHideBehavior) { | 944 TEST_F(ShelfLayoutManagerTest, SetAutoHideBehavior) { |
945 WmShelf* shelf = GetPrimaryShelf(); | 945 Shelf* shelf = GetPrimaryShelf(); |
946 views::Widget* widget = CreateTestWidget(); | 946 views::Widget* widget = CreateTestWidget(); |
947 | 947 |
948 shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS); | 948 shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS); |
949 EXPECT_EQ(SHELF_AUTO_HIDE, shelf->GetVisibilityState()); | 949 EXPECT_EQ(SHELF_AUTO_HIDE, shelf->GetVisibilityState()); |
950 | 950 |
951 shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_NEVER); | 951 shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_NEVER); |
952 EXPECT_EQ(SHELF_VISIBLE, shelf->GetVisibilityState()); | 952 EXPECT_EQ(SHELF_VISIBLE, shelf->GetVisibilityState()); |
953 | 953 |
954 widget->Maximize(); | 954 widget->Maximize(); |
955 EXPECT_EQ(SHELF_VISIBLE, shelf->GetVisibilityState()); | 955 EXPECT_EQ(SHELF_VISIBLE, shelf->GetVisibilityState()); |
(...skipping 14 matching lines...) Expand all Loading... |
970 EXPECT_TRUE(shelf_widget->status_area_widget()->IsVisible()); | 970 EXPECT_TRUE(shelf_widget->status_area_widget()->IsVisible()); |
971 StepWidgetLayerAnimatorToEnd(shelf_widget); | 971 StepWidgetLayerAnimatorToEnd(shelf_widget); |
972 StepWidgetLayerAnimatorToEnd(shelf_widget->status_area_widget()); | 972 StepWidgetLayerAnimatorToEnd(shelf_widget->status_area_widget()); |
973 EXPECT_EQ(SHELF_VISIBLE, shelf->GetVisibilityState()); | 973 EXPECT_EQ(SHELF_VISIBLE, shelf->GetVisibilityState()); |
974 EXPECT_EQ(screen->GetPrimaryDisplay().work_area().bottom(), | 974 EXPECT_EQ(screen->GetPrimaryDisplay().work_area().bottom(), |
975 widget->GetWorkAreaBoundsInScreen().bottom()); | 975 widget->GetWorkAreaBoundsInScreen().bottom()); |
976 } | 976 } |
977 | 977 |
978 // Verifies the shelf is visible when status/shelf is focused. | 978 // Verifies the shelf is visible when status/shelf is focused. |
979 TEST_F(ShelfLayoutManagerTest, VisibleWhenStatusOrShelfFocused) { | 979 TEST_F(ShelfLayoutManagerTest, VisibleWhenStatusOrShelfFocused) { |
980 WmShelf* shelf = GetPrimaryShelf(); | 980 Shelf* shelf = GetPrimaryShelf(); |
981 views::Widget* widget = CreateTestWidget(); | 981 views::Widget* widget = CreateTestWidget(); |
982 shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS); | 982 shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS); |
983 EXPECT_EQ(SHELF_AUTO_HIDE, shelf->GetVisibilityState()); | 983 EXPECT_EQ(SHELF_AUTO_HIDE, shelf->GetVisibilityState()); |
984 EXPECT_EQ(SHELF_AUTO_HIDE_HIDDEN, shelf->GetAutoHideState()); | 984 EXPECT_EQ(SHELF_AUTO_HIDE_HIDDEN, shelf->GetAutoHideState()); |
985 | 985 |
986 // Focus the shelf. Have to go through the focus cycler as normal focus | 986 // Focus the shelf. Have to go through the focus cycler as normal focus |
987 // requests to it do nothing. | 987 // requests to it do nothing. |
988 GetShelfWidget()->GetFocusCycler()->RotateFocus(FocusCycler::FORWARD); | 988 GetShelfWidget()->GetFocusCycler()->RotateFocus(FocusCycler::FORWARD); |
989 EXPECT_EQ(SHELF_AUTO_HIDE_SHOWN, shelf->GetAutoHideState()); | 989 EXPECT_EQ(SHELF_AUTO_HIDE_SHOWN, shelf->GetAutoHideState()); |
990 | 990 |
991 widget->Activate(); | 991 widget->Activate(); |
992 EXPECT_EQ(SHELF_AUTO_HIDE_HIDDEN, shelf->GetAutoHideState()); | 992 EXPECT_EQ(SHELF_AUTO_HIDE_HIDDEN, shelf->GetAutoHideState()); |
993 | 993 |
994 // Trying to activate the status should fail, since we only allow activating | 994 // Trying to activate the status should fail, since we only allow activating |
995 // it when the user is using the keyboard (i.e. through FocusCycler). | 995 // it when the user is using the keyboard (i.e. through FocusCycler). |
996 GetShelfWidget()->status_area_widget()->Activate(); | 996 GetShelfWidget()->status_area_widget()->Activate(); |
997 EXPECT_EQ(SHELF_AUTO_HIDE_HIDDEN, shelf->GetAutoHideState()); | 997 EXPECT_EQ(SHELF_AUTO_HIDE_HIDDEN, shelf->GetAutoHideState()); |
998 | 998 |
999 GetShelfWidget()->GetFocusCycler()->RotateFocus(FocusCycler::FORWARD); | 999 GetShelfWidget()->GetFocusCycler()->RotateFocus(FocusCycler::FORWARD); |
1000 EXPECT_EQ(SHELF_AUTO_HIDE_SHOWN, shelf->GetAutoHideState()); | 1000 EXPECT_EQ(SHELF_AUTO_HIDE_SHOWN, shelf->GetAutoHideState()); |
1001 } | 1001 } |
1002 | 1002 |
1003 // Ensure a SHELF_VISIBLE shelf stays visible when the app list is shown. | 1003 // Ensure a SHELF_VISIBLE shelf stays visible when the app list is shown. |
1004 TEST_F(ShelfLayoutManagerTest, OpenAppListWithShelfVisibleState) { | 1004 TEST_F(ShelfLayoutManagerTest, OpenAppListWithShelfVisibleState) { |
1005 WmShelf* shelf = GetPrimaryShelf(); | 1005 Shelf* shelf = GetPrimaryShelf(); |
1006 shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_NEVER); | 1006 shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_NEVER); |
1007 | 1007 |
1008 // The tested behavior relies on the app list presenter implementation. | 1008 // The tested behavior relies on the app list presenter implementation. |
1009 test::TestAppListViewPresenterImpl app_list_presenter_impl; | 1009 test::TestAppListViewPresenterImpl app_list_presenter_impl; |
1010 | 1010 |
1011 // Create a normal unmaximized window; the shelf should be visible. | 1011 // Create a normal unmaximized window; the shelf should be visible. |
1012 aura::Window* window = CreateTestWindow(); | 1012 aura::Window* window = CreateTestWindow(); |
1013 window->SetBounds(gfx::Rect(0, 0, 100, 100)); | 1013 window->SetBounds(gfx::Rect(0, 0, 100, 100)); |
1014 window->Show(); | 1014 window->Show(); |
1015 EXPECT_FALSE(app_list_presenter_impl.GetTargetVisibility()); | 1015 EXPECT_FALSE(app_list_presenter_impl.GetTargetVisibility()); |
(...skipping 10 matching lines...) Expand all Loading... |
1026 | 1026 |
1027 // Hide the app list and the shelf stays visible. | 1027 // Hide the app list and the shelf stays visible. |
1028 app_list_presenter_impl.Dismiss(); | 1028 app_list_presenter_impl.Dismiss(); |
1029 EXPECT_FALSE(app_list_presenter_impl.GetTargetVisibility()); | 1029 EXPECT_FALSE(app_list_presenter_impl.GetTargetVisibility()); |
1030 EXPECT_EQ(SHELF_VISIBLE, shelf->GetVisibilityState()); | 1030 EXPECT_EQ(SHELF_VISIBLE, shelf->GetVisibilityState()); |
1031 } | 1031 } |
1032 | 1032 |
1033 // Ensure a SHELF_AUTO_HIDE shelf is shown temporarily (SHELF_AUTO_HIDE_SHOWN) | 1033 // Ensure a SHELF_AUTO_HIDE shelf is shown temporarily (SHELF_AUTO_HIDE_SHOWN) |
1034 // when the app list is shown, but the visibility state doesn't change. | 1034 // when the app list is shown, but the visibility state doesn't change. |
1035 TEST_F(ShelfLayoutManagerTest, OpenAppListWithShelfAutoHideState) { | 1035 TEST_F(ShelfLayoutManagerTest, OpenAppListWithShelfAutoHideState) { |
1036 WmShelf* shelf = GetPrimaryShelf(); | 1036 Shelf* shelf = GetPrimaryShelf(); |
1037 shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS); | 1037 shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS); |
1038 | 1038 |
1039 // The tested behavior relies on the app list presenter implementation. | 1039 // The tested behavior relies on the app list presenter implementation. |
1040 test::TestAppListViewPresenterImpl app_list_presenter_impl; | 1040 test::TestAppListViewPresenterImpl app_list_presenter_impl; |
1041 | 1041 |
1042 // Create a normal unmaximized window; the shelf should be hidden. | 1042 // Create a normal unmaximized window; the shelf should be hidden. |
1043 aura::Window* window = CreateTestWindow(); | 1043 aura::Window* window = CreateTestWindow(); |
1044 window->SetBounds(gfx::Rect(0, 0, 100, 100)); | 1044 window->SetBounds(gfx::Rect(0, 0, 100, 100)); |
1045 window->Show(); | 1045 window->Show(); |
1046 EXPECT_FALSE(app_list_presenter_impl.GetTargetVisibility()); | 1046 EXPECT_FALSE(app_list_presenter_impl.GetTargetVisibility()); |
(...skipping 23 matching lines...) Expand all Loading... |
1070 // Makes sure that when we have dual displays, with one or both shelves are set | 1070 // Makes sure that when we have dual displays, with one or both shelves are set |
1071 // to AutoHide, viewing the AppList on one of them doesn't unhide the other | 1071 // to AutoHide, viewing the AppList on one of them doesn't unhide the other |
1072 // hidden shelf. | 1072 // hidden shelf. |
1073 TEST_F(ShelfLayoutManagerTest, DualDisplayOpenAppListWithShelfAutoHideState) { | 1073 TEST_F(ShelfLayoutManagerTest, DualDisplayOpenAppListWithShelfAutoHideState) { |
1074 // Create two displays. | 1074 // Create two displays. |
1075 UpdateDisplay("0+0-200x200,+200+0-100x100"); | 1075 UpdateDisplay("0+0-200x200,+200+0-100x100"); |
1076 aura::Window::Windows root_windows = Shell::GetAllRootWindows(); | 1076 aura::Window::Windows root_windows = Shell::GetAllRootWindows(); |
1077 EXPECT_EQ(root_windows.size(), 2U); | 1077 EXPECT_EQ(root_windows.size(), 2U); |
1078 | 1078 |
1079 // Get the shelves in both displays and set them to be 'AutoHide'. | 1079 // Get the shelves in both displays and set them to be 'AutoHide'. |
1080 WmShelf* shelf_1 = GetRootWindowController(root_windows[0])->wm_shelf(); | 1080 Shelf* shelf_1 = GetRootWindowController(root_windows[0])->shelf(); |
1081 WmShelf* shelf_2 = GetRootWindowController(root_windows[1])->wm_shelf(); | 1081 Shelf* shelf_2 = GetRootWindowController(root_windows[1])->shelf(); |
1082 EXPECT_NE(shelf_1, shelf_2); | 1082 EXPECT_NE(shelf_1, shelf_2); |
1083 EXPECT_NE(shelf_1->GetWindow()->GetRootWindow(), | 1083 EXPECT_NE(shelf_1->GetWindow()->GetRootWindow(), |
1084 shelf_2->GetWindow()->GetRootWindow()); | 1084 shelf_2->GetWindow()->GetRootWindow()); |
1085 shelf_1->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS); | 1085 shelf_1->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS); |
1086 shelf_1->shelf_layout_manager()->LayoutShelf(); | 1086 shelf_1->shelf_layout_manager()->LayoutShelf(); |
1087 shelf_2->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS); | 1087 shelf_2->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS); |
1088 shelf_2->shelf_layout_manager()->LayoutShelf(); | 1088 shelf_2->shelf_layout_manager()->LayoutShelf(); |
1089 | 1089 |
1090 // Create a window in each display and show them in maximized state. | 1090 // Create a window in each display and show them in maximized state. |
1091 aura::Window* window_1 = CreateTestWindowInParent(root_windows[0]); | 1091 aura::Window* window_1 = CreateTestWindowInParent(root_windows[0]); |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1134 EXPECT_FALSE(app_list_presenter_impl.GetTargetVisibility()); | 1134 EXPECT_FALSE(app_list_presenter_impl.GetTargetVisibility()); |
1135 EXPECT_EQ(SHELF_AUTO_HIDE, shelf_1->GetVisibilityState()); | 1135 EXPECT_EQ(SHELF_AUTO_HIDE, shelf_1->GetVisibilityState()); |
1136 EXPECT_EQ(SHELF_AUTO_HIDE, shelf_2->GetVisibilityState()); | 1136 EXPECT_EQ(SHELF_AUTO_HIDE, shelf_2->GetVisibilityState()); |
1137 EXPECT_EQ(SHELF_AUTO_HIDE_HIDDEN, shelf_1->GetAutoHideState()); | 1137 EXPECT_EQ(SHELF_AUTO_HIDE_HIDDEN, shelf_1->GetAutoHideState()); |
1138 EXPECT_EQ(SHELF_AUTO_HIDE_HIDDEN, shelf_2->GetAutoHideState()); | 1138 EXPECT_EQ(SHELF_AUTO_HIDE_HIDDEN, shelf_2->GetAutoHideState()); |
1139 } | 1139 } |
1140 | 1140 |
1141 // Ensure a SHELF_HIDDEN shelf (for a fullscreen window) is shown temporarily | 1141 // Ensure a SHELF_HIDDEN shelf (for a fullscreen window) is shown temporarily |
1142 // when the app list is shown, and hidden again when the app list is dismissed. | 1142 // when the app list is shown, and hidden again when the app list is dismissed. |
1143 TEST_F(ShelfLayoutManagerTest, OpenAppListWithShelfHiddenState) { | 1143 TEST_F(ShelfLayoutManagerTest, OpenAppListWithShelfHiddenState) { |
1144 WmShelf* shelf = GetPrimaryShelf(); | 1144 Shelf* shelf = GetPrimaryShelf(); |
1145 | 1145 |
1146 // The tested behavior relies on the app list presenter implementation. | 1146 // The tested behavior relies on the app list presenter implementation. |
1147 test::TestAppListViewPresenterImpl app_list_presenter_impl; | 1147 test::TestAppListViewPresenterImpl app_list_presenter_impl; |
1148 | 1148 |
1149 // Create a window and make it full screen; the shelf should be hidden. | 1149 // Create a window and make it full screen; the shelf should be hidden. |
1150 aura::Window* window = CreateTestWindow(); | 1150 aura::Window* window = CreateTestWindow(); |
1151 window->SetBounds(gfx::Rect(0, 0, 100, 100)); | 1151 window->SetBounds(gfx::Rect(0, 0, 100, 100)); |
1152 window->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_FULLSCREEN); | 1152 window->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_FULLSCREEN); |
1153 window->Show(); | 1153 window->Show(); |
1154 wm::ActivateWindow(window); | 1154 wm::ActivateWindow(window); |
(...skipping 11 matching lines...) Expand all Loading... |
1166 | 1166 |
1167 // Hide the app list and the shelf should be hidden again. | 1167 // Hide the app list and the shelf should be hidden again. |
1168 app_list_presenter_impl.Dismiss(); | 1168 app_list_presenter_impl.Dismiss(); |
1169 EXPECT_FALSE(app_list_presenter_impl.GetTargetVisibility()); | 1169 EXPECT_FALSE(app_list_presenter_impl.GetTargetVisibility()); |
1170 EXPECT_EQ(SHELF_HIDDEN, shelf->GetVisibilityState()); | 1170 EXPECT_EQ(SHELF_HIDDEN, shelf->GetVisibilityState()); |
1171 } | 1171 } |
1172 | 1172 |
1173 // Tests the correct behavior of the shelf when there is a system modal window | 1173 // Tests the correct behavior of the shelf when there is a system modal window |
1174 // open when we have a single display. | 1174 // open when we have a single display. |
1175 TEST_F(ShelfLayoutManagerTest, ShelfWithSystemModalWindowSingleDisplay) { | 1175 TEST_F(ShelfLayoutManagerTest, ShelfWithSystemModalWindowSingleDisplay) { |
1176 WmShelf* shelf = GetPrimaryShelf(); | 1176 Shelf* shelf = GetPrimaryShelf(); |
1177 ShelfLayoutManager* layout_manager = GetShelfLayoutManager(); | 1177 ShelfLayoutManager* layout_manager = GetShelfLayoutManager(); |
1178 layout_manager->LayoutShelf(); | 1178 layout_manager->LayoutShelf(); |
1179 shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS); | 1179 shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS); |
1180 | 1180 |
1181 aura::Window* window = CreateTestWindow(); | 1181 aura::Window* window = CreateTestWindow(); |
1182 window->SetBounds(gfx::Rect(0, 0, 100, 100)); | 1182 window->SetBounds(gfx::Rect(0, 0, 100, 100)); |
1183 window->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_MAXIMIZED); | 1183 window->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_MAXIMIZED); |
1184 window->Show(); | 1184 window->Show(); |
1185 wm::ActivateWindow(window); | 1185 wm::ActivateWindow(window); |
1186 | 1186 |
1187 // Enable system modal dialog, and make sure shelf is still hidden. | 1187 // Enable system modal dialog, and make sure shelf is still hidden. |
1188 ShellPort::Get()->SimulateModalWindowOpenForTesting(true); | 1188 ShellPort::Get()->SimulateModalWindowOpenForTesting(true); |
1189 EXPECT_TRUE(ShellPort::Get()->IsSystemModalWindowOpen()); | 1189 EXPECT_TRUE(ShellPort::Get()->IsSystemModalWindowOpen()); |
1190 EXPECT_FALSE(wm::CanActivateWindow(window)); | 1190 EXPECT_FALSE(wm::CanActivateWindow(window)); |
1191 Shell::Get()->UpdateShelfVisibility(); | 1191 Shell::Get()->UpdateShelfVisibility(); |
1192 EXPECT_EQ(SHELF_AUTO_HIDE, shelf->GetVisibilityState()); | 1192 EXPECT_EQ(SHELF_AUTO_HIDE, shelf->GetVisibilityState()); |
1193 EXPECT_EQ(SHELF_AUTO_HIDE_HIDDEN, shelf->GetAutoHideState()); | 1193 EXPECT_EQ(SHELF_AUTO_HIDE_HIDDEN, shelf->GetAutoHideState()); |
1194 } | 1194 } |
1195 | 1195 |
1196 // Tests the correct behavior of the shelf when there is a system modal window | 1196 // Tests the correct behavior of the shelf when there is a system modal window |
1197 // open when we have dual display. | 1197 // open when we have dual display. |
1198 TEST_F(ShelfLayoutManagerTest, ShelfWithSystemModalWindowDualDisplay) { | 1198 TEST_F(ShelfLayoutManagerTest, ShelfWithSystemModalWindowDualDisplay) { |
1199 // Create two displays. | 1199 // Create two displays. |
1200 UpdateDisplay("200x200,100x100"); | 1200 UpdateDisplay("200x200,100x100"); |
1201 aura::Window::Windows root_windows = Shell::GetAllRootWindows(); | 1201 aura::Window::Windows root_windows = Shell::GetAllRootWindows(); |
1202 EXPECT_EQ(2U, root_windows.size()); | 1202 EXPECT_EQ(2U, root_windows.size()); |
1203 | 1203 |
1204 // Get the shelves in both displays and set them to be 'AutoHide'. | 1204 // Get the shelves in both displays and set them to be 'AutoHide'. |
1205 WmShelf* shelf_1 = GetRootWindowController(root_windows[0])->wm_shelf(); | 1205 Shelf* shelf_1 = GetRootWindowController(root_windows[0])->shelf(); |
1206 WmShelf* shelf_2 = GetRootWindowController(root_windows[1])->wm_shelf(); | 1206 Shelf* shelf_2 = GetRootWindowController(root_windows[1])->shelf(); |
1207 EXPECT_NE(shelf_1, shelf_2); | 1207 EXPECT_NE(shelf_1, shelf_2); |
1208 EXPECT_NE(shelf_1->GetWindow()->GetRootWindow(), | 1208 EXPECT_NE(shelf_1->GetWindow()->GetRootWindow(), |
1209 shelf_2->GetWindow()->GetRootWindow()); | 1209 shelf_2->GetWindow()->GetRootWindow()); |
1210 shelf_1->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS); | 1210 shelf_1->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS); |
1211 shelf_1->shelf_layout_manager()->LayoutShelf(); | 1211 shelf_1->shelf_layout_manager()->LayoutShelf(); |
1212 shelf_2->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS); | 1212 shelf_2->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS); |
1213 shelf_2->shelf_layout_manager()->LayoutShelf(); | 1213 shelf_2->shelf_layout_manager()->LayoutShelf(); |
1214 | 1214 |
1215 // Create a window in each display and show them in maximized state. | 1215 // Create a window in each display and show them in maximized state. |
1216 aura::Window* window_1 = CreateTestWindowInParent(root_windows[0]); | 1216 aura::Window* window_1 = CreateTestWindowInParent(root_windows[0]); |
(...skipping 20 matching lines...) Expand all Loading... |
1237 Shell::Get()->UpdateShelfVisibility(); | 1237 Shell::Get()->UpdateShelfVisibility(); |
1238 EXPECT_EQ(SHELF_AUTO_HIDE, shelf_1->GetVisibilityState()); | 1238 EXPECT_EQ(SHELF_AUTO_HIDE, shelf_1->GetVisibilityState()); |
1239 EXPECT_EQ(SHELF_AUTO_HIDE_HIDDEN, shelf_1->GetAutoHideState()); | 1239 EXPECT_EQ(SHELF_AUTO_HIDE_HIDDEN, shelf_1->GetAutoHideState()); |
1240 EXPECT_EQ(SHELF_AUTO_HIDE, shelf_2->GetVisibilityState()); | 1240 EXPECT_EQ(SHELF_AUTO_HIDE, shelf_2->GetVisibilityState()); |
1241 EXPECT_EQ(SHELF_AUTO_HIDE_HIDDEN, shelf_2->GetAutoHideState()); | 1241 EXPECT_EQ(SHELF_AUTO_HIDE_HIDDEN, shelf_2->GetAutoHideState()); |
1242 } | 1242 } |
1243 | 1243 |
1244 // Tests that the shelf is only hidden for a fullscreen window at the front and | 1244 // Tests that the shelf is only hidden for a fullscreen window at the front and |
1245 // toggles visibility when another window is activated. | 1245 // toggles visibility when another window is activated. |
1246 TEST_F(ShelfLayoutManagerTest, FullscreenWindowInFrontHidesShelf) { | 1246 TEST_F(ShelfLayoutManagerTest, FullscreenWindowInFrontHidesShelf) { |
1247 WmShelf* shelf = GetPrimaryShelf(); | 1247 Shelf* shelf = GetPrimaryShelf(); |
1248 | 1248 |
1249 // Create a window and make it full screen. | 1249 // Create a window and make it full screen. |
1250 aura::Window* window1 = CreateTestWindow(); | 1250 aura::Window* window1 = CreateTestWindow(); |
1251 window1->SetBounds(gfx::Rect(0, 0, 100, 100)); | 1251 window1->SetBounds(gfx::Rect(0, 0, 100, 100)); |
1252 window1->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_FULLSCREEN); | 1252 window1->SetProperty(aura::client::kShowStateKey, ui::SHOW_STATE_FULLSCREEN); |
1253 window1->Show(); | 1253 window1->Show(); |
1254 | 1254 |
1255 aura::Window* window2 = CreateTestWindow(); | 1255 aura::Window* window2 = CreateTestWindow(); |
1256 window2->SetBounds(gfx::Rect(0, 0, 100, 100)); | 1256 window2->SetBounds(gfx::Rect(0, 0, 100, 100)); |
1257 window2->Show(); | 1257 window2->Show(); |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1297 SHELF_VISIBLE, | 1297 SHELF_VISIBLE, |
1298 root_window_controllers[1]->GetShelfLayoutManager()->visibility_state()); | 1298 root_window_controllers[1]->GetShelfLayoutManager()->visibility_state()); |
1299 } | 1299 } |
1300 | 1300 |
1301 // Test for Pinned mode. | 1301 // Test for Pinned mode. |
1302 TEST_F(ShelfLayoutManagerTest, PinnedWindowHidesShelf) { | 1302 TEST_F(ShelfLayoutManagerTest, PinnedWindowHidesShelf) { |
1303 // TODO: investigate failure in mash, http://crbug.com/695686. | 1303 // TODO: investigate failure in mash, http://crbug.com/695686. |
1304 if (Shell::GetAshConfig() == Config::MASH) | 1304 if (Shell::GetAshConfig() == Config::MASH) |
1305 return; | 1305 return; |
1306 | 1306 |
1307 WmShelf* shelf = GetPrimaryShelf(); | 1307 Shelf* shelf = GetPrimaryShelf(); |
1308 | 1308 |
1309 aura::Window* window1 = CreateTestWindow(); | 1309 aura::Window* window1 = CreateTestWindow(); |
1310 window1->SetBounds(gfx::Rect(0, 0, 100, 100)); | 1310 window1->SetBounds(gfx::Rect(0, 0, 100, 100)); |
1311 window1->Show(); | 1311 window1->Show(); |
1312 | 1312 |
1313 EXPECT_EQ(SHELF_VISIBLE, shelf->GetVisibilityState()); | 1313 EXPECT_EQ(SHELF_VISIBLE, shelf->GetVisibilityState()); |
1314 | 1314 |
1315 wm::PinWindow(window1, /* trusted */ false); | 1315 wm::PinWindow(window1, /* trusted */ false); |
1316 EXPECT_EQ(SHELF_HIDDEN, shelf->GetVisibilityState()); | 1316 EXPECT_EQ(SHELF_HIDDEN, shelf->GetVisibilityState()); |
1317 | 1317 |
1318 WmWindow::Get(window1)->GetWindowState()->Restore(); | 1318 WmWindow::Get(window1)->GetWindowState()->Restore(); |
1319 EXPECT_EQ(SHELF_VISIBLE, shelf->GetVisibilityState()); | 1319 EXPECT_EQ(SHELF_VISIBLE, shelf->GetVisibilityState()); |
1320 } | 1320 } |
1321 | 1321 |
1322 // Tests SHELF_ALIGNMENT_(LEFT, RIGHT). | 1322 // Tests SHELF_ALIGNMENT_(LEFT, RIGHT). |
1323 TEST_F(ShelfLayoutManagerTest, SetAlignment) { | 1323 TEST_F(ShelfLayoutManagerTest, SetAlignment) { |
1324 WmShelf* shelf = GetPrimaryShelf(); | 1324 Shelf* shelf = GetPrimaryShelf(); |
1325 ShelfLayoutManager* layout_manager = GetShelfLayoutManager(); | 1325 ShelfLayoutManager* layout_manager = GetShelfLayoutManager(); |
1326 // Force an initial layout. | 1326 // Force an initial layout. |
1327 shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_NEVER); | 1327 shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_NEVER); |
1328 layout_manager->LayoutShelf(); | 1328 layout_manager->LayoutShelf(); |
1329 EXPECT_EQ(SHELF_VISIBLE, shelf->GetVisibilityState()); | 1329 EXPECT_EQ(SHELF_VISIBLE, shelf->GetVisibilityState()); |
1330 | 1330 |
1331 shelf->SetAlignment(SHELF_ALIGNMENT_LEFT); | 1331 shelf->SetAlignment(SHELF_ALIGNMENT_LEFT); |
1332 gfx::Rect shelf_bounds(GetShelfWidget()->GetWindowBoundsInScreen()); | 1332 gfx::Rect shelf_bounds(GetShelfWidget()->GetWindowBoundsInScreen()); |
1333 display::Display display = display::Screen::GetScreen()->GetPrimaryDisplay(); | 1333 display::Display display = display::Screen::GetScreen()->GetPrimaryDisplay(); |
1334 ASSERT_NE(-1, display.id()); | 1334 ASSERT_NE(-1, display.id()); |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1388 | 1388 |
1389 TEST_F(ShelfLayoutManagerTest, GestureDrag) { | 1389 TEST_F(ShelfLayoutManagerTest, GestureDrag) { |
1390 // TODO: investigate failure in mash, http://crbug.com/695686. | 1390 // TODO: investigate failure in mash, http://crbug.com/695686. |
1391 if (Shell::GetAshConfig() == Config::MASH) | 1391 if (Shell::GetAshConfig() == Config::MASH) |
1392 return; | 1392 return; |
1393 | 1393 |
1394 // Slop is an implementation detail of gesture recognition, and complicates | 1394 // Slop is an implementation detail of gesture recognition, and complicates |
1395 // these tests. Ignore it. | 1395 // these tests. Ignore it. |
1396 ui::GestureConfiguration::GetInstance() | 1396 ui::GestureConfiguration::GetInstance() |
1397 ->set_max_touch_move_in_pixels_for_click(0); | 1397 ->set_max_touch_move_in_pixels_for_click(0); |
1398 WmShelf* shelf = GetPrimaryShelf(); | 1398 Shelf* shelf = GetPrimaryShelf(); |
1399 { | 1399 { |
1400 SCOPED_TRACE("BOTTOM"); | 1400 SCOPED_TRACE("BOTTOM"); |
1401 shelf->SetAlignment(SHELF_ALIGNMENT_BOTTOM); | 1401 shelf->SetAlignment(SHELF_ALIGNMENT_BOTTOM); |
1402 RunGestureDragTests(gfx::Vector2d(0, 120)); | 1402 RunGestureDragTests(gfx::Vector2d(0, 120)); |
1403 } | 1403 } |
1404 | 1404 |
1405 { | 1405 { |
1406 SCOPED_TRACE("LEFT"); | 1406 SCOPED_TRACE("LEFT"); |
1407 shelf->SetAlignment(SHELF_ALIGNMENT_LEFT); | 1407 shelf->SetAlignment(SHELF_ALIGNMENT_LEFT); |
1408 RunGestureDragTests(gfx::Vector2d(-120, 0)); | 1408 RunGestureDragTests(gfx::Vector2d(-120, 0)); |
1409 } | 1409 } |
1410 | 1410 |
1411 { | 1411 { |
1412 SCOPED_TRACE("RIGHT"); | 1412 SCOPED_TRACE("RIGHT"); |
1413 shelf->SetAlignment(SHELF_ALIGNMENT_RIGHT); | 1413 shelf->SetAlignment(SHELF_ALIGNMENT_RIGHT); |
1414 RunGestureDragTests(gfx::Vector2d(120, 0)); | 1414 RunGestureDragTests(gfx::Vector2d(120, 0)); |
1415 } | 1415 } |
1416 } | 1416 } |
1417 | 1417 |
1418 TEST_F(ShelfLayoutManagerTest, WindowVisibilityDisablesAutoHide) { | 1418 TEST_F(ShelfLayoutManagerTest, WindowVisibilityDisablesAutoHide) { |
1419 UpdateDisplay("800x600,800x600"); | 1419 UpdateDisplay("800x600,800x600"); |
1420 WmShelf* shelf = GetPrimaryShelf(); | 1420 Shelf* shelf = GetPrimaryShelf(); |
1421 ShelfLayoutManager* layout_manager = GetShelfLayoutManager(); | 1421 ShelfLayoutManager* layout_manager = GetShelfLayoutManager(); |
1422 layout_manager->LayoutShelf(); | 1422 layout_manager->LayoutShelf(); |
1423 shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS); | 1423 shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS); |
1424 | 1424 |
1425 // Create a visible window so auto-hide behavior is enforced | 1425 // Create a visible window so auto-hide behavior is enforced |
1426 views::Widget* dummy = CreateTestWidget(); | 1426 views::Widget* dummy = CreateTestWidget(); |
1427 | 1427 |
1428 // Window visible => auto hide behaves normally. | 1428 // Window visible => auto hide behaves normally. |
1429 layout_manager->UpdateVisibilityState(); | 1429 layout_manager->UpdateVisibilityState(); |
1430 EXPECT_EQ(SHELF_AUTO_HIDE_HIDDEN, shelf->GetAutoHideState()); | 1430 EXPECT_EQ(SHELF_AUTO_HIDE_HIDDEN, shelf->GetAutoHideState()); |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1464 // Move back to primary display. | 1464 // Move back to primary display. |
1465 window2->SetBounds(gfx::Rect(50, 50, 50, 50)); | 1465 window2->SetBounds(gfx::Rect(50, 50, 50, 50)); |
1466 EXPECT_EQ(SHELF_AUTO_HIDE_HIDDEN, shelf->GetAutoHideState()); | 1466 EXPECT_EQ(SHELF_AUTO_HIDE_HIDDEN, shelf->GetAutoHideState()); |
1467 } | 1467 } |
1468 | 1468 |
1469 // Test that the shelf animates back to its normal position upon a user | 1469 // Test that the shelf animates back to its normal position upon a user |
1470 // completing a gesture drag. | 1470 // completing a gesture drag. |
1471 TEST_F(ShelfLayoutManagerTest, ShelfAnimatesWhenGestureComplete) { | 1471 TEST_F(ShelfLayoutManagerTest, ShelfAnimatesWhenGestureComplete) { |
1472 // Test the shelf animates back to its original visible bounds when it is | 1472 // Test the shelf animates back to its original visible bounds when it is |
1473 // dragged when there are no visible windows. | 1473 // dragged when there are no visible windows. |
1474 WmShelf* shelf = GetPrimaryShelf(); | 1474 Shelf* shelf = GetPrimaryShelf(); |
1475 shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS); | 1475 shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS); |
1476 EXPECT_EQ(SHELF_AUTO_HIDE, shelf->GetVisibilityState()); | 1476 EXPECT_EQ(SHELF_AUTO_HIDE, shelf->GetVisibilityState()); |
1477 EXPECT_EQ(SHELF_AUTO_HIDE_SHOWN, shelf->GetAutoHideState()); | 1477 EXPECT_EQ(SHELF_AUTO_HIDE_SHOWN, shelf->GetAutoHideState()); |
1478 gfx::Rect visible_bounds = GetShelfWidget()->GetWindowBoundsInScreen(); | 1478 gfx::Rect visible_bounds = GetShelfWidget()->GetWindowBoundsInScreen(); |
1479 { | 1479 { |
1480 // Enable animations so that we can make sure that they occur. | 1480 // Enable animations so that we can make sure that they occur. |
1481 ui::ScopedAnimationDurationScaleMode regular_animations( | 1481 ui::ScopedAnimationDurationScaleMode regular_animations( |
1482 ui::ScopedAnimationDurationScaleMode::NON_ZERO_DURATION); | 1482 ui::ScopedAnimationDurationScaleMode::NON_ZERO_DURATION); |
1483 | 1483 |
1484 ui::test::EventGenerator& generator(GetEventGenerator()); | 1484 ui::test::EventGenerator& generator(GetEventGenerator()); |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1531 base::TimeDelta::FromMilliseconds(10), 1); | 1531 base::TimeDelta::FromMilliseconds(10), 1); |
1532 EXPECT_EQ(SHELF_AUTO_HIDE, shelf->GetVisibilityState()); | 1532 EXPECT_EQ(SHELF_AUTO_HIDE, shelf->GetVisibilityState()); |
1533 EXPECT_EQ(SHELF_AUTO_HIDE_HIDDEN, shelf->GetAutoHideState()); | 1533 EXPECT_EQ(SHELF_AUTO_HIDE_HIDDEN, shelf->GetAutoHideState()); |
1534 ShelfAnimationWaiter waiter2(auto_hidden_bounds); | 1534 ShelfAnimationWaiter waiter2(auto_hidden_bounds); |
1535 waiter2.WaitTillDoneAnimating(); | 1535 waiter2.WaitTillDoneAnimating(); |
1536 EXPECT_TRUE(waiter2.WasValidAnimation()); | 1536 EXPECT_TRUE(waiter2.WasValidAnimation()); |
1537 } | 1537 } |
1538 } | 1538 } |
1539 | 1539 |
1540 TEST_F(ShelfLayoutManagerTest, AutohideShelfForAutohideWhenActiveWindow) { | 1540 TEST_F(ShelfLayoutManagerTest, AutohideShelfForAutohideWhenActiveWindow) { |
1541 WmShelf* shelf = GetPrimaryShelf(); | 1541 Shelf* shelf = GetPrimaryShelf(); |
1542 | 1542 |
1543 views::Widget* widget_one = CreateTestWidget(); | 1543 views::Widget* widget_one = CreateTestWidget(); |
1544 views::Widget* widget_two = CreateTestWidget(); | 1544 views::Widget* widget_two = CreateTestWidget(); |
1545 aura::Window* window_two = widget_two->GetNativeWindow(); | 1545 aura::Window* window_two = widget_two->GetNativeWindow(); |
1546 | 1546 |
1547 // Turn on hide_shelf_when_active behavior for window two - shelf should | 1547 // Turn on hide_shelf_when_active behavior for window two - shelf should |
1548 // still be visible when window two is made active since it is not yet | 1548 // still be visible when window two is made active since it is not yet |
1549 // maximized. | 1549 // maximized. |
1550 widget_one->Activate(); | 1550 widget_one->Activate(); |
1551 EXPECT_EQ(SHELF_VISIBLE, shelf->GetVisibilityState()); | 1551 EXPECT_EQ(SHELF_VISIBLE, shelf->GetVisibilityState()); |
(...skipping 20 matching lines...) Expand all Loading... |
1572 ->set_autohide_shelf_when_maximized_or_fullscreen(false); | 1572 ->set_autohide_shelf_when_maximized_or_fullscreen(false); |
1573 widget_two->Activate(); | 1573 widget_two->Activate(); |
1574 EXPECT_EQ(SHELF_VISIBLE, shelf->GetVisibilityState()); | 1574 EXPECT_EQ(SHELF_VISIBLE, shelf->GetVisibilityState()); |
1575 } | 1575 } |
1576 | 1576 |
1577 TEST_F(ShelfLayoutManagerTest, ShelfFlickerOnTrayActivation) { | 1577 TEST_F(ShelfLayoutManagerTest, ShelfFlickerOnTrayActivation) { |
1578 // TODO: investigate failure in mash, http://crbug.com/695686. | 1578 // TODO: investigate failure in mash, http://crbug.com/695686. |
1579 if (Shell::GetAshConfig() == Config::MASH) | 1579 if (Shell::GetAshConfig() == Config::MASH) |
1580 return; | 1580 return; |
1581 | 1581 |
1582 WmShelf* shelf = GetPrimaryShelf(); | 1582 Shelf* shelf = GetPrimaryShelf(); |
1583 | 1583 |
1584 // Create a visible window so auto-hide behavior is enforced. | 1584 // Create a visible window so auto-hide behavior is enforced. |
1585 CreateTestWidget(); | 1585 CreateTestWidget(); |
1586 | 1586 |
1587 // Turn on auto-hide for the shelf. | 1587 // Turn on auto-hide for the shelf. |
1588 shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS); | 1588 shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS); |
1589 EXPECT_EQ(SHELF_AUTO_HIDE, shelf->GetVisibilityState()); | 1589 EXPECT_EQ(SHELF_AUTO_HIDE, shelf->GetVisibilityState()); |
1590 EXPECT_EQ(SHELF_AUTO_HIDE_HIDDEN, shelf->GetAutoHideState()); | 1590 EXPECT_EQ(SHELF_AUTO_HIDE_HIDDEN, shelf->GetAutoHideState()); |
1591 | 1591 |
1592 // Show the status menu. That should make the shelf visible again. | 1592 // Show the status menu. That should make the shelf visible again. |
1593 Shell::Get()->accelerator_controller()->PerformActionIfEnabled( | 1593 Shell::Get()->accelerator_controller()->PerformActionIfEnabled( |
1594 SHOW_SYSTEM_TRAY_BUBBLE); | 1594 SHOW_SYSTEM_TRAY_BUBBLE); |
1595 EXPECT_EQ(SHELF_AUTO_HIDE, shelf->GetVisibilityState()); | 1595 EXPECT_EQ(SHELF_AUTO_HIDE, shelf->GetVisibilityState()); |
1596 EXPECT_EQ(SHELF_AUTO_HIDE_SHOWN, shelf->GetAutoHideState()); | 1596 EXPECT_EQ(SHELF_AUTO_HIDE_SHOWN, shelf->GetAutoHideState()); |
1597 EXPECT_TRUE(GetPrimarySystemTray()->HasSystemBubble()); | 1597 EXPECT_TRUE(GetPrimarySystemTray()->HasSystemBubble()); |
1598 } | 1598 } |
1599 | 1599 |
1600 TEST_F(ShelfLayoutManagerTest, WorkAreaChangeWorkspace) { | 1600 TEST_F(ShelfLayoutManagerTest, WorkAreaChangeWorkspace) { |
1601 // Make sure the shelf is always visible. | 1601 // Make sure the shelf is always visible. |
1602 WmShelf* shelf = GetPrimaryShelf(); | 1602 Shelf* shelf = GetPrimaryShelf(); |
1603 ShelfLayoutManager* layout_manager = GetShelfLayoutManager(); | 1603 ShelfLayoutManager* layout_manager = GetShelfLayoutManager(); |
1604 shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_NEVER); | 1604 shelf->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_NEVER); |
1605 layout_manager->LayoutShelf(); | 1605 layout_manager->LayoutShelf(); |
1606 | 1606 |
1607 views::Widget* widget_one = CreateTestWidget(); | 1607 views::Widget* widget_one = CreateTestWidget(); |
1608 widget_one->Maximize(); | 1608 widget_one->Maximize(); |
1609 | 1609 |
1610 views::Widget* widget_two = CreateTestWidget(); | 1610 views::Widget* widget_two = CreateTestWidget(); |
1611 widget_two->Maximize(); | 1611 widget_two->Maximize(); |
1612 widget_two->Activate(); | 1612 widget_two->Activate(); |
(...skipping 275 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1888 // Open keyboard in sticky mode. | 1888 // Open keyboard in sticky mode. |
1889 kb_controller->ShowKeyboard(true); | 1889 kb_controller->ShowKeyboard(true); |
1890 layout_manager->OnKeyboardBoundsChanging(keyboard_bounds()); | 1890 layout_manager->OnKeyboardBoundsChanging(keyboard_bounds()); |
1891 | 1891 |
1892 // Work area should be changed. | 1892 // Work area should be changed. |
1893 EXPECT_NE(orig_work_area, | 1893 EXPECT_NE(orig_work_area, |
1894 display::Screen::GetScreen()->GetPrimaryDisplay().work_area()); | 1894 display::Screen::GetScreen()->GetPrimaryDisplay().work_area()); |
1895 } | 1895 } |
1896 | 1896 |
1897 } // namespace ash | 1897 } // namespace ash |
OLD | NEW |