| Index: chrome/browser/ui/views/frame/immersive_mode_controller_ash_unittest.cc
|
| diff --git a/chrome/browser/ui/views/frame/immersive_mode_controller_ash_unittest.cc b/chrome/browser/ui/views/frame/immersive_mode_controller_ash_unittest.cc
|
| index ce917169d388a5bfcfab5d06dfb260ebc8c13775..b9658d18bce71079baccab19191a08ab9dfcac18 100644
|
| --- a/chrome/browser/ui/views/frame/immersive_mode_controller_ash_unittest.cc
|
| +++ b/chrome/browser/ui/views/frame/immersive_mode_controller_ash_unittest.cc
|
| @@ -4,7 +4,6 @@
|
|
|
| #include "chrome/browser/ui/views/frame/immersive_mode_controller_ash.h"
|
|
|
| -#include "ash/display/display_manager.h"
|
| #include "ash/root_window_controller.h"
|
| #include "ash/shelf/shelf_layout_manager.h"
|
| #include "ash/shelf/shelf_types.h"
|
| @@ -19,880 +18,17 @@
|
| #include "chrome/browser/ui/views/frame/top_container_view.h"
|
| #include "chrome/browser/ui/views/tabs/tab_strip.h"
|
| #include "chrome/browser/ui/views/toolbar_view.h"
|
| -#include "ui/aura/client/cursor_client.h"
|
| -#include "ui/aura/env.h"
|
| -#include "ui/aura/root_window.h"
|
| -#include "ui/aura/test/event_generator.h"
|
| #include "ui/aura/window.h"
|
| -#include "ui/gfx/animation/slide_animation.h"
|
| -#include "ui/views/bubble/bubble_delegate.h"
|
| #include "ui/views/controls/webview/webview.h"
|
|
|
| // For now, immersive fullscreen is Chrome OS only.
|
| #if defined(OS_CHROMEOS)
|
|
|
| -/////////////////////////////////////////////////////////////////////////////
|
| -
|
| -class MockImmersiveModeControllerDelegate
|
| - : public ImmersiveModeController::Delegate {
|
| +class ImmersiveModeControllerAshTest : public TestWithBrowserView {
|
| public:
|
| - MockImmersiveModeControllerDelegate() : immersive_style_(false) {}
|
| - virtual ~MockImmersiveModeControllerDelegate() {}
|
| -
|
| - bool immersive_style() const { return immersive_style_; }
|
| -
|
| - // ImmersiveModeController::Delegate overrides:
|
| - virtual FullscreenController* GetFullscreenController() OVERRIDE {
|
| - return NULL;
|
| - }
|
| - virtual void FullscreenStateChanged() OVERRIDE {}
|
| - virtual void SetImmersiveStyle(bool immersive) OVERRIDE {
|
| - immersive_style_ = immersive;
|
| - }
|
| - virtual content::WebContents* GetWebContents() OVERRIDE {
|
| - return NULL;
|
| - }
|
| -
|
| - private:
|
| - bool immersive_style_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(MockImmersiveModeControllerDelegate);
|
| -};
|
| -
|
| -/////////////////////////////////////////////////////////////////////////////
|
| -
|
| -class ImmersiveModeControllerAshTest : public ash::test::AshTestBase {
|
| - public:
|
| - enum Modality {
|
| - MODALITY_MOUSE,
|
| - MODALITY_TOUCH,
|
| - MODALITY_GESTURE
|
| - };
|
| -
|
| - ImmersiveModeControllerAshTest() : widget_(NULL), top_container_(NULL) {}
|
| + ImmersiveModeControllerAshTest() {}
|
| virtual ~ImmersiveModeControllerAshTest() {}
|
|
|
| - ImmersiveModeControllerAsh* controller() { return controller_.get(); }
|
| - views::View* top_container() { return top_container_; }
|
| - MockImmersiveModeControllerDelegate* delegate() { return delegate_.get(); }
|
| -
|
| - // Access to private data from the controller.
|
| - bool top_edge_hover_timer_running() const {
|
| - return controller_->top_edge_hover_timer_.IsRunning();
|
| - }
|
| - int mouse_x_when_hit_top() const {
|
| - return controller_->mouse_x_when_hit_top_in_screen_;
|
| - }
|
| -
|
| - // ash::test::AshTestBase overrides:
|
| - virtual void SetUp() OVERRIDE {
|
| - ash::test::AshTestBase::SetUp();
|
| -
|
| - controller_.reset(new ImmersiveModeControllerAsh);
|
| - delegate_.reset(new MockImmersiveModeControllerDelegate);
|
| -
|
| - widget_ = new views::Widget();
|
| - views::Widget::InitParams params;
|
| - params.context = CurrentContext();
|
| - params.bounds = gfx::Rect(0, 0, 500, 500);
|
| - widget_->Init(params);
|
| - widget_->Show();
|
| -
|
| - top_container_ = new views::View();
|
| - top_container_->SetBounds(0, 0, 500, 100);
|
| - top_container_->set_focusable(true);
|
| -
|
| - widget_->GetContentsView()->AddChildView(top_container_);
|
| -
|
| - controller_->Init(delegate_.get(), widget_, top_container_);
|
| - SetAnimationsDisabled(true);
|
| -
|
| - // The mouse is moved so that it is not over |top_container_| by
|
| - // AshTestBase.
|
| - }
|
| -
|
| - // Enable or disable the immersive mode controller's animations. When the
|
| - // immersive mode controller's animations are disabled, some behavior is
|
| - // slightly different. In particular, the behavior is different when there
|
| - // is a transfer in which lock keeps the top-of-window views revealed (eg
|
| - // bubble keeps top-of-window views revealed -> mouse keeps top-of-window
|
| - // views revealed). It is necessary to temparily enable the immersive
|
| - // controller's animations to get the correct behavior in tests.
|
| - void SetAnimationsDisabled(bool disabled) {
|
| - controller_->animations_disabled_for_test_ = disabled;
|
| - // Force any in progress animations to finish.
|
| - if (disabled)
|
| - controller_->animation_->End();
|
| - }
|
| -
|
| - // Attempt to reveal the top-of-window views via |modality|.
|
| - // The top-of-window views can only be revealed via mouse hover or a gesture.
|
| - void AttemptReveal(Modality modality) {
|
| - ASSERT_NE(modality, MODALITY_TOUCH);
|
| - AttemptRevealStateChange(true, modality);
|
| - }
|
| -
|
| - // Attempt to unreveal the top-of-window views via |modality|. The
|
| - // top-of-window views can be unrevealed via any modality.
|
| - void AttemptUnreveal(Modality modality) {
|
| - AttemptRevealStateChange(false, modality);
|
| - }
|
| -
|
| - // Sets whether the mouse is hovered above |top_container_|.
|
| - // SetHovered(true) moves the mouse over the |top_container_| but does not
|
| - // move it to the top of the screen so will not initiate a reveal.
|
| - void SetHovered(bool is_mouse_hovered) {
|
| - MoveMouse(0, is_mouse_hovered ? 10 : top_container_->height() + 100);
|
| - }
|
| -
|
| - // Move the mouse to the given coordinates. The coordinates should be in
|
| - // |top_container_| coordinates.
|
| - void MoveMouse(int x, int y) {
|
| - gfx::Point screen_position(x, y);
|
| - views::View::ConvertPointToScreen(top_container_, &screen_position);
|
| - GetEventGenerator().MoveMouseTo(screen_position.x(), screen_position.y());
|
| -
|
| - // If the top edge timer started running as a result of the mouse move, run
|
| - // the task which occurs after the timer delay. This reveals the
|
| - // top-of-window views synchronously if the mouse is hovered at the top of
|
| - // the screen.
|
| - if (controller()->top_edge_hover_timer_.IsRunning()) {
|
| - controller()->top_edge_hover_timer_.user_task().Run();
|
| - controller()->top_edge_hover_timer_.Stop();
|
| - }
|
| - }
|
| -
|
| - private:
|
| - // Attempt to change the revealed state to |revealed| via |modality|.
|
| - void AttemptRevealStateChange(bool revealed, Modality modality) {
|
| - // Compute the event position in |top_container_| coordinates.
|
| - gfx::Point event_position(0, revealed ? 0 : top_container_->height() + 100);
|
| - switch (modality) {
|
| - case MODALITY_MOUSE: {
|
| - MoveMouse(event_position.x(), event_position.y());
|
| - break;
|
| - }
|
| - case MODALITY_TOUCH: {
|
| - gfx::Point screen_position = event_position;
|
| - views::View::ConvertPointToScreen(top_container_, &screen_position);
|
| -
|
| - aura::test::EventGenerator& event_generator(GetEventGenerator());
|
| - event_generator.MoveTouch(event_position);
|
| - event_generator.PressTouch();
|
| - event_generator.ReleaseTouch();
|
| - break;
|
| - }
|
| - case MODALITY_GESTURE: {
|
| - aura::client::GetCursorClient(CurrentContext())->DisableMouseEvents();
|
| - ImmersiveModeControllerAsh::SwipeType swipe_type = revealed ?
|
| - ImmersiveModeControllerAsh::SWIPE_OPEN :
|
| - ImmersiveModeControllerAsh::SWIPE_CLOSE;
|
| - controller_->UpdateRevealedLocksForSwipe(swipe_type);
|
| - break;
|
| - }
|
| - }
|
| - }
|
| -
|
| - scoped_ptr<ImmersiveModeControllerAsh> controller_;
|
| - scoped_ptr<MockImmersiveModeControllerDelegate> delegate_;
|
| - views::Widget* widget_; // Owned by the native widget.
|
| - views::View* top_container_; // Owned by |root_view_|.
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(ImmersiveModeControllerAshTest);
|
| -};
|
| -
|
| -// Test of initial state and basic functionality.
|
| -TEST_F(ImmersiveModeControllerAshTest, ImmersiveModeControllerAsh) {
|
| - // Initial state.
|
| - EXPECT_FALSE(controller()->IsEnabled());
|
| - EXPECT_FALSE(controller()->ShouldHideTopViews());
|
| - EXPECT_FALSE(controller()->IsRevealed());
|
| - EXPECT_FALSE(delegate()->immersive_style());
|
| -
|
| - // Enabling hides the top views.
|
| - controller()->SetEnabled(true);
|
| - EXPECT_TRUE(controller()->IsEnabled());
|
| - EXPECT_FALSE(controller()->IsRevealed());
|
| - EXPECT_TRUE(controller()->ShouldHideTopViews());
|
| - EXPECT_FALSE(controller()->ShouldHideTabIndicators());
|
| - EXPECT_TRUE(delegate()->immersive_style());
|
| -
|
| - // Revealing shows the top views.
|
| - AttemptReveal(MODALITY_MOUSE);
|
| - EXPECT_TRUE(controller()->IsRevealed());
|
| - EXPECT_FALSE(controller()->ShouldHideTopViews());
|
| - // Tabs are painting in the normal style during a reveal.
|
| - EXPECT_FALSE(delegate()->immersive_style());
|
| -
|
| - // Disabling immersive fullscreen keeps the top views shown.
|
| - controller()->SetEnabled(false);
|
| - EXPECT_FALSE(controller()->IsEnabled());
|
| - EXPECT_FALSE(controller()->IsRevealed());
|
| - EXPECT_FALSE(controller()->ShouldHideTopViews());
|
| - EXPECT_FALSE(delegate()->immersive_style());
|
| -
|
| - // Test disabling immersive fullscreen when the top views are hidden.
|
| - controller()->SetEnabled(true);
|
| - EXPECT_TRUE(controller()->IsEnabled());
|
| - EXPECT_FALSE(controller()->IsRevealed());
|
| - EXPECT_TRUE(controller()->ShouldHideTopViews());
|
| - EXPECT_TRUE(delegate()->immersive_style());
|
| -
|
| - controller()->SetEnabled(false);
|
| - EXPECT_FALSE(controller()->IsEnabled());
|
| - EXPECT_FALSE(controller()->IsRevealed());
|
| - EXPECT_FALSE(controller()->ShouldHideTopViews());
|
| - EXPECT_FALSE(delegate()->immersive_style());
|
| -}
|
| -
|
| -// GetRevealedLock() specific tests.
|
| -TEST_F(ImmersiveModeControllerAshTest, RevealedLock) {
|
| - scoped_ptr<ImmersiveRevealedLock> lock1;
|
| - scoped_ptr<ImmersiveRevealedLock> lock2;
|
| -
|
| - // Immersive fullscreen is not on by default.
|
| - EXPECT_FALSE(controller()->IsEnabled());
|
| -
|
| - // 1) Test acquiring and releasing a revealed state lock while immersive
|
| - // fullscreen is disabled. Acquiring or releasing the lock should have no
|
| - // effect till immersive fullscreen is enabled.
|
| - lock1.reset(controller()->GetRevealedLock(
|
| - ImmersiveModeControllerAsh::ANIMATE_REVEAL_NO));
|
| - EXPECT_FALSE(controller()->IsEnabled());
|
| - EXPECT_FALSE(controller()->IsRevealed());
|
| -
|
| - // Immersive fullscreen should start in the revealed state due to the lock.
|
| - controller()->SetEnabled(true);
|
| - EXPECT_TRUE(controller()->IsEnabled());
|
| - EXPECT_TRUE(controller()->IsRevealed());
|
| -
|
| - controller()->SetEnabled(false);
|
| - EXPECT_FALSE(controller()->IsEnabled());
|
| - EXPECT_FALSE(controller()->IsRevealed());
|
| -
|
| - lock1.reset();
|
| - EXPECT_FALSE(controller()->IsEnabled());
|
| - EXPECT_FALSE(controller()->IsRevealed());
|
| -
|
| - // Immersive fullscreen should start in the closed state because the lock is
|
| - // no longer held.
|
| - controller()->SetEnabled(true);
|
| - EXPECT_TRUE(controller()->IsEnabled());
|
| - EXPECT_FALSE(controller()->IsRevealed());
|
| -
|
| - // 2) Test that acquiring a lock reveals the top-of-window views if they are
|
| - // hidden.
|
| - lock1.reset(controller()->GetRevealedLock(
|
| - ImmersiveModeControllerAsh::ANIMATE_REVEAL_NO));
|
| - EXPECT_TRUE(controller()->IsRevealed());
|
| -
|
| - // 3) Test that the top-of-window views are only hidden when all of the locks
|
| - // are released.
|
| - lock2.reset(controller()->GetRevealedLock(
|
| - ImmersiveModeControllerAsh::ANIMATE_REVEAL_NO));
|
| - lock1.reset();
|
| - EXPECT_TRUE(controller()->IsRevealed());
|
| -
|
| - lock2.reset();
|
| - EXPECT_FALSE(controller()->IsRevealed());
|
| -}
|
| -
|
| -// Test mouse event processing for top-of-screen reveal triggering.
|
| -TEST_F(ImmersiveModeControllerAshTest, OnMouseEvent) {
|
| - // Set up initial state.
|
| - controller()->SetEnabled(true);
|
| - ASSERT_TRUE(controller()->IsEnabled());
|
| - ASSERT_FALSE(controller()->IsRevealed());
|
| -
|
| - aura::test::EventGenerator& event_generator(GetEventGenerator());
|
| -
|
| - gfx::Rect top_container_bounds_in_screen =
|
| - top_container()->GetBoundsInScreen();
|
| - // A position along the top edge of TopContainerView in screen coordinates.
|
| - gfx::Point top_edge_pos(top_container_bounds_in_screen.x() + 100,
|
| - top_container_bounds_in_screen.y());
|
| -
|
| - // Mouse wheel event does nothing.
|
| - ui::MouseEvent wheel(
|
| - ui::ET_MOUSEWHEEL, top_edge_pos, top_edge_pos, ui::EF_NONE);
|
| - event_generator.Dispatch(&wheel);
|
| - EXPECT_FALSE(top_edge_hover_timer_running());
|
| -
|
| - // Move to top edge of screen starts hover timer running. We cannot use
|
| - // MoveMouse() because MoveMouse() stops the timer if it started running.
|
| - event_generator.MoveMouseTo(top_edge_pos);
|
| - EXPECT_TRUE(top_edge_hover_timer_running());
|
| - EXPECT_EQ(top_edge_pos.x(), mouse_x_when_hit_top());
|
| -
|
| - // Moving |ImmersiveModeControllerAsh::kMouseRevealBoundsHeight| down from
|
| - // the top edge stops it.
|
| - event_generator.MoveMouseBy(0, 3);
|
| - EXPECT_FALSE(top_edge_hover_timer_running());
|
| -
|
| - // Moving back to the top starts the timer again.
|
| - event_generator.MoveMouseTo(top_edge_pos);
|
| - EXPECT_TRUE(top_edge_hover_timer_running());
|
| - EXPECT_EQ(top_edge_pos.x(), mouse_x_when_hit_top());
|
| -
|
| - // Slight move to the right keeps the timer running for the same hit point.
|
| - event_generator.MoveMouseBy(1, 0);
|
| - EXPECT_TRUE(top_edge_hover_timer_running());
|
| - EXPECT_EQ(top_edge_pos.x(), mouse_x_when_hit_top());
|
| -
|
| - // Moving back to the left also keeps the timer running.
|
| - event_generator.MoveMouseBy(-1, 0);
|
| - EXPECT_TRUE(top_edge_hover_timer_running());
|
| - EXPECT_EQ(top_edge_pos.x(), mouse_x_when_hit_top());
|
| -
|
| - // Large move right restarts the timer (so it is still running) and considers
|
| - // this a new hit at the top.
|
| - event_generator.MoveMouseTo(top_edge_pos.x() + 100, top_edge_pos.y());
|
| - EXPECT_TRUE(top_edge_hover_timer_running());
|
| - EXPECT_EQ(top_edge_pos.x() + 100, mouse_x_when_hit_top());
|
| -
|
| - // Moving off the top edge horizontally stops the timer.
|
| - EXPECT_GT(CurrentContext()->bounds().width(), top_container()->width());
|
| - event_generator.MoveMouseTo(top_container_bounds_in_screen.right(),
|
| - top_container_bounds_in_screen.y());
|
| - EXPECT_FALSE(top_edge_hover_timer_running());
|
| -
|
| - // Once revealed, a move just a little below the top container doesn't end a
|
| - // reveal.
|
| - AttemptReveal(MODALITY_MOUSE);
|
| - event_generator.MoveMouseTo(top_container_bounds_in_screen.x(),
|
| - top_container_bounds_in_screen.bottom() + 1);
|
| - EXPECT_TRUE(controller()->IsRevealed());
|
| -
|
| - // Once revealed, clicking just below the top container ends the reveal.
|
| - event_generator.ClickLeftButton();
|
| - EXPECT_FALSE(controller()->IsRevealed());
|
| -
|
| - // Moving a lot below the top container ends a reveal.
|
| - AttemptReveal(MODALITY_MOUSE);
|
| - EXPECT_TRUE(controller()->IsRevealed());
|
| - event_generator.MoveMouseTo(top_container_bounds_in_screen.x(),
|
| - top_container_bounds_in_screen.bottom() + 50);
|
| - EXPECT_FALSE(controller()->IsRevealed());
|
| -
|
| - // The mouse position cannot cause a reveal when TopContainerView's widget
|
| - // has capture.
|
| - views::Widget* widget = top_container()->GetWidget();
|
| - widget->SetCapture(top_container());
|
| - AttemptReveal(MODALITY_MOUSE);
|
| - EXPECT_FALSE(controller()->IsRevealed());
|
| - widget->ReleaseCapture();
|
| -
|
| - // The mouse position cannot end the reveal while TopContainerView's widget
|
| - // has capture.
|
| - AttemptReveal(MODALITY_MOUSE);
|
| - EXPECT_TRUE(controller()->IsRevealed());
|
| - widget->SetCapture(top_container());
|
| - event_generator.MoveMouseTo(top_container_bounds_in_screen.x(),
|
| - top_container_bounds_in_screen.bottom() + 51);
|
| - EXPECT_TRUE(controller()->IsRevealed());
|
| -
|
| - // Releasing capture should end the reveal.
|
| - widget->ReleaseCapture();
|
| - EXPECT_FALSE(controller()->IsRevealed());
|
| -}
|
| -
|
| -// Test mouse event processing for top-of-screen reveal triggering when the user
|
| -// has a vertical display layout (primary display above/below secondary display)
|
| -// and the immersive fullscreen window is on the bottom display.
|
| -TEST_F(ImmersiveModeControllerAshTest, MouseEventsVerticalDisplayLayout) {
|
| - if (!SupportsMultipleDisplays())
|
| - return;
|
| -
|
| - // Set up initial state.
|
| - UpdateDisplay("800x600,800x600");
|
| - ash::DisplayLayout display_layout(ash::DisplayLayout::TOP, 0);
|
| - ash::Shell::GetInstance()->display_manager()->SetLayoutForCurrentDisplays(
|
| - display_layout);
|
| -
|
| - controller()->SetEnabled(true);
|
| - ASSERT_TRUE(controller()->IsEnabled());
|
| - ASSERT_FALSE(controller()->IsRevealed());
|
| -
|
| - ash::Shell::RootWindowList root_windows = ash::Shell::GetAllRootWindows();
|
| - ASSERT_EQ(root_windows[0],
|
| - top_container()->GetWidget()->GetNativeWindow()->GetRootWindow());
|
| -
|
| - gfx::Rect primary_root_window_bounds_in_screen =
|
| - root_windows[0]->GetBoundsInScreen();
|
| - // Do not set |x| to the root window's x position because the display's
|
| - // corners have special behavior.
|
| - int x = primary_root_window_bounds_in_screen.x() + 10;
|
| - // The y position of the top edge of the primary display.
|
| - int y_top_edge = primary_root_window_bounds_in_screen.y();
|
| -
|
| - aura::test::EventGenerator& event_generator(GetEventGenerator());
|
| -
|
| - // Moving right below the top edge starts the hover timer running. We
|
| - // cannot use MoveMouse() because MoveMouse() stops the timer if it started
|
| - // running.
|
| - event_generator.MoveMouseTo(x, y_top_edge + 1);
|
| - EXPECT_TRUE(top_edge_hover_timer_running());
|
| - EXPECT_EQ(y_top_edge + 1,
|
| - aura::Env::GetInstance()->last_mouse_location().y());
|
| -
|
| - // The timer should continue running if the user moves the mouse to the top
|
| - // edge even though the mouse is warped to the secondary display.
|
| - event_generator.MoveMouseTo(x, y_top_edge);
|
| - EXPECT_TRUE(top_edge_hover_timer_running());
|
| - EXPECT_NE(y_top_edge,
|
| - aura::Env::GetInstance()->last_mouse_location().y());
|
| -
|
| - // The timer should continue running if the user overshoots the top edge
|
| - // a bit.
|
| - event_generator.MoveMouseTo(x, y_top_edge - 2);
|
| - EXPECT_TRUE(top_edge_hover_timer_running());
|
| -
|
| - // The timer should stop running if the user overshoots the top edge by
|
| - // a lot.
|
| - event_generator.MoveMouseTo(x, y_top_edge - 20);
|
| - EXPECT_FALSE(top_edge_hover_timer_running());
|
| -
|
| - // The timer should not start if the user moves the mouse to the bottom of the
|
| - // secondary display without crossing the top edge first.
|
| - event_generator.MoveMouseTo(x, y_top_edge - 2);
|
| -
|
| - // Reveal the top-of-window views by overshooting the top edge slightly.
|
| - event_generator.MoveMouseTo(x, y_top_edge + 1);
|
| - // MoveMouse() runs the timer task.
|
| - MoveMouse(x, y_top_edge - 2);
|
| - EXPECT_TRUE(controller()->IsRevealed());
|
| -
|
| - // The top-of-window views should stay revealed if the user moves the mouse
|
| - // around in the bottom region of the secondary display.
|
| - event_generator.MoveMouseTo(x + 10, y_top_edge - 3);
|
| - EXPECT_TRUE(controller()->IsRevealed());
|
| -
|
| - // The top-of-window views should hide if the user moves the mouse away from
|
| - // the bottom region of the secondary display.
|
| - event_generator.MoveMouseTo(x, y_top_edge - 20);
|
| - EXPECT_FALSE(controller()->IsRevealed());
|
| -}
|
| -
|
| -// Test that hovering the mouse over the find bar does not end a reveal.
|
| -TEST_F(ImmersiveModeControllerAshTest, FindBar) {
|
| - // Set up initial state.
|
| - controller()->SetEnabled(true);
|
| - ASSERT_TRUE(controller()->IsEnabled());
|
| - ASSERT_FALSE(controller()->IsRevealed());
|
| -
|
| - // Compute the find bar bounds relative to TopContainerView. The find
|
| - // bar is aligned with the bottom right of the TopContainerView.
|
| - gfx::Rect find_bar_bounds(top_container()->bounds().right() - 100,
|
| - top_container()->bounds().bottom(),
|
| - 100,
|
| - 50);
|
| -
|
| - gfx::Point find_bar_position_in_screen = find_bar_bounds.origin();
|
| - views::View::ConvertPointToScreen(top_container(),
|
| - &find_bar_position_in_screen);
|
| - gfx::Rect find_bar_bounds_in_screen(find_bar_position_in_screen,
|
| - find_bar_bounds.size());
|
| - controller()->OnFindBarVisibleBoundsChanged(find_bar_bounds_in_screen);
|
| -
|
| - // Moving the mouse over the find bar does not end the reveal.
|
| - gfx::Point over_find_bar(find_bar_bounds.x() + 25, find_bar_bounds.y() + 25);
|
| - AttemptReveal(MODALITY_MOUSE);
|
| - EXPECT_TRUE(controller()->IsRevealed());
|
| - MoveMouse(over_find_bar.x(), over_find_bar.y());
|
| - EXPECT_TRUE(controller()->IsRevealed());
|
| -
|
| - // Moving the mouse off of the find bar horizontally ends the reveal.
|
| - MoveMouse(find_bar_bounds.x() - 25, find_bar_bounds.y() + 25);
|
| - EXPECT_FALSE(controller()->IsRevealed());
|
| -
|
| - // Moving the mouse off of the find bar vertically ends the reveal.
|
| - AttemptReveal(MODALITY_MOUSE);
|
| - EXPECT_TRUE(controller()->IsRevealed());
|
| - MoveMouse(find_bar_bounds.x() + 25, find_bar_bounds.bottom() + 25);
|
| -
|
| - // Similar to the TopContainerView, moving the mouse slightly off vertically
|
| - // of the find bar does not end the reveal.
|
| - AttemptReveal(MODALITY_MOUSE);
|
| - MoveMouse(find_bar_bounds.x() + 25, find_bar_bounds.bottom() + 1);
|
| - EXPECT_TRUE(controller()->IsRevealed());
|
| -
|
| - // Similar to the TopContainerView, clicking the mouse even slightly off of
|
| - // the find bar ends the reveal.
|
| - GetEventGenerator().ClickLeftButton();
|
| - EXPECT_FALSE(controller()->IsRevealed());
|
| -
|
| - // Set the find bar bounds to empty. Hovering over the position previously
|
| - // occupied by the find bar, |over_find_bar|, should end the reveal.
|
| - controller()->OnFindBarVisibleBoundsChanged(gfx::Rect());
|
| - AttemptReveal(MODALITY_MOUSE);
|
| - MoveMouse(over_find_bar.x(), over_find_bar.y());
|
| - EXPECT_FALSE(controller()->IsRevealed());
|
| -}
|
| -
|
| -// Test behavior when the mouse becomes hovered without moving.
|
| -TEST_F(ImmersiveModeControllerAshTest, MouseHoveredWithoutMoving) {
|
| - controller()->SetEnabled(true);
|
| - scoped_ptr<ImmersiveRevealedLock> lock;
|
| -
|
| - // 1) Test that if the mouse becomes hovered without the mouse moving due to a
|
| - // lock causing the top-of-window views to be revealed (and the mouse
|
| - // happening to be near the top of the screen), the top-of-window views do not
|
| - // hide till the mouse moves off of the top-of-window views.
|
| - SetHovered(true);
|
| - EXPECT_FALSE(controller()->IsRevealed());
|
| - lock.reset(controller()->GetRevealedLock(
|
| - ImmersiveModeControllerAsh::ANIMATE_REVEAL_NO));
|
| - EXPECT_TRUE(controller()->IsRevealed());
|
| - lock.reset();
|
| - EXPECT_TRUE(controller()->IsRevealed());
|
| - SetHovered(false);
|
| - EXPECT_FALSE(controller()->IsRevealed());
|
| -
|
| - // 2) Test that if the mouse becomes hovered without moving because of a
|
| - // reveal in ImmersiveModeControllerAshTest::controller()->SetEnabled(true)
|
| - // and there are no locks keeping the top-of-window views revealed, that mouse
|
| - // hover does not prevent the top-of-window views from closing.
|
| - controller()->SetEnabled(false);
|
| - SetHovered(true);
|
| - EXPECT_FALSE(controller()->IsRevealed());
|
| - controller()->SetEnabled(true);
|
| - EXPECT_FALSE(controller()->IsRevealed());
|
| -
|
| - // 3) Test that if the mouse becomes hovered without moving because of a
|
| - // reveal in ImmersiveModeControllerAshTest::controller()->SetEnabled(true)
|
| - // and there is a lock keeping the top-of-window views revealed, that the
|
| - // top-of-window views do not hide till the mouse moves off of the
|
| - // top-of-window views.
|
| - controller()->SetEnabled(false);
|
| - SetHovered(true);
|
| - lock.reset(controller()->GetRevealedLock(
|
| - ImmersiveModeControllerAsh::ANIMATE_REVEAL_NO));
|
| - EXPECT_FALSE(controller()->IsRevealed());
|
| - controller()->SetEnabled(true);
|
| - EXPECT_TRUE(controller()->IsRevealed());
|
| - lock.reset();
|
| - EXPECT_TRUE(controller()->IsRevealed());
|
| - SetHovered(false);
|
| - EXPECT_FALSE(controller()->IsRevealed());
|
| -}
|
| -
|
| -// Test revealing the top-of-window views using one modality and ending
|
| -// the reveal via another. For instance, initiating the reveal via a SWIPE_OPEN
|
| -// edge gesture, switching to using the mouse and ending the reveal by moving
|
| -// the mouse off of the top-of-window views.
|
| -TEST_F(ImmersiveModeControllerAshTest, DifferentModalityEnterExit) {
|
| - controller()->SetEnabled(true);
|
| - EXPECT_TRUE(controller()->IsEnabled());
|
| - EXPECT_FALSE(controller()->IsRevealed());
|
| -
|
| - // Initiate reveal via gesture, end reveal via mouse.
|
| - AttemptReveal(MODALITY_GESTURE);
|
| - EXPECT_TRUE(controller()->IsRevealed());
|
| - MoveMouse(1, 1);
|
| - EXPECT_TRUE(controller()->IsRevealed());
|
| - AttemptUnreveal(MODALITY_MOUSE);
|
| - EXPECT_FALSE(controller()->IsRevealed());
|
| -
|
| - // Initiate reveal via gesture, end reveal via touch.
|
| - AttemptReveal(MODALITY_GESTURE);
|
| - EXPECT_TRUE(controller()->IsRevealed());
|
| - AttemptUnreveal(MODALITY_TOUCH);
|
| - EXPECT_FALSE(controller()->IsRevealed());
|
| -
|
| - // Initiate reveal via mouse, end reveal via gesture.
|
| - AttemptReveal(MODALITY_MOUSE);
|
| - EXPECT_TRUE(controller()->IsRevealed());
|
| - AttemptUnreveal(MODALITY_GESTURE);
|
| - EXPECT_FALSE(controller()->IsRevealed());
|
| -
|
| - // Initiate reveal via mouse, end reveal via touch.
|
| - AttemptReveal(MODALITY_MOUSE);
|
| - EXPECT_TRUE(controller()->IsRevealed());
|
| - AttemptUnreveal(MODALITY_TOUCH);
|
| - EXPECT_FALSE(controller()->IsRevealed());
|
| -}
|
| -
|
| -// Test when the SWIPE_CLOSE edge gesture closes the top-of-window views.
|
| -TEST_F(ImmersiveModeControllerAshTest, EndRevealViaGesture) {
|
| - controller()->SetEnabled(true);
|
| - EXPECT_TRUE(controller()->IsEnabled());
|
| - EXPECT_FALSE(controller()->IsRevealed());
|
| -
|
| - // A gesture should be able to close the top-of-window views when
|
| - // top-of-window views have focus.
|
| - AttemptReveal(MODALITY_MOUSE);
|
| - top_container()->RequestFocus();
|
| - EXPECT_TRUE(controller()->IsRevealed());
|
| - AttemptUnreveal(MODALITY_GESTURE);
|
| - EXPECT_FALSE(controller()->IsRevealed());
|
| - top_container()->GetFocusManager()->ClearFocus();
|
| -
|
| - // If some other code is holding onto a lock, a gesture should not be able to
|
| - // end the reveal.
|
| - AttemptReveal(MODALITY_MOUSE);
|
| - scoped_ptr<ImmersiveRevealedLock> lock(controller()->GetRevealedLock(
|
| - ImmersiveModeController::ANIMATE_REVEAL_NO));
|
| - EXPECT_TRUE(controller()->IsRevealed());
|
| - AttemptUnreveal(MODALITY_GESTURE);
|
| - EXPECT_TRUE(controller()->IsRevealed());
|
| - lock.reset();
|
| - EXPECT_FALSE(controller()->IsRevealed());
|
| -}
|
| -
|
| -// Do not test under windows because focus testing is not reliable on
|
| -// Windows. (crbug.com/79493)
|
| -#if !defined(OS_WIN)
|
| -
|
| -// Test how focus and activation affects whether the top-of-window views are
|
| -// revealed.
|
| -TEST_F(ImmersiveModeControllerAshTest, Focus) {
|
| - // Add views to the view hierarchy which we will focus and unfocus during the
|
| - // test.
|
| - views::View* child_view = new views::View();
|
| - child_view->SetBounds(0, 0, 10, 10);
|
| - child_view->set_focusable(true);
|
| - top_container()->AddChildView(child_view);
|
| - views::View* unrelated_view = new views::View();
|
| - unrelated_view->SetBounds(0, 100, 10, 10);
|
| - unrelated_view->set_focusable(true);
|
| - top_container()->parent()->AddChildView(unrelated_view);
|
| - views::FocusManager* focus_manager =
|
| - top_container()->GetWidget()->GetFocusManager();
|
| -
|
| - controller()->SetEnabled(true);
|
| -
|
| - // 1) Test that the top-of-window views stay revealed as long as either a
|
| - // |child_view| has focus or the mouse is hovered above the top-of-window
|
| - // views.
|
| - AttemptReveal(MODALITY_MOUSE);
|
| - child_view->RequestFocus();
|
| - focus_manager->ClearFocus();
|
| - EXPECT_TRUE(controller()->IsRevealed());
|
| - child_view->RequestFocus();
|
| - SetHovered(false);
|
| - EXPECT_TRUE(controller()->IsRevealed());
|
| - focus_manager->ClearFocus();
|
| - EXPECT_FALSE(controller()->IsRevealed());
|
| -
|
| - // 2) Test that focusing |unrelated_view| hides the top-of-window views.
|
| - // Note: In this test we can cheat and trigger a reveal via focus because
|
| - // the top container does not hide when the top-of-window views are not
|
| - // revealed.
|
| - child_view->RequestFocus();
|
| - EXPECT_TRUE(controller()->IsRevealed());
|
| - unrelated_view->RequestFocus();
|
| - EXPECT_FALSE(controller()->IsRevealed());
|
| -
|
| - // 3) Test that a loss of focus of |child_view| to |unrelated_view|
|
| - // while immersive mode is disabled is properly registered.
|
| - child_view->RequestFocus();
|
| - EXPECT_TRUE(controller()->IsRevealed());
|
| - controller()->SetEnabled(false);
|
| - EXPECT_FALSE(controller()->IsRevealed());
|
| - unrelated_view->RequestFocus();
|
| - controller()->SetEnabled(true);
|
| - EXPECT_FALSE(controller()->IsRevealed());
|
| -
|
| - // Repeat test but with a revealed lock acquired when immersive mode is
|
| - // disabled because the code path is different.
|
| - child_view->RequestFocus();
|
| - EXPECT_TRUE(controller()->IsRevealed());
|
| - controller()->SetEnabled(false);
|
| - scoped_ptr<ImmersiveRevealedLock> lock(controller()->GetRevealedLock(
|
| - ImmersiveModeController::ANIMATE_REVEAL_NO));
|
| - EXPECT_FALSE(controller()->IsRevealed());
|
| - unrelated_view->RequestFocus();
|
| - controller()->SetEnabled(true);
|
| - EXPECT_TRUE(controller()->IsRevealed());
|
| - lock.reset();
|
| - EXPECT_FALSE(controller()->IsRevealed());
|
| -}
|
| -
|
| -// Test how activation affects whether the top-of-window views are revealed.
|
| -// The behavior when a bubble is activated is tested in
|
| -// ImmersiveModeControllerAshTest.Bubbles.
|
| -TEST_F(ImmersiveModeControllerAshTest, Activation) {
|
| - views::Widget* top_container_widget = top_container()->GetWidget();
|
| -
|
| - controller()->SetEnabled(true);
|
| - ASSERT_FALSE(controller()->IsRevealed());
|
| -
|
| - // 1) Test that a transient window which is not a bubble does not trigger a
|
| - // reveal but does keep the top-of-window views revealed if they are already
|
| - // revealed.
|
| - views::Widget::InitParams transient_params;
|
| - transient_params.ownership =
|
| - views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
|
| - transient_params.parent = top_container_widget->GetNativeView();
|
| - transient_params.bounds = gfx::Rect(0, 0, 100, 100);
|
| - scoped_ptr<views::Widget> transient_widget(new views::Widget());
|
| - transient_widget->Init(transient_params);
|
| - transient_widget->Show();
|
| -
|
| - EXPECT_FALSE(controller()->IsRevealed());
|
| - top_container_widget->Activate();
|
| - AttemptReveal(MODALITY_MOUSE);
|
| - EXPECT_TRUE(controller()->IsRevealed());
|
| - transient_widget->Activate();
|
| - SetHovered(false);
|
| - EXPECT_TRUE(controller()->IsRevealed());
|
| - transient_widget.reset();
|
| - EXPECT_FALSE(controller()->IsRevealed());
|
| -
|
| - // 2) Test that activating a non-transient window ends the reveal if any.
|
| - views::Widget::InitParams non_transient_params;
|
| - non_transient_params.ownership =
|
| - views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
|
| - non_transient_params.context = top_container_widget->GetNativeView();
|
| - non_transient_params.bounds = gfx::Rect(0, 0, 100, 100);
|
| - scoped_ptr<views::Widget> non_transient_widget(new views::Widget());
|
| - non_transient_widget->Init(non_transient_params);
|
| - non_transient_widget->Show();
|
| -
|
| - EXPECT_FALSE(controller()->IsRevealed());
|
| - top_container_widget->Activate();
|
| - AttemptReveal(MODALITY_MOUSE);
|
| - EXPECT_TRUE(controller()->IsRevealed());
|
| - non_transient_widget->Activate();
|
| - EXPECT_FALSE(controller()->IsRevealed());
|
| -}
|
| -
|
| -// Test how bubbles affect whether the top-of-window views are revealed.
|
| -TEST_F(ImmersiveModeControllerAshTest, Bubbles) {
|
| - scoped_ptr<ImmersiveRevealedLock> revealed_lock;
|
| - views::Widget* top_container_widget = top_container()->GetWidget();
|
| -
|
| - // Add views to the view hierarchy to which we will anchor bubbles.
|
| - views::View* child_view = new views::View();
|
| - child_view->SetBounds(0, 0, 10, 10);
|
| - top_container()->AddChildView(child_view);
|
| - views::View* unrelated_view = new views::View();
|
| - unrelated_view->SetBounds(0, 100, 10, 10);
|
| - top_container()->parent()->AddChildView(unrelated_view);
|
| -
|
| - controller()->SetEnabled(true);
|
| - ASSERT_FALSE(controller()->IsRevealed());
|
| -
|
| - // 1) Test that a bubble anchored to a child of the top container triggers
|
| - // a reveal and keeps the top-of-window views revealed for the duration of
|
| - // its visibility.
|
| - views::Widget* bubble_widget1(views::BubbleDelegateView::CreateBubble(
|
| - new views::BubbleDelegateView(child_view, views::BubbleBorder::NONE)));
|
| - bubble_widget1->Show();
|
| - EXPECT_TRUE(controller()->IsRevealed());
|
| -
|
| - // Activating |top_container_widget| will close |bubble_widget1|.
|
| - top_container_widget->Activate();
|
| - AttemptReveal(MODALITY_MOUSE);
|
| - revealed_lock.reset(controller()->GetRevealedLock(
|
| - ImmersiveModeController::ANIMATE_REVEAL_NO));
|
| - EXPECT_TRUE(controller()->IsRevealed());
|
| -
|
| - views::Widget* bubble_widget2 = views::BubbleDelegateView::CreateBubble(
|
| - new views::BubbleDelegateView(child_view, views::BubbleBorder::NONE));
|
| - bubble_widget2->Show();
|
| - EXPECT_TRUE(controller()->IsRevealed());
|
| - revealed_lock.reset();
|
| - SetHovered(false);
|
| - EXPECT_TRUE(controller()->IsRevealed());
|
| - bubble_widget2->Close();
|
| - EXPECT_FALSE(controller()->IsRevealed());
|
| -
|
| - // 2) Test that transitioning from keeping the top-of-window views revealed
|
| - // because of a bubble to keeping the top-of-window views revealed because of
|
| - // mouse hover by activating |top_container_widget| works.
|
| - views::Widget* bubble_widget3 = views::BubbleDelegateView::CreateBubble(
|
| - new views::BubbleDelegateView(child_view, views::BubbleBorder::NONE));
|
| - bubble_widget3->Show();
|
| - SetHovered(true);
|
| - EXPECT_TRUE(controller()->IsRevealed());
|
| -
|
| - SetAnimationsDisabled(false);
|
| - // Activating |top_container_widget| will close |bubble_widget3|.
|
| - top_container_widget->Activate();
|
| - SetAnimationsDisabled(true);
|
| - EXPECT_TRUE(controller()->IsRevealed());
|
| -
|
| - // 3) Test that the top-of-window views stay revealed as long as at least one
|
| - // bubble anchored to a child of the top container is visible.
|
| - SetHovered(false);
|
| - EXPECT_FALSE(controller()->IsRevealed());
|
| -
|
| - views::BubbleDelegateView* bubble_delegate4(new views::BubbleDelegateView(
|
| - child_view, views::BubbleBorder::NONE));
|
| - bubble_delegate4->set_use_focusless(true);
|
| - views::Widget* bubble_widget4(views::BubbleDelegateView::CreateBubble(
|
| - bubble_delegate4));
|
| - bubble_widget4->Show();
|
| -
|
| - views::BubbleDelegateView* bubble_delegate5(new views::BubbleDelegateView(
|
| - child_view, views::BubbleBorder::NONE));
|
| - bubble_delegate5->set_use_focusless(true);
|
| - views::Widget* bubble_widget5(views::BubbleDelegateView::CreateBubble(
|
| - bubble_delegate5));
|
| - bubble_widget5->Show();
|
| -
|
| - EXPECT_TRUE(controller()->IsRevealed());
|
| - bubble_widget4->Hide();
|
| - EXPECT_TRUE(controller()->IsRevealed());
|
| - bubble_widget5->Hide();
|
| - EXPECT_FALSE(controller()->IsRevealed());
|
| - bubble_widget5->Show();
|
| - EXPECT_TRUE(controller()->IsRevealed());
|
| -
|
| - // 4) Test that visibility changes which occur while immersive fullscreen is
|
| - // disabled are handled upon reenabling immersive fullscreen.
|
| - controller()->SetEnabled(false);
|
| - bubble_widget5->Hide();
|
| - controller()->SetEnabled(true);
|
| - EXPECT_FALSE(controller()->IsRevealed());
|
| -
|
| - // We do not need |bubble_widget4| or |bubble_widget5| anymore, close them.
|
| - bubble_widget4->Close();
|
| - bubble_widget5->Close();
|
| -
|
| - // 5) Test that a bubble added while immersive fullscreen is disabled is
|
| - // handled upon reenabling immersive fullscreen.
|
| - controller()->SetEnabled(false);
|
| -
|
| - views::Widget* bubble_widget6 = views::BubbleDelegateView::CreateBubble(
|
| - new views::BubbleDelegateView(child_view, views::BubbleBorder::NONE));
|
| - bubble_widget6->Show();
|
| -
|
| - controller()->SetEnabled(true);
|
| - EXPECT_TRUE(controller()->IsRevealed());
|
| -
|
| - bubble_widget6->Close();
|
| -
|
| - // 6) Test that a bubble which is not anchored to a child of the
|
| - // TopContainerView does not trigger a reveal or keep the
|
| - // top-of-window views revealed if they are already revealed.
|
| - views::Widget* bubble_widget7 = views::BubbleDelegateView::CreateBubble(
|
| - new views::BubbleDelegateView(unrelated_view, views::BubbleBorder::NONE));
|
| - bubble_widget7->Show();
|
| - EXPECT_FALSE(controller()->IsRevealed());
|
| -
|
| - // Activating |top_container_widget| will close |bubble_widget6|.
|
| - top_container_widget->Activate();
|
| - AttemptReveal(MODALITY_MOUSE);
|
| - EXPECT_TRUE(controller()->IsRevealed());
|
| -
|
| - views::Widget* bubble_widget8 = views::BubbleDelegateView::CreateBubble(
|
| - new views::BubbleDelegateView(unrelated_view, views::BubbleBorder::NONE));
|
| - bubble_widget8->Show();
|
| - SetHovered(false);
|
| - EXPECT_FALSE(controller()->IsRevealed());
|
| - bubble_widget8->Close();
|
| -}
|
| -
|
| -#endif // defined(OS_WIN)
|
| -
|
| -class ImmersiveModeControllerAshTestWithBrowserView
|
| - : public TestWithBrowserView {
|
| - public:
|
| - ImmersiveModeControllerAshTestWithBrowserView() {}
|
| - virtual ~ImmersiveModeControllerAshTestWithBrowserView() {}
|
| -
|
| // TestWithBrowserView override:
|
| virtual void SetUp() OVERRIDE {
|
| TestWithBrowserView::SetUp();
|
| @@ -952,12 +88,12 @@ class ImmersiveModeControllerAshTestWithBrowserView
|
|
|
| scoped_ptr<ImmersiveRevealedLock> revealed_lock_;
|
|
|
| - DISALLOW_COPY_AND_ASSIGN(ImmersiveModeControllerAshTestWithBrowserView);
|
| + DISALLOW_COPY_AND_ASSIGN(ImmersiveModeControllerAshTest);
|
| };
|
|
|
| // Test the layout and visibility of the tabstrip, toolbar and TopContainerView
|
| // in immersive fullscreen.
|
| -TEST_F(ImmersiveModeControllerAshTestWithBrowserView, Layout) {
|
| +TEST_F(ImmersiveModeControllerAshTest, Layout) {
|
| AddTab(browser(), GURL("about:blank"));
|
|
|
| TabStrip* tabstrip = browser_view()->tabstrip();
|
| @@ -1050,7 +186,7 @@ TEST_F(ImmersiveModeControllerAshTestWithBrowserView, Layout) {
|
|
|
| // Test that the browser commands which are usually disabled in fullscreen are
|
| // are enabled in immersive fullscreen.
|
| -TEST_F(ImmersiveModeControllerAshTestWithBrowserView, EnabledCommands) {
|
| +TEST_F(ImmersiveModeControllerAshTest, EnabledCommands) {
|
| ASSERT_FALSE(controller()->IsEnabled());
|
| EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_OPEN_CURRENT_URL));
|
| EXPECT_TRUE(chrome::IsCommandEnabled(browser(), IDC_ABOUT));
|
| @@ -1064,7 +200,7 @@ TEST_F(ImmersiveModeControllerAshTestWithBrowserView, EnabledCommands) {
|
| }
|
|
|
| // Test that restoring a window properly exits immersive fullscreen.
|
| -TEST_F(ImmersiveModeControllerAshTestWithBrowserView, ExitUponRestore) {
|
| +TEST_F(ImmersiveModeControllerAshTest, ExitUponRestore) {
|
| ASSERT_FALSE(controller()->IsEnabled());
|
| ToggleFullscreen();
|
| AttemptReveal();
|
| @@ -1076,47 +212,9 @@ TEST_F(ImmersiveModeControllerAshTestWithBrowserView, ExitUponRestore) {
|
| EXPECT_FALSE(controller()->IsEnabled());
|
| }
|
|
|
| -// Test that the shelf is set to auto hide as long as the window is in
|
| -// immersive fullscreen and that the shelf's state before entering immersive
|
| -// fullscreen is restored upon exiting immersive fullscreen.
|
| -TEST_F(ImmersiveModeControllerAshTestWithBrowserView, Shelf) {
|
| - // Shelf is visible when the test starts.
|
| - ash::internal::ShelfLayoutManager* shelf =
|
| - ash::Shell::GetPrimaryRootWindowController()->GetShelfLayoutManager();
|
| - ASSERT_EQ(ash::SHELF_VISIBLE, shelf->visibility_state());
|
| -
|
| - // Entering immersive fullscreen sets the shelf to auto hide.
|
| - ToggleFullscreen();
|
| - ASSERT_TRUE(browser_view()->IsFullscreen());
|
| - ASSERT_TRUE(controller()->IsEnabled());
|
| - EXPECT_EQ(ash::SHELF_AUTO_HIDE, shelf->visibility_state());
|
| -
|
| - // Disabling immersive fullscreen puts it back.
|
| - ToggleFullscreen();
|
| - ASSERT_FALSE(browser_view()->IsFullscreen());
|
| - ASSERT_FALSE(controller()->IsEnabled());
|
| - EXPECT_EQ(ash::SHELF_VISIBLE, shelf->visibility_state());
|
| -
|
| - // The user could toggle the shelf auto-hide behavior.
|
| - shelf->SetAutoHideBehavior(ash::SHELF_AUTO_HIDE_BEHAVIOR_ALWAYS);
|
| - EXPECT_EQ(ash::SHELF_AUTO_HIDE, shelf->visibility_state());
|
| -
|
| - // Entering immersive fullscreen keeps auto-hide.
|
| - ToggleFullscreen();
|
| - ASSERT_TRUE(browser_view()->IsFullscreen());
|
| - ASSERT_TRUE(controller()->IsEnabled());
|
| - EXPECT_EQ(ash::SHELF_AUTO_HIDE, shelf->visibility_state());
|
| -
|
| - // Disabling immersive fullscreen maintains the user's auto-hide selection.
|
| - ToggleFullscreen();
|
| - ASSERT_FALSE(browser_view()->IsFullscreen());
|
| - ASSERT_FALSE(controller()->IsEnabled());
|
| - EXPECT_EQ(ash::SHELF_AUTO_HIDE, shelf->visibility_state());
|
| -}
|
| -
|
| // Test how being simultaneously in tab fullscreen and immersive fullscreen
|
| // affects the shelf visibility and whether the tab indicators are hidden.
|
| -TEST_F(ImmersiveModeControllerAshTestWithBrowserView, TabAndBrowserFullscreen) {
|
| +TEST_F(ImmersiveModeControllerAshTest, TabAndBrowserFullscreen) {
|
| AddTab(browser(), GURL("about:blank"));
|
|
|
| // The shelf should start out as visible.
|
|
|