| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 "chrome/browser/ui/views/frame/immersive_mode_controller_ash.h" | 5 #include "chrome/browser/ui/views/frame/immersive_mode_controller_ash.h" |
| 6 | 6 |
| 7 #include "ash/display/display_manager.h" | 7 #include "ash/display/display_manager.h" |
| 8 #include "ash/screen_ash.h" |
| 8 #include "ash/shell.h" | 9 #include "ash/shell.h" |
| 9 #include "ash/test/ash_test_base.h" | 10 #include "ash/test/ash_test_base.h" |
| 10 #include "chrome/app/chrome_command_ids.h" | 11 #include "chrome/app/chrome_command_ids.h" |
| 11 #include "chrome/browser/ui/browser_commands.h" | 12 #include "chrome/browser/ui/browser_commands.h" |
| 12 #include "chrome/browser/ui/fullscreen/fullscreen_controller.h" | 13 #include "chrome/browser/ui/fullscreen/fullscreen_controller.h" |
| 13 #include "chrome/browser/ui/fullscreen/fullscreen_controller_test.h" | 14 #include "chrome/browser/ui/fullscreen/fullscreen_controller_test.h" |
| 14 #include "chrome/browser/ui/immersive_fullscreen_configuration.h" | 15 #include "chrome/browser/ui/immersive_fullscreen_configuration.h" |
| 15 #include "chrome/browser/ui/views/frame/browser_view.h" | 16 #include "chrome/browser/ui/views/frame/browser_view.h" |
| 16 #include "chrome/browser/ui/views/frame/test_with_browser_view.h" | 17 #include "chrome/browser/ui/views/frame/test_with_browser_view.h" |
| 17 #include "chrome/browser/ui/views/frame/top_container_view.h" | 18 #include "chrome/browser/ui/views/frame/top_container_view.h" |
| 18 #include "chrome/browser/ui/views/tabs/tab_strip.h" | 19 #include "chrome/browser/ui/views/tabs/tab_strip.h" |
| 19 #include "chrome/browser/ui/views/toolbar_view.h" | 20 #include "chrome/browser/ui/views/toolbar_view.h" |
| 21 #include "ui/aura/client/aura_constants.h" |
| 20 #include "ui/aura/client/cursor_client.h" | 22 #include "ui/aura/client/cursor_client.h" |
| 21 #include "ui/aura/env.h" | 23 #include "ui/aura/env.h" |
| 22 #include "ui/aura/root_window.h" | 24 #include "ui/aura/root_window.h" |
| 23 #include "ui/aura/test/event_generator.h" | 25 #include "ui/aura/test/event_generator.h" |
| 24 #include "ui/aura/window.h" | 26 #include "ui/aura/window.h" |
| 27 #include "ui/base/ui_base_types.h" |
| 25 #include "ui/gfx/animation/slide_animation.h" | 28 #include "ui/gfx/animation/slide_animation.h" |
| 26 #include "ui/views/bubble/bubble_delegate.h" | 29 #include "ui/views/bubble/bubble_delegate.h" |
| 27 #include "ui/views/controls/webview/webview.h" | 30 #include "ui/views/controls/webview/webview.h" |
| 28 | 31 |
| 29 // For now, immersive fullscreen is Chrome OS only. | 32 // For now, immersive fullscreen is Chrome OS only. |
| 30 #if defined(OS_CHROMEOS) | 33 #if defined(OS_CHROMEOS) |
| 31 | 34 |
| 32 ///////////////////////////////////////////////////////////////////////////// | 35 ///////////////////////////////////////////////////////////////////////////// |
| 33 | 36 |
| 34 class MockImmersiveModeControllerDelegate | 37 class MockImmersiveModeControllerDelegate |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 88 | 91 |
| 89 ImmersiveFullscreenConfiguration::EnableImmersiveFullscreenForTest(); | 92 ImmersiveFullscreenConfiguration::EnableImmersiveFullscreenForTest(); |
| 90 ASSERT_TRUE(ImmersiveFullscreenConfiguration::UseImmersiveFullscreen()); | 93 ASSERT_TRUE(ImmersiveFullscreenConfiguration::UseImmersiveFullscreen()); |
| 91 | 94 |
| 92 controller_.reset(new ImmersiveModeControllerAsh); | 95 controller_.reset(new ImmersiveModeControllerAsh); |
| 93 delegate_.reset(new MockImmersiveModeControllerDelegate); | 96 delegate_.reset(new MockImmersiveModeControllerDelegate); |
| 94 | 97 |
| 95 widget_ = new views::Widget(); | 98 widget_ = new views::Widget(); |
| 96 views::Widget::InitParams params; | 99 views::Widget::InitParams params; |
| 97 params.context = CurrentContext(); | 100 params.context = CurrentContext(); |
| 98 params.bounds = gfx::Rect(0, 0, 500, 500); | |
| 99 widget_->Init(params); | 101 widget_->Init(params); |
| 100 widget_->Show(); | 102 widget_->Show(); |
| 101 | 103 |
| 104 widget_->GetNativeWindow()->SetProperty(aura::client::kShowStateKey, |
| 105 ui::SHOW_STATE_FULLSCREEN); |
| 106 |
| 102 top_container_ = new views::View(); | 107 top_container_ = new views::View(); |
| 103 top_container_->SetBounds(0, 0, 500, 100); | 108 top_container_->SetBounds( |
| 109 0, 0, widget_->GetWindowBoundsInScreen().width(), 100); |
| 104 top_container_->set_focusable(true); | 110 top_container_->set_focusable(true); |
| 105 | 111 |
| 106 widget_->GetContentsView()->AddChildView(top_container_); | 112 widget_->GetContentsView()->AddChildView(top_container_); |
| 107 | 113 |
| 108 controller_->Init(delegate_.get(), widget_, top_container_); | 114 controller_->Init(delegate_.get(), widget_, top_container_); |
| 109 SetAnimationsDisabled(true); | 115 SetAnimationsDisabled(true); |
| 110 | 116 |
| 111 // The mouse is moved so that it is not over |top_container_| by | 117 // The mouse is moved so that it is not over |top_container_| by |
| 112 // AshTestBase. | 118 // AshTestBase. |
| 113 } | 119 } |
| (...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 243 controller()->SetEnabled(false); | 249 controller()->SetEnabled(false); |
| 244 EXPECT_FALSE(controller()->IsEnabled()); | 250 EXPECT_FALSE(controller()->IsEnabled()); |
| 245 EXPECT_FALSE(controller()->IsRevealed()); | 251 EXPECT_FALSE(controller()->IsRevealed()); |
| 246 EXPECT_FALSE(controller()->ShouldHideTopViews()); | 252 EXPECT_FALSE(controller()->ShouldHideTopViews()); |
| 247 EXPECT_FALSE(delegate()->immersive_style()); | 253 EXPECT_FALSE(delegate()->immersive_style()); |
| 248 } | 254 } |
| 249 | 255 |
| 250 // Test mouse event processing for top-of-screen reveal triggering. | 256 // Test mouse event processing for top-of-screen reveal triggering. |
| 251 TEST_F(ImmersiveModeControllerAshTest, OnMouseEvent) { | 257 TEST_F(ImmersiveModeControllerAshTest, OnMouseEvent) { |
| 252 // Set up initial state. | 258 // Set up initial state. |
| 259 UpdateDisplay("800x600,800x600"); |
| 260 ash::DisplayLayout display_layout(ash::DisplayLayout::RIGHT, 0); |
| 261 ash::Shell::GetInstance()->display_manager()->SetLayoutForCurrentDisplays( |
| 262 display_layout); |
| 263 |
| 264 // Set up initial state. |
| 253 controller()->SetEnabled(true); | 265 controller()->SetEnabled(true); |
| 254 ASSERT_TRUE(controller()->IsEnabled()); | 266 ASSERT_TRUE(controller()->IsEnabled()); |
| 255 ASSERT_FALSE(controller()->IsRevealed()); | 267 ASSERT_FALSE(controller()->IsRevealed()); |
| 256 | 268 |
| 257 aura::test::EventGenerator& event_generator(GetEventGenerator()); | 269 aura::test::EventGenerator& event_generator(GetEventGenerator()); |
| 258 | 270 |
| 259 gfx::Rect top_container_bounds_in_screen = | 271 gfx::Rect top_container_bounds_in_screen = |
| 260 top_container()->GetBoundsInScreen(); | 272 top_container()->GetBoundsInScreen(); |
| 261 // A position along the top edge of TopContainerView in screen coordinates. | 273 // A position along the top edge of TopContainerView in screen coordinates. |
| 262 gfx::Point top_edge_pos(top_container_bounds_in_screen.x() + 100, | 274 gfx::Point top_edge_pos(top_container_bounds_in_screen.x() + 100, |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 294 EXPECT_TRUE(top_edge_hover_timer_running()); | 306 EXPECT_TRUE(top_edge_hover_timer_running()); |
| 295 EXPECT_EQ(top_edge_pos.x(), mouse_x_when_hit_top()); | 307 EXPECT_EQ(top_edge_pos.x(), mouse_x_when_hit_top()); |
| 296 | 308 |
| 297 // Large move right restarts the timer (so it is still running) and considers | 309 // Large move right restarts the timer (so it is still running) and considers |
| 298 // this a new hit at the top. | 310 // this a new hit at the top. |
| 299 event_generator.MoveMouseTo(top_edge_pos.x() + 100, top_edge_pos.y()); | 311 event_generator.MoveMouseTo(top_edge_pos.x() + 100, top_edge_pos.y()); |
| 300 EXPECT_TRUE(top_edge_hover_timer_running()); | 312 EXPECT_TRUE(top_edge_hover_timer_running()); |
| 301 EXPECT_EQ(top_edge_pos.x() + 100, mouse_x_when_hit_top()); | 313 EXPECT_EQ(top_edge_pos.x() + 100, mouse_x_when_hit_top()); |
| 302 | 314 |
| 303 // Moving off the top edge horizontally stops the timer. | 315 // Moving off the top edge horizontally stops the timer. |
| 304 EXPECT_GT(CurrentContext()->bounds().width(), top_container()->width()); | 316 event_generator.MoveMouseTo(top_container_bounds_in_screen.right() + 1, |
| 305 event_generator.MoveMouseTo(top_container_bounds_in_screen.right(), | |
| 306 top_container_bounds_in_screen.y()); | 317 top_container_bounds_in_screen.y()); |
| 307 EXPECT_FALSE(top_edge_hover_timer_running()); | 318 EXPECT_FALSE(top_edge_hover_timer_running()); |
| 308 | 319 |
| 309 // Once revealed, a move just a little below the top container doesn't end a | 320 // Once revealed, a move just a little below the top container doesn't end a |
| 310 // reveal. | 321 // reveal. |
| 311 AttemptReveal(MODALITY_MOUSE); | 322 AttemptReveal(MODALITY_MOUSE); |
| 312 event_generator.MoveMouseTo(top_container_bounds_in_screen.x(), | 323 event_generator.MoveMouseTo(top_container_bounds_in_screen.x(), |
| 313 top_container_bounds_in_screen.bottom() + 1); | 324 top_container_bounds_in_screen.bottom() + 1); |
| 314 EXPECT_TRUE(controller()->IsRevealed()); | 325 EXPECT_TRUE(controller()->IsRevealed()); |
| 315 | 326 |
| (...skipping 652 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 968 | 979 |
| 969 browser_view()->GetWidget()->Restore(); | 980 browser_view()->GetWidget()->Restore(); |
| 970 // Exiting immersive fullscreen occurs as a result of a task posted to the | 981 // Exiting immersive fullscreen occurs as a result of a task posted to the |
| 971 // message loop. | 982 // message loop. |
| 972 content::RunAllPendingInMessageLoop(); | 983 content::RunAllPendingInMessageLoop(); |
| 973 | 984 |
| 974 EXPECT_FALSE(controller()->IsEnabled()); | 985 EXPECT_FALSE(controller()->IsEnabled()); |
| 975 } | 986 } |
| 976 | 987 |
| 977 #endif // defined(OS_CHROMEOS) | 988 #endif // defined(OS_CHROMEOS) |
| OLD | NEW |