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/ash_switches.h" | 9 #include "ash/ash_switches.h" |
10 #include "ash/display/display_controller.h" | 10 #include "ash/display/display_controller.h" |
(...skipping 1100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1111 EXPECT_TRUE(shelf_widget->status_area_widget()->IsVisible()); | 1111 EXPECT_TRUE(shelf_widget->status_area_widget()->IsVisible()); |
1112 StepWidgetLayerAnimatorToEnd(shelf_widget); | 1112 StepWidgetLayerAnimatorToEnd(shelf_widget); |
1113 StepWidgetLayerAnimatorToEnd(shelf_widget->status_area_widget()); | 1113 StepWidgetLayerAnimatorToEnd(shelf_widget->status_area_widget()); |
1114 EXPECT_EQ(SHELF_VISIBLE, shelf->visibility_state()); | 1114 EXPECT_EQ(SHELF_VISIBLE, shelf->visibility_state()); |
1115 EXPECT_EQ(Shell::GetScreen()->GetDisplayNearestWindow( | 1115 EXPECT_EQ(Shell::GetScreen()->GetDisplayNearestWindow( |
1116 window).work_area().bottom(), | 1116 window).work_area().bottom(), |
1117 widget->GetWorkAreaBoundsInScreen().bottom()); | 1117 widget->GetWorkAreaBoundsInScreen().bottom()); |
1118 } | 1118 } |
1119 | 1119 |
1120 // Basic assertions around the dimming of the shelf. | 1120 // Basic assertions around the dimming of the shelf. |
1121 TEST_F(ShelfLayoutManagerTest, TestDimmingBehavior) { | 1121 TEST_F(ShelfLayoutManagerTest, DimmingBehavior) { |
1122 // Since ShelfLayoutManager queries for mouse location, move the mouse so | 1122 // Since ShelfLayoutManager queries for mouse location, move the mouse so |
1123 // it isn't over the shelf. | 1123 // it isn't over the shelf. |
1124 ui::test::EventGenerator generator(Shell::GetPrimaryRootWindow(), | 1124 ui::test::EventGenerator generator(Shell::GetPrimaryRootWindow(), |
1125 gfx::Point()); | 1125 gfx::Point()); |
1126 generator.MoveMouseTo(0, 0); | 1126 generator.MoveMouseTo(0, 0); |
1127 | 1127 |
1128 ShelfLayoutManager* shelf = GetShelfLayoutManager(); | 1128 ShelfLayoutManager* shelf = GetShelfLayoutManager(); |
1129 shelf->shelf_widget()->DisableDimmingAnimationsForTest(); | 1129 shelf->shelf_widget()->DisableDimmingAnimationsForTest(); |
1130 | 1130 |
1131 views::Widget* widget = new views::Widget; | 1131 views::Widget* widget = new views::Widget; |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1184 generator.MoveTouch(off_shelf); | 1184 generator.MoveTouch(off_shelf); |
1185 EXPECT_EQ(0, shelf->shelf_widget()->GetDimmingAlphaForTest()); | 1185 EXPECT_EQ(0, shelf->shelf_widget()->GetDimmingAlphaForTest()); |
1186 generator.MoveTouch(on_shelf); | 1186 generator.MoveTouch(on_shelf); |
1187 generator.ReleaseTouch(); | 1187 generator.ReleaseTouch(); |
1188 | 1188 |
1189 // After restore, the dimming object should be deleted again. | 1189 // After restore, the dimming object should be deleted again. |
1190 widget->Restore(); | 1190 widget->Restore(); |
1191 EXPECT_EQ(-1, shelf->shelf_widget()->GetDimmingAlphaForTest()); | 1191 EXPECT_EQ(-1, shelf->shelf_widget()->GetDimmingAlphaForTest()); |
1192 } | 1192 } |
1193 | 1193 |
| 1194 // Test that dimming works correctly with multiple displays. |
| 1195 TEST_F(ShelfLayoutManagerTest, DimmingBehaviorDualDisplay) { |
| 1196 if (!SupportsMultipleDisplays()) |
| 1197 return; |
| 1198 |
| 1199 // Create two displays. |
| 1200 Shell* shell = Shell::GetInstance(); |
| 1201 UpdateDisplay("0+0-200x200,+200+0-100x100"); |
| 1202 EXPECT_EQ(2U, shell->display_manager()->GetNumDisplays()); |
| 1203 |
| 1204 DisplayController* display_controller = shell->display_controller(); |
| 1205 aura::Window::Windows root_windows = display_controller->GetAllRootWindows(); |
| 1206 EXPECT_EQ(root_windows.size(), 2U); |
| 1207 |
| 1208 std::vector<ShelfWidget*> shelf_widgets; |
| 1209 for (auto& root_window : root_windows) { |
| 1210 ShelfLayoutManager* shelf = |
| 1211 GetRootWindowController(root_window)->GetShelfLayoutManager(); |
| 1212 shelf_widgets.push_back(shelf->shelf_widget()); |
| 1213 |
| 1214 // For disabling the dimming animation to work, the animation must be |
| 1215 // disabled prior to creating the dimmer. |
| 1216 shelf_widgets.back()->DisableDimmingAnimationsForTest(); |
| 1217 |
| 1218 // Create a maximized window to create the dimmer. |
| 1219 views::Widget* widget = new views::Widget; |
| 1220 views::Widget::InitParams params(views::Widget::InitParams::TYPE_WINDOW); |
| 1221 params.context = root_window; |
| 1222 params.bounds = root_window->GetBoundsInScreen(); |
| 1223 params.show_state = ui::SHOW_STATE_MAXIMIZED; |
| 1224 widget->Init(params); |
| 1225 widget->Show(); |
| 1226 } |
| 1227 |
| 1228 ui::test::EventGenerator& generator(GetEventGenerator()); |
| 1229 |
| 1230 generator.MoveMouseTo(root_windows[0]->GetBoundsInScreen().CenterPoint()); |
| 1231 EXPECT_LT(0, shelf_widgets[0]->GetDimmingAlphaForTest()); |
| 1232 EXPECT_LT(0, shelf_widgets[1]->GetDimmingAlphaForTest()); |
| 1233 |
| 1234 generator.MoveMouseTo( |
| 1235 shelf_widgets[0]->GetWindowBoundsInScreen().CenterPoint()); |
| 1236 EXPECT_EQ(0, shelf_widgets[0]->GetDimmingAlphaForTest()); |
| 1237 EXPECT_LT(0, shelf_widgets[1]->GetDimmingAlphaForTest()); |
| 1238 |
| 1239 generator.MoveMouseTo( |
| 1240 shelf_widgets[1]->GetWindowBoundsInScreen().CenterPoint()); |
| 1241 EXPECT_LT(0, shelf_widgets[0]->GetDimmingAlphaForTest()); |
| 1242 EXPECT_EQ(0, shelf_widgets[1]->GetDimmingAlphaForTest()); |
| 1243 |
| 1244 generator.MoveMouseTo(root_windows[1]->GetBoundsInScreen().CenterPoint()); |
| 1245 EXPECT_LT(0, shelf_widgets[0]->GetDimmingAlphaForTest()); |
| 1246 EXPECT_LT(0, shelf_widgets[1]->GetDimmingAlphaForTest()); |
| 1247 } |
| 1248 |
1194 // Assertions around the dimming of the shelf in conjunction with menus. | 1249 // Assertions around the dimming of the shelf in conjunction with menus. |
1195 TEST_F(ShelfLayoutManagerTest, TestDimmingBehaviorWithMenus) { | 1250 TEST_F(ShelfLayoutManagerTest, DimmingBehaviorWithMenus) { |
1196 // Since ShelfLayoutManager queries for mouse location, move the mouse so | 1251 // Since ShelfLayoutManager queries for mouse location, move the mouse so |
1197 // it isn't over the shelf. | 1252 // it isn't over the shelf. |
1198 ui::test::EventGenerator generator(Shell::GetPrimaryRootWindow(), | 1253 ui::test::EventGenerator generator(Shell::GetPrimaryRootWindow(), |
1199 gfx::Point()); | 1254 gfx::Point()); |
1200 generator.MoveMouseTo(0, 0); | 1255 generator.MoveMouseTo(0, 0); |
1201 | 1256 |
1202 ShelfLayoutManager* shelf = GetShelfLayoutManager(); | 1257 ShelfLayoutManager* shelf = GetShelfLayoutManager(); |
1203 shelf->shelf_widget()->DisableDimmingAnimationsForTest(); | 1258 shelf->shelf_widget()->DisableDimmingAnimationsForTest(); |
1204 | 1259 |
1205 views::Widget* widget = new views::Widget; | 1260 views::Widget* widget = new views::Widget; |
(...skipping 1009 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2215 shelf_manager->SetAutoHideBehavior(SHELF_AUTO_HIDE_ALWAYS_HIDDEN); | 2270 shelf_manager->SetAutoHideBehavior(SHELF_AUTO_HIDE_ALWAYS_HIDDEN); |
2216 gfx::Rect hide_target_bounds = status_window->GetTargetBounds(); | 2271 gfx::Rect hide_target_bounds = status_window->GetTargetBounds(); |
2217 EXPECT_GT(hide_target_bounds.y(), initial_bounds.y()); | 2272 EXPECT_GT(hide_target_bounds.y(), initial_bounds.y()); |
2218 | 2273 |
2219 shelf_manager->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_NEVER); | 2274 shelf_manager->SetAutoHideBehavior(SHELF_AUTO_HIDE_BEHAVIOR_NEVER); |
2220 gfx::Rect reshow_target_bounds = status_window->GetTargetBounds(); | 2275 gfx::Rect reshow_target_bounds = status_window->GetTargetBounds(); |
2221 EXPECT_EQ(initial_bounds, reshow_target_bounds); | 2276 EXPECT_EQ(initial_bounds, reshow_target_bounds); |
2222 } | 2277 } |
2223 | 2278 |
2224 } // namespace ash | 2279 } // namespace ash |
OLD | NEW |