Index: chrome/browser/ui/views/immersive_mode_controller_browsertest.cc |
diff --git a/chrome/browser/ui/views/immersive_mode_controller_browsertest.cc b/chrome/browser/ui/views/immersive_mode_controller_browsertest.cc |
deleted file mode 100644 |
index 80715960f9e11d640eec73a4ed751dcdb74d8ada..0000000000000000000000000000000000000000 |
--- a/chrome/browser/ui/views/immersive_mode_controller_browsertest.cc |
+++ /dev/null |
@@ -1,270 +0,0 @@ |
-// Copyright 2012 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include "chrome/browser/ui/views/immersive_mode_controller.h" |
- |
-#include "chrome/app/chrome_command_ids.h" |
-#include "chrome/browser/ui/browser_commands.h" |
-#include "chrome/browser/ui/views/frame/browser_view.h" |
-#include "chrome/browser/ui/views/tabs/tab.h" |
-#include "chrome/browser/ui/views/tabs/tab_strip.h" |
-#include "chrome/test/base/in_process_browser_test.h" |
-#include "ui/compositor/layer_animator.h" |
-#include "ui/compositor/scoped_animation_duration_scale_mode.h" |
-#include "ui/gfx/rect.h" |
-#include "ui/views/view.h" |
- |
-#if defined(USE_ASH) |
-#include "ash/root_window_controller.h" |
-#include "ash/shelf/shelf_layout_manager.h" |
-#include "ash/shelf/shelf_types.h" |
-#include "ash/shell.h" |
-#include "ash/wm/window_properties.h" |
-#endif |
- |
-namespace { |
- |
-// Returns the bounds of |view| in widget coordinates. |
-gfx::Rect GetRectInWidget(views::View* view) { |
- return view->ConvertRectToWidget(view->GetLocalBounds()); |
-} |
- |
-} // namespace |
- |
-typedef InProcessBrowserTest ImmersiveModeControllerTest; |
- |
-// TODO(jamescook): If immersive mode becomes popular on CrOS, consider porting |
-// it to other Aura platforms (win_aura, linux_aura). http://crbug.com/163931 |
-#if defined(OS_CHROMEOS) |
-IN_PROC_BROWSER_TEST_F(ImmersiveModeControllerTest, ImmersiveMode) { |
- ui::ScopedAnimationDurationScaleMode zero_duration_mode( |
- ui::ScopedAnimationDurationScaleMode::ZERO_DURATION); |
- ASSERT_TRUE(ImmersiveModeController::UseImmersiveFullscreen()); |
- |
- BrowserView* browser_view = static_cast<BrowserView*>(browser()->window()); |
- ImmersiveModeController* controller = |
- browser_view->immersive_mode_controller(); |
- views::View* contents_view = browser_view->GetTabContentsContainerView(); |
- |
- // Immersive mode is not on by default. |
- EXPECT_FALSE(controller->enabled()); |
- EXPECT_FALSE(controller->ShouldHideTopViews()); |
- |
- // Top-of-window views are visible. |
- EXPECT_TRUE(browser_view->IsTabStripVisible()); |
- EXPECT_TRUE(browser_view->IsToolbarVisible()); |
- |
- // Usual commands are enabled. |
- EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_OPEN_CURRENT_URL)); |
- EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_ABOUT)); |
- EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_FULLSCREEN)); |
- |
- // Turning immersive mode on sets the toolbar to immersive style and hides |
- // the top-of-window views while leaving the tab strip visible. |
- chrome::ToggleFullscreenMode(browser()); |
- ASSERT_TRUE(browser_view->IsFullscreen()); |
- EXPECT_TRUE(controller->enabled()); |
- EXPECT_TRUE(controller->ShouldHideTopViews()); |
- EXPECT_FALSE(controller->IsRevealed()); |
- EXPECT_TRUE(browser_view->tabstrip()->IsImmersiveStyle()); |
- EXPECT_TRUE(browser_view->IsTabStripVisible()); |
- EXPECT_FALSE(browser_view->IsToolbarVisible()); |
- // Content area is immediately below the tab indicators. |
- EXPECT_EQ(GetRectInWidget(browser_view).y() + Tab::GetImmersiveHeight(), |
- GetRectInWidget(contents_view).y()); |
- |
- // Commands are still enabled (usually fullscreen disables these). |
- EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_OPEN_CURRENT_URL)); |
- EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_ABOUT)); |
- EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_FULLSCREEN)); |
- |
- // Trigger a reveal keeps us in immersive mode, but top-of-window views |
- // become visible. |
- controller->StartRevealForTest(); |
- EXPECT_TRUE(controller->enabled()); |
- EXPECT_FALSE(controller->ShouldHideTopViews()); |
- EXPECT_TRUE(controller->IsRevealed()); |
- EXPECT_FALSE(browser_view->tabstrip()->IsImmersiveStyle()); |
- EXPECT_TRUE(browser_view->IsTabStripVisible()); |
- EXPECT_TRUE(browser_view->IsToolbarVisible()); |
- // Shelf hide triggered by enabling immersive mode eventually changes the |
- // widget bounds and causes a Layout(). Force it to happen early for test. |
- browser_view->parent()->Layout(); |
- // Content area is still immediately below the tab indicators. |
- EXPECT_EQ(GetRectInWidget(browser_view).y() + Tab::GetImmersiveHeight(), |
- GetRectInWidget(contents_view).y()); |
- |
- // Ending a reveal keeps us in immersive mode, but toolbar goes invisible. |
- controller->CancelReveal(); |
- EXPECT_TRUE(controller->enabled()); |
- EXPECT_TRUE(controller->ShouldHideTopViews()); |
- EXPECT_FALSE(controller->IsRevealed()); |
- EXPECT_TRUE(browser_view->tabstrip()->IsImmersiveStyle()); |
- EXPECT_TRUE(browser_view->IsTabStripVisible()); |
- EXPECT_FALSE(browser_view->IsToolbarVisible()); |
- |
- // Disabling immersive mode puts us back to the beginning. |
- chrome::ToggleFullscreenMode(browser()); |
- ASSERT_FALSE(browser_view->IsFullscreen()); |
- EXPECT_FALSE(controller->enabled()); |
- EXPECT_FALSE(controller->ShouldHideTopViews()); |
- EXPECT_FALSE(controller->IsRevealed()); |
- EXPECT_FALSE(browser_view->tabstrip()->IsImmersiveStyle()); |
- EXPECT_TRUE(browser_view->IsTabStripVisible()); |
- EXPECT_TRUE(browser_view->IsToolbarVisible()); |
- |
- // Disabling immersive mode while we are revealed should take us back to |
- // the beginning. |
- chrome::ToggleFullscreenMode(browser()); |
- ASSERT_TRUE(browser_view->IsFullscreen()); |
- EXPECT_TRUE(controller->enabled()); |
- controller->StartRevealForTest(); |
- |
- chrome::ToggleFullscreenMode(browser()); |
- ASSERT_FALSE(browser_view->IsFullscreen()); |
- EXPECT_FALSE(controller->enabled()); |
- EXPECT_FALSE(controller->ShouldHideTopViews()); |
- EXPECT_FALSE(controller->IsRevealed()); |
- EXPECT_FALSE(browser_view->tabstrip()->IsImmersiveStyle()); |
- EXPECT_TRUE(browser_view->IsTabStripVisible()); |
- EXPECT_TRUE(browser_view->IsToolbarVisible()); |
- |
- // When hiding the tab indicators, content is at the top of the browser view |
- // both before and during reveal. |
- controller->SetHideTabIndicatorsForTest(true); |
- chrome::ToggleFullscreenMode(browser()); |
- ASSERT_TRUE(browser_view->IsFullscreen()); |
- EXPECT_FALSE(browser_view->IsTabStripVisible()); |
- EXPECT_EQ(GetRectInWidget(browser_view).y(), |
- GetRectInWidget(contents_view).y()); |
- controller->StartRevealForTest(); |
- EXPECT_TRUE(browser_view->IsTabStripVisible()); |
- // Shelf hide triggered by enabling immersive mode eventually changes the |
- // widget bounds and causes a Layout(). Force it to happen early for test. |
- browser_view->parent()->Layout(); |
- EXPECT_EQ(GetRectInWidget(browser_view).y(), |
- GetRectInWidget(contents_view).y()); |
- chrome::ToggleFullscreenMode(browser()); |
- ASSERT_FALSE(browser_view->IsFullscreen()); |
- controller->SetHideTabIndicatorsForTest(false); |
- |
- // Reveal ends when the mouse moves out of the reveal view. |
- chrome::ToggleFullscreenMode(browser()); |
- ASSERT_TRUE(browser_view->IsFullscreen()); |
- EXPECT_TRUE(controller->enabled()); |
- controller->StartRevealForTest(); |
- controller->OnRevealViewLostMouseForTest(); |
- EXPECT_FALSE(controller->IsRevealed()); |
- |
- // Focus testing is not reliable on Windows, crbug.com/79493 |
-#if !defined(OS_WIN) |
- // Giving focus to the location bar prevents the reveal from ending when |
- // the mouse exits. |
- controller->StartRevealForTest(); |
- browser_view->SetFocusToLocationBar(false); |
- controller->OnRevealViewLostMouseForTest(); |
- EXPECT_TRUE(controller->IsRevealed()); |
- |
- // Releasing focus ends the reveal. |
- browser_view->GetFocusManager()->ClearFocus(); |
- EXPECT_FALSE(controller->IsRevealed()); |
- |
- // Placing focus in the location bar automatically causes a reveal. |
- browser_view->SetFocusToLocationBar(false); |
- EXPECT_TRUE(controller->IsRevealed()); |
- |
- // Releasing focus ends the reveal again. |
- browser_view->GetFocusManager()->ClearFocus(); |
- EXPECT_FALSE(controller->IsRevealed()); |
- |
- // Reveal and lock causes a reveal. |
- controller->RevealAndLock(true); |
- EXPECT_TRUE(controller->IsRevealed()); |
- |
- // The views stay revealed even if the mouse is lost or focus is lost. |
- controller->OnRevealViewLostMouseForTest(); |
- EXPECT_TRUE(controller->IsRevealed()); |
- browser_view->SetFocusToLocationBar(false); |
- EXPECT_TRUE(controller->IsRevealed()); |
- browser_view->GetFocusManager()->ClearFocus(); |
- EXPECT_TRUE(controller->IsRevealed()); |
- |
- // Ending the lock ends the reveal. |
- controller->RevealAndLock(false); |
- EXPECT_FALSE(controller->IsRevealed()); |
-#endif // defined(OS_WIN) |
- |
- // Window restore tracking is only implemented in the Aura port. |
- // Also, Windows Aura does not trigger maximize/restore notifications. |
-#if defined(USE_AURA) && !defined(OS_WIN) |
- // Restoring the window exits immersive mode. |
- browser_view->GetWidget()->Restore(); |
- ASSERT_FALSE(browser_view->IsFullscreen()); |
- EXPECT_FALSE(controller->enabled()); |
- EXPECT_FALSE(controller->ShouldHideTopViews()); |
- EXPECT_FALSE(controller->IsRevealed()); |
- EXPECT_FALSE(browser_view->tabstrip()->IsImmersiveStyle()); |
- EXPECT_TRUE(browser_view->IsTabStripVisible()); |
- EXPECT_TRUE(browser_view->IsToolbarVisible()); |
-#endif // defined(USE_AURA) && !defined(OS_WIN) |
- |
- // Don't crash if we exit the test during a reveal. |
- if (!browser_view->IsFullscreen()) |
- chrome::ToggleFullscreenMode(browser()); |
- ASSERT_TRUE(browser_view->IsFullscreen()); |
- ASSERT_TRUE(controller->enabled()); |
- controller->StartRevealForTest(); |
-} |
- |
-// Shelf-specific immersive mode tests. |
-IN_PROC_BROWSER_TEST_F(ImmersiveModeControllerTest, ImmersiveShelf) { |
- ui::ScopedAnimationDurationScaleMode zero_duration_mode( |
- ui::ScopedAnimationDurationScaleMode::ZERO_DURATION); |
- |
- BrowserView* browser_view = static_cast<BrowserView*>(browser()->window()); |
- ImmersiveModeController* immersive_controller = |
- browser_view->immersive_mode_controller(); |
- |
- // Shelf is visible when the test starts. |
- ash::internal::ShelfLayoutManager* shelf = |
- ash::Shell::GetPrimaryRootWindowController()->GetShelfLayoutManager(); |
- ASSERT_EQ(ash::SHELF_VISIBLE, shelf->visibility_state()); |
- |
- // Turning immersive mode on sets the shelf to auto-hide. |
- chrome::ToggleFullscreenMode(browser()); |
- ASSERT_TRUE(browser_view->IsFullscreen()); |
- ASSERT_TRUE(immersive_controller->enabled()); |
- EXPECT_EQ(ash::SHELF_AUTO_HIDE, shelf->visibility_state()); |
- |
- // Disabling immersive mode puts it back. |
- chrome::ToggleFullscreenMode(browser()); |
- ASSERT_FALSE(browser_view->IsFullscreen()); |
- ASSERT_FALSE(immersive_controller->enabled()); |
- EXPECT_EQ(ash::SHELF_VISIBLE, shelf->visibility_state()); |
- |
- // The user could toggle the launcher behavior. |
- shelf->SetAutoHideBehavior(ash::SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS); |
- EXPECT_EQ(ash::SHELF_AUTO_HIDE, shelf->visibility_state()); |
- |
- // Enabling immersive mode keeps auto-hide. |
- chrome::ToggleFullscreenMode(browser()); |
- ASSERT_TRUE(browser_view->IsFullscreen()); |
- ASSERT_TRUE(immersive_controller->enabled()); |
- EXPECT_EQ(ash::SHELF_AUTO_HIDE, shelf->visibility_state()); |
- |
- // Disabling immersive mode maintains the user's auto-hide selection. |
- chrome::ToggleFullscreenMode(browser()); |
- ASSERT_FALSE(browser_view->IsFullscreen()); |
- ASSERT_FALSE(immersive_controller->enabled()); |
- EXPECT_EQ(ash::SHELF_AUTO_HIDE, shelf->visibility_state()); |
- |
- // Setting the window property directly toggles immersive mode. |
- aura::Window* window = browser_view->GetWidget()->GetNativeWindow(); |
- window->SetProperty(ash::internal::kImmersiveModeKey, true); |
- EXPECT_TRUE(immersive_controller->enabled()); |
- window->SetProperty(ash::internal::kImmersiveModeKey, false); |
- EXPECT_FALSE(immersive_controller->enabled()); |
-} |
- |
-#endif // defined(OS_CHROMEOS) |