| Index: chrome/browser/ui/views/frame/browser_non_client_frame_view_ash_browsertest.cc
|
| diff --git a/chrome/browser/ui/views/frame/browser_non_client_frame_view_ash_browsertest.cc b/chrome/browser/ui/views/frame/browser_non_client_frame_view_ash_browsertest.cc
|
| index a38408c9a8fa3887907ff0079b561e81ece93dff..4ab7d1a5ec42479f2366b25c61edf5f6db5237ca 100644
|
| --- a/chrome/browser/ui/views/frame/browser_non_client_frame_view_ash_browsertest.cc
|
| +++ b/chrome/browser/ui/views/frame/browser_non_client_frame_view_ash_browsertest.cc
|
| @@ -132,6 +132,7 @@ IN_PROC_BROWSER_TEST_F(BrowserNonClientFrameViewAshTest, ImmersiveFullscreen) {
|
|
|
| // We know we're using Views, so static cast.
|
| BrowserView* browser_view = static_cast<BrowserView*>(browser()->window());
|
| + content::WebContents* web_contents = browser_view->GetActiveWebContents();
|
| Widget* widget = browser_view->GetWidget();
|
| // We know we're using Ash, so static cast.
|
| BrowserNonClientFrameViewAsh* frame_view =
|
| @@ -142,7 +143,6 @@ IN_PROC_BROWSER_TEST_F(BrowserNonClientFrameViewAshTest, ImmersiveFullscreen) {
|
| static_cast<ImmersiveModeControllerAsh*>(
|
| browser_view->immersive_mode_controller());
|
| immersive_mode_controller->DisableAnimationsForTest();
|
| - immersive_mode_controller->SetForceHideTabIndicatorsForTest(true);
|
|
|
| // Immersive mode starts disabled.
|
| ASSERT_FALSE(widget->IsFullscreen());
|
| @@ -151,8 +151,22 @@ IN_PROC_BROWSER_TEST_F(BrowserNonClientFrameViewAshTest, ImmersiveFullscreen) {
|
| // Frame paints by default.
|
| EXPECT_TRUE(frame_view->ShouldPaint());
|
|
|
| - // Going fullscreen enables immersive mode.
|
| - chrome::ToggleFullscreenMode(browser());
|
| + // Enter both browser fullscreen and tab fullscreen. Entering browser
|
| + // fullscreen should enable immersive fullscreen.
|
| + {
|
| + // NOTIFICATION_FULLSCREEN_CHANGED is sent asynchronously.
|
| + scoped_ptr<FullscreenNotificationObserver> waiter(
|
| + new FullscreenNotificationObserver());
|
| + chrome::ToggleFullscreenMode(browser());
|
| + waiter->Wait();
|
| + }
|
| + {
|
| + scoped_ptr<FullscreenNotificationObserver> waiter(
|
| + new FullscreenNotificationObserver());
|
| + browser()->fullscreen_controller()->ToggleFullscreenModeForTab(
|
| + web_contents, true);
|
| + waiter->Wait();
|
| + }
|
| EXPECT_TRUE(immersive_mode_controller->IsEnabled());
|
|
|
| // An immersive reveal shows the buttons and the top of the frame.
|
| @@ -163,15 +177,21 @@ IN_PROC_BROWSER_TEST_F(BrowserNonClientFrameViewAshTest, ImmersiveFullscreen) {
|
| EXPECT_TRUE(frame_view->UseShortHeader());
|
| EXPECT_FALSE(frame_view->UseImmersiveLightbarHeaderStyle());
|
|
|
| - // End the reveal. As the header does not paint a light bar when the
|
| - // top-of-window views are not revealed, nothing should be painted.
|
| + // End the reveal. When in both immersive browser fullscreen and tab
|
| + // fullscreen, the tab lightbars should not be painted.
|
| immersive_mode_controller->SetMouseHoveredForTest(false);
|
| EXPECT_FALSE(immersive_mode_controller->IsRevealed());
|
| EXPECT_FALSE(frame_view->ShouldPaint());
|
|
|
| - // Repeat test but with the tab light bar visible when the top-of-window views
|
| - // are not revealed.
|
| - immersive_mode_controller->SetForceHideTabIndicatorsForTest(false);
|
| + // Repeat test but without tab fullscreen. The tab lightbars should now show
|
| + // when the top-of-window views are not revealed.
|
| + {
|
| + scoped_ptr<FullscreenNotificationObserver> waiter(
|
| + new FullscreenNotificationObserver());
|
| + browser()->fullscreen_controller()->ToggleFullscreenModeForTab(
|
| + web_contents, false);
|
| + waiter->Wait();
|
| + }
|
|
|
| // Immersive reveal should have same behavior as before.
|
| immersive_mode_controller->StartRevealForTest(true);
|
| @@ -190,7 +210,12 @@ IN_PROC_BROWSER_TEST_F(BrowserNonClientFrameViewAshTest, ImmersiveFullscreen) {
|
| EXPECT_TRUE(frame_view->UseImmersiveLightbarHeaderStyle());
|
|
|
| // Exiting fullscreen exits immersive mode.
|
| - browser_view->ExitFullscreen();
|
| + {
|
| + scoped_ptr<FullscreenNotificationObserver> waiter(
|
| + new FullscreenNotificationObserver());
|
| + browser_view->ExitFullscreen();
|
| + waiter->Wait();
|
| + }
|
| EXPECT_FALSE(immersive_mode_controller->IsEnabled());
|
|
|
| // Exiting immersive mode makes controls and frame visible again.
|
|
|