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

Unified Diff: chrome/browser/ui/views/immersive_mode_controller_browsertest.cc

Issue 11830008: ash/immersive mode: Hide the launcher when entering immersive mode (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: move logic to RootWindowController Created 7 years, 11 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/ui/views/immersive_mode_controller.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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
index 7eede6c3e050d184fe48cc5e20c1e34cb3ceb404..d24959a2e26cc3a8a4bc18948acb830c63f262a7 100644
--- a/chrome/browser/ui/views/immersive_mode_controller_browsertest.cc
+++ b/chrome/browser/ui/views/immersive_mode_controller_browsertest.cc
@@ -12,6 +12,13 @@
#include "ui/gfx/rect.h"
#include "ui/views/view.h"
+#if defined(USE_ASH)
+#include "ash/root_window_controller.h"
+#include "ash/shelf_types.h"
+#include "ash/shell.h"
+#include "ash/wm/shelf_layout_manager.h"
+#endif
+
namespace {
// Returns the bounds of |view| in widget coordinates.
@@ -69,6 +76,9 @@ IN_PROC_BROWSER_TEST_F(ImmersiveModeControllerTest, MAYBE_ImmersiveMode) {
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());
@@ -113,6 +123,9 @@ IN_PROC_BROWSER_TEST_F(ImmersiveModeControllerTest, MAYBE_ImmersiveMode) {
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());
controller->SetEnabled(false);
@@ -167,3 +180,40 @@ IN_PROC_BROWSER_TEST_F(ImmersiveModeControllerTest, MAYBE_ImmersiveMode) {
controller->SetEnabled(true);
controller->StartRevealForTest();
}
+
+#if defined(USE_ASH)
+// Test shelf auto-hide toggling behavior.
+IN_PROC_BROWSER_TEST_F(ImmersiveModeControllerTest, ImmersiveShelf) {
+ ui::LayerAnimator::set_disable_animations_for_test(true);
+
+ BrowserView* browser_view = static_cast<BrowserView*>(browser()->window());
+ ImmersiveModeController* immersive_controller =
+ browser_view->immersive_mode_controller();
+ browser_view->GetWidget()->Maximize();
+
+ // Shelf is visible when the test starts.
+ ash::internal::ShelfLayoutManager* shelf =
+ ash::Shell::GetPrimaryRootWindowController()->shelf();
+ ASSERT_EQ(ash::SHELF_VISIBLE, shelf->visibility_state());
+
+ // Turning immersive mode on sets the shelf to auto-hide.
+ immersive_controller->SetEnabled(true);
+ EXPECT_EQ(ash::SHELF_AUTO_HIDE, shelf->visibility_state());
+
+ // Disabling immersive mode puts it back.
+ immersive_controller->SetEnabled(false);
+ 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.
+ immersive_controller->SetEnabled(true);
+ EXPECT_EQ(ash::SHELF_AUTO_HIDE, shelf->visibility_state());
+
+ // Disabling immersive mode maintains the user's auto-hide selection.
+ immersive_controller->SetEnabled(false);
+ EXPECT_EQ(ash::SHELF_AUTO_HIDE, shelf->visibility_state());
+}
+#endif // defined(OS_CHROMEOS)
« no previous file with comments | « chrome/browser/ui/views/immersive_mode_controller.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698