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

Unified Diff: chrome/browser/ui/ash/accelerator_commands_browsertest.cc

Issue 83343006: Enable immersive fullscreen for hosted apps part 2 (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 1 month 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
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.
}

Powered by Google App Engine
This is Rietveld 408576698