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 4d3b3d93326594a091a914a22869ade160320901..da5b29f100a943ad79bfd172ea58234e3e66e921 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 |
@@ -7,8 +7,10 @@ |
#include "ash/ash_constants.h" |
#include "chrome/browser/ui/browser.h" |
#include "chrome/browser/ui/views/frame/browser_view.h" |
+#include "chrome/browser/ui/views/immersive_mode_controller.h" |
#include "chrome/test/base/in_process_browser_test.h" |
#include "ui/base/hit_test.h" |
+#include "ui/views/controls/button/image_button.h" |
#include "ui/views/widget/widget.h" |
using views::Widget; |
@@ -17,7 +19,8 @@ typedef InProcessBrowserTest BrowserNonClientFrameViewAshTest; |
IN_PROC_BROWSER_TEST_F(BrowserNonClientFrameViewAshTest, WindowHeader) { |
// We know we're using Views, so static cast. |
- Widget* widget = static_cast<BrowserView*>(browser()->window())->GetWidget(); |
+ BrowserView* browser_view = static_cast<BrowserView*>(browser()->window()); |
+ Widget* widget = browser_view->GetWidget(); |
// We know we're using Ash, so static cast. |
BrowserNonClientFrameViewAsh* frame_view = |
static_cast<BrowserNonClientFrameViewAsh*>( |
@@ -69,3 +72,44 @@ IN_PROC_BROWSER_TEST_F(BrowserNonClientFrameViewAshTest, WindowHeader) { |
app_widget->SetBounds(gfx::Rect(15, 15, 250, 250)); |
EXPECT_FALSE(app_frame_view->UseShortHeader()); |
} |
+ |
+IN_PROC_BROWSER_TEST_F(BrowserNonClientFrameViewAshTest, ImmersiveMode) { |
+ // We know we're using Views, so static cast. |
+ BrowserView* browser_view = static_cast<BrowserView*>(browser()->window()); |
+ Widget* widget = browser_view->GetWidget(); |
+ // We know we're using Ash, so static cast. |
+ BrowserNonClientFrameViewAsh* frame_view = |
+ static_cast<BrowserNonClientFrameViewAsh*>( |
+ widget->non_client_view()->frame_view()); |
+ |
+ // Normal window does not have immersive mode button. |
+ EXPECT_FALSE(frame_view->immersive_button_->visible()); |
+ |
+ // Maximized window shows immersive mode button. |
+ widget->Maximize(); |
+ EXPECT_TRUE(frame_view->immersive_button_->visible()); |
+ |
+ // Entering immersive mode hides the caption buttons. |
+ browser_view->immersive_mode_controller()->SetEnabled(true); |
+ EXPECT_FALSE(frame_view->immersive_button_->visible()); |
+ EXPECT_FALSE(frame_view->size_button_->visible()); |
+ EXPECT_FALSE(frame_view->close_button_->visible()); |
+ |
+ // An immersive reveal shows the buttons. |
+ browser_view->immersive_mode_controller()->StartRevealForTest(); |
+ EXPECT_TRUE(frame_view->immersive_button_->visible()); |
+ EXPECT_TRUE(frame_view->size_button_->visible()); |
+ EXPECT_TRUE(frame_view->close_button_->visible()); |
+ |
+ // Ending reveal hides them again. |
+ browser_view->immersive_mode_controller()->CancelReveal(); |
+ EXPECT_FALSE(frame_view->immersive_button_->visible()); |
+ EXPECT_FALSE(frame_view->size_button_->visible()); |
+ EXPECT_FALSE(frame_view->close_button_->visible()); |
+ |
+ // Exiting immersive mode makes them visible again. |
+ browser_view->immersive_mode_controller()->SetEnabled(false); |
+ EXPECT_TRUE(frame_view->immersive_button_->visible()); |
+ EXPECT_TRUE(frame_view->size_button_->visible()); |
+ EXPECT_TRUE(frame_view->close_button_->visible()); |
+} |