Index: chrome/browser/ui/ash/accelerator_commands_browsertest.cc |
diff --git a/chrome/browser/ui/ash/accelerator_commands_browsertest.cc b/chrome/browser/ui/ash/accelerator_commands_browsertest.cc |
index 704fc2fc19b7cd7dd6a70671cd6fb07d76ee1008..6c5bc03e72e098c0e1cf696d8fdc8065966fabbf 100644 |
--- a/chrome/browser/ui/ash/accelerator_commands_browsertest.cc |
+++ b/chrome/browser/ui/ash/accelerator_commands_browsertest.cc |
@@ -6,6 +6,7 @@ |
#include "apps/shell_window.h" |
#include "apps/ui/native_app_window.h" |
+#include "ash/ash_switches.h" |
#include "ash/shell.h" |
#include "ash/wm/window_state.h" |
#include "base/command_line.h" |
@@ -21,12 +22,10 @@ namespace { |
// Returns true if |window| is in immersive fullscreen. Infer whether |window| |
// is in immersive fullscreen based on whether the shelf is hidden when |
-// |window| is fullscreen because DEPS does not allow the test to use |
-// BrowserView. (This is not quite right because the shelf is hidden if a window |
-// is in both immersive fullscreen and tab fullscreen.) |
-bool IsInImmersiveFullscreen(BrowserWindow* browser_window) { |
- ash::wm::WindowState* window_state = ash::wm::GetWindowState( |
- browser_window->GetNativeWindow()); |
+// |window| is fullscreen. (This is not quite right because the shelf is hidden |
+// if a window is in both immersive fullscreen and tab fullscreen.) |
+bool IsInImmersiveFullscreen(aura::Window* window) { |
+ ash::wm::WindowState* window_state = ash::wm::GetWindowState(window); |
return window_state->IsFullscreen() && |
!window_state->hide_shelf_when_fullscreen(); |
} |
@@ -64,21 +63,22 @@ IN_PROC_BROWSER_TEST_F(AcceleratorCommandsBrowserTest, ToggleMaximized) { |
// Confirm that toggling window fullscren works properly. |
IN_PROC_BROWSER_TEST_F(AcceleratorCommandsBrowserTest, ToggleFullscreen) { |
+ bool put_all_windows_in_immersive = CommandLine::ForCurrentProcess()-> |
+ HasSwitch(ash::switches::kAshEnableImmersiveFullscreenForAllWindows); |
+ |
ASSERT_TRUE(ash::Shell::HasInstance()) << "No Instance"; |
- // 1) ToggleFullscreen() should toggle whether a tabbed browser window is in |
- // immersive fullscreen. |
+ // 1) ToggleFullscreen() should always toggle whether a tabbed browser window |
+ // is in immersive fullscreen. |
ASSERT_TRUE(browser()->is_type_tabbed()); |
BrowserWindow* browser_window = browser()->window(); |
ASSERT_TRUE(browser_window->IsActive()); |
- EXPECT_FALSE(browser_window->IsMaximized()); |
EXPECT_FALSE(browser_window->IsFullscreen()); |
ash::accelerators::ToggleFullscreen(); |
EXPECT_TRUE(browser_window->IsFullscreen()); |
- EXPECT_TRUE(IsInImmersiveFullscreen(browser_window)); |
+ EXPECT_TRUE(IsInImmersiveFullscreen(browser_window->GetNativeWindow())); |
ash::accelerators::ToggleFullscreen(); |
- EXPECT_FALSE(browser_window->IsMaximized()); |
EXPECT_FALSE(browser_window->IsFullscreen()); |
// 2) ToggleFullscreen() should have no effect on windows which cannot be |
@@ -86,10 +86,10 @@ IN_PROC_BROWSER_TEST_F(AcceleratorCommandsBrowserTest, ToggleFullscreen) { |
browser_window->GetNativeWindow()->SetProperty(aura::client::kCanMaximizeKey, |
false); |
ash::accelerators::ToggleFullscreen(); |
- EXPECT_FALSE(browser_window->IsMaximized()); |
EXPECT_FALSE(browser_window->IsFullscreen()); |
- // 3) ToggleFullscreen() should put v1 apps into non-immersive fullscreen. |
+ // 3) ToggleFullscreen() should put v1 apps into immersive fullscreen only if |
+ // the kAshEnableImmersiveFullscreenForAllWindows command line flag is set. |
Browser::CreateParams browser_create_params(Browser::TYPE_POPUP, |
browser()->profile(), chrome::HOST_DESKTOP_TYPE_NATIVE); |
#if defined(OS_WIN) |
@@ -102,19 +102,19 @@ IN_PROC_BROWSER_TEST_F(AcceleratorCommandsBrowserTest, ToggleFullscreen) { |
AddBlankTabAndShow(app_host_browser); |
browser_window = app_host_browser->window(); |
ASSERT_TRUE(browser_window->IsActive()); |
- EXPECT_FALSE(browser_window->IsMaximized()); |
EXPECT_FALSE(browser_window->IsFullscreen()); |
ash::accelerators::ToggleFullscreen(); |
EXPECT_TRUE(browser_window->IsFullscreen()); |
- EXPECT_FALSE(IsInImmersiveFullscreen(browser_window)); |
+ EXPECT_EQ(put_all_windows_in_immersive, |
+ IsInImmersiveFullscreen(browser_window->GetNativeWindow())); |
ash::accelerators::ToggleFullscreen(); |
- EXPECT_FALSE(browser_window->IsMaximized()); |
EXPECT_FALSE(browser_window->IsFullscreen()); |
- // 4) ToggleFullscreen() should put popup browser windows into non-immersive |
- // fullscreen. |
+ // 4) ToggleFullscreen() should put popup browser windows into immersive |
+ // fullscreen only if the kAshEnableImmersiveFullscreenForAllWindows command |
+ // line flag is set. |
browser_create_params.app_name = ""; |
Browser* popup_browser = new Browser(browser_create_params); |
ASSERT_TRUE(popup_browser->is_type_popup()); |
@@ -122,38 +122,70 @@ IN_PROC_BROWSER_TEST_F(AcceleratorCommandsBrowserTest, ToggleFullscreen) { |
AddBlankTabAndShow(popup_browser); |
browser_window = popup_browser->window(); |
ASSERT_TRUE(browser_window->IsActive()); |
- EXPECT_FALSE(browser_window->IsMaximized()); |
EXPECT_FALSE(browser_window->IsFullscreen()); |
ash::accelerators::ToggleFullscreen(); |
EXPECT_TRUE(browser_window->IsFullscreen()); |
- EXPECT_FALSE(IsInImmersiveFullscreen(browser_window)); |
+ EXPECT_EQ(put_all_windows_in_immersive, |
+ IsInImmersiveFullscreen(browser_window->GetNativeWindow())); |
ash::accelerators::ToggleFullscreen(); |
- EXPECT_FALSE(browser_window->IsMaximized()); |
EXPECT_FALSE(browser_window->IsFullscreen()); |
} |
typedef extensions::PlatformAppBrowserTest |
AcceleratorCommandsPlatformAppBrowserTest; |
-// Test that ToggleFullscreen() toggles the platform app's fullscreen state. |
+// Test the behavior of platform apps when ToggleFullscreen() is called. |
IN_PROC_BROWSER_TEST_F(AcceleratorCommandsPlatformAppBrowserTest, |
ToggleFullscreenPlatformApp) { |
ASSERT_TRUE(ash::Shell::HasInstance()) << "No Instance"; |
const extensions::Extension* extension = LoadAndLaunchPlatformApp("minimal"); |
- apps::ShellWindow* shell_window = CreateShellWindow(extension); |
- apps::NativeAppWindow* app_window = shell_window->GetBaseWindow(); |
- ASSERT_TRUE(shell_window->GetBaseWindow()->IsActive()); |
- EXPECT_FALSE(app_window->IsMaximized()); |
- EXPECT_FALSE(app_window->IsFullscreen()); |
- |
- ash::accelerators::ToggleFullscreen(); |
- EXPECT_TRUE(app_window->IsFullscreen()); |
- |
- ash::accelerators::ToggleFullscreen(); |
- EXPECT_FALSE(app_window->IsMaximized()); |
- EXPECT_FALSE(app_window->IsFullscreen()); |
- CloseShellWindow(shell_window); |
+ { |
+ // Test that ToggleFullscreen() toggles a platform's app's fullscreen |
+ // state and that it additonally puts the app into immersive fullscreen |
+ // if the kAshEnableImmersiveFullscreenForAllWindows command line flag |
+ // is set. |
+ bool put_all_windows_in_immersive = CommandLine::ForCurrentProcess()-> |
+ HasSwitch(ash::switches::kAshEnableImmersiveFullscreenForAllWindows); |
+ apps::ShellWindow::CreateParams params; |
+ params.frame = apps::ShellWindow::FRAME_CHROME; |
+ apps::ShellWindow* shell_window = CreateShellWindowFromParams( |
+ extension, params); |
+ apps::NativeAppWindow* app_window = shell_window->GetBaseWindow(); |
+ ASSERT_TRUE(shell_window->GetBaseWindow()->IsActive()); |
+ EXPECT_FALSE(app_window->IsFullscreen()); |
+ |
+ ash::accelerators::ToggleFullscreen(); |
+ EXPECT_TRUE(app_window->IsFullscreen()); |
+ EXPECT_EQ(put_all_windows_in_immersive, |
+ IsInImmersiveFullscreen(app_window->GetNativeWindow())); |
+ |
+ ash::accelerators::ToggleFullscreen(); |
+ EXPECT_FALSE(app_window->IsFullscreen()); |
+ |
+ CloseShellWindow(shell_window); |
+ } |
+ |
+ { |
+ // Repeat the test, but make sure that frameless platform apps are never put |
+ // into immersive fullscreen. |
+ apps::ShellWindow::CreateParams params; |
+ params.frame = apps::ShellWindow::FRAME_NONE; |
+ apps::ShellWindow* shell_window = CreateShellWindowFromParams( |
+ extension, params); |
+ apps::NativeAppWindow* app_window = shell_window->GetBaseWindow(); |
+ ASSERT_TRUE(shell_window->GetBaseWindow()->IsActive()); |
+ EXPECT_FALSE(app_window->IsFullscreen()); |
+ |
+ ash::accelerators::ToggleFullscreen(); |
+ EXPECT_TRUE(app_window->IsFullscreen()); |
+ EXPECT_FALSE(IsInImmersiveFullscreen(app_window->GetNativeWindow())); |
+ |
+ ash::accelerators::ToggleFullscreen(); |
+ EXPECT_FALSE(app_window->IsFullscreen()); |
+ |
+ CloseShellWindow(shell_window); |
+ } |
James Cook
2013/11/25 19:09:20
Nice test.
|
} |