15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/ash/chrome_shell_delegate.h"
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
72385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch#include "apps/native_app_window.h"
8eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "apps/shell_window.h"
92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ash/ash_switches.h"
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ash/shell.h"
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ash/shell_delegate.h"
12eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "ash/wm/window_properties.h"
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ash/wm/window_util.h"
142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/command_line.h"
15eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "chrome/browser/extensions/platform_app_browsertest_util.h"
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/browser.h"
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/browser_commands.h"
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/browser_finder.h"
19eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "chrome/browser/ui/browser_window.h"
2090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)#include "chrome/browser/ui/immersive_fullscreen_configuration.h"
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/test/base/in_process_browser_test.h"
22eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "ui/aura/client/aura_constants.h"
23eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
24eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochnamespace {
25eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
26eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// Returns true if |window| is in immersive fullscreen. Infer whether |window|
27eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// is in immersive fullscreen based on whether kFullscreenUsesMinimalChromeKey
28eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// is set for |window| because DEPS does not allow the test to use BrowserView.
29eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// (This is not quite right because if a window is in both immersive browser
30eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// fullscreen and in tab fullscreen, kFullScreenUsesMinimalChromeKey will
31eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// not be set).
32eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochbool IsInImmersiveFullscreen(BrowserWindow* browser_window) {
33eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  return browser_window->IsFullscreen() &&
34eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch      browser_window->GetNativeWindow()->GetProperty(
35eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch          ash::internal::kFullscreenUsesMinimalChromeKey);
36eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch}
37eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
38eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch}  // namespace
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef InProcessBrowserTest ChromeShellDelegateBrowserTest;
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Confirm that toggling window miximized works properly
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)IN_PROC_BROWSER_TEST_F(ChromeShellDelegateBrowserTest, ToggleMaximized) {
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ash::ShellDelegate* shell_delegate = ash::Shell::GetInstance()->delegate();
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_TRUE(shell_delegate);
462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  aura::Window* window = ash::wm::GetActiveWindow();
472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  ASSERT_TRUE(window);
482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // When not in fullscreen, ShellDelegate::ToggleMaximized toggles Maximized.
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_FALSE(ash::wm::IsWindowMaximized(window));
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  shell_delegate->ToggleMaximized();
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_TRUE(ash::wm::IsWindowMaximized(window));
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  shell_delegate->ToggleMaximized();
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_FALSE(ash::wm::IsWindowMaximized(window));
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // When in fullscreen ShellDelegate::ToggleMaximized gets out of fullscreen.
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_FALSE(ash::wm::IsWindowFullscreen(window));
582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  Browser* browser = chrome::FindBrowserWithWindow(window);
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ASSERT_TRUE(browser);
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  chrome::ToggleFullscreenMode(browser);
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_TRUE(ash::wm::IsWindowFullscreen(window));
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  shell_delegate->ToggleMaximized();
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_FALSE(ash::wm::IsWindowFullscreen(window));
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_FALSE(ash::wm::IsWindowMaximized(window));
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  shell_delegate->ToggleMaximized();
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_FALSE(ash::wm::IsWindowFullscreen(window));
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXPECT_TRUE(ash::wm::IsWindowMaximized(window));
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
69eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
70eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// Confirm that toggling window fullscren works properly.
71eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen MurdochIN_PROC_BROWSER_TEST_F(ChromeShellDelegateBrowserTest, ToggleFullscreen) {
72eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  ash::ShellDelegate* shell_delegate = ash::Shell::GetInstance()->delegate();
73eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  ASSERT_TRUE(shell_delegate);
74eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
75eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  // 1) ToggleFullscreen() should toggle whether a tabbed browser window is in
76eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  // immersive fullscreen.
77eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  ASSERT_TRUE(browser()->is_type_tabbed());
78eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  BrowserWindow* browser_window = browser()->window();
79eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  ASSERT_TRUE(browser_window->IsActive());
80eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  EXPECT_FALSE(browser_window->IsMaximized());
81eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  EXPECT_FALSE(browser_window->IsFullscreen());
82eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
83eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  shell_delegate->ToggleFullscreen();
84eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  EXPECT_TRUE(browser_window->IsFullscreen());
85eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  EXPECT_EQ(IsInImmersiveFullscreen(browser_window),
86eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch      ImmersiveFullscreenConfiguration::UseImmersiveFullscreen());
87eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
88eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  shell_delegate->ToggleFullscreen();
89eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  EXPECT_FALSE(browser_window->IsMaximized());
90eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  EXPECT_FALSE(browser_window->IsFullscreen());
91eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
92eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  // 2) ToggleFullscreen() should have no effect on windows which cannot be
93eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  // maximized.
94eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  browser_window->GetNativeWindow()->SetProperty(aura::client::kCanMaximizeKey,
95eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch                                                 false);
96eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  shell_delegate->ToggleFullscreen();
97eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  EXPECT_FALSE(browser_window->IsMaximized());
98eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  EXPECT_FALSE(browser_window->IsFullscreen());
99eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
100eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  // 3) ToggleFullscreen() should maximize v1 app browser windows which use
101eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  // AppNonClientFrameViewAsh.
102eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  // TODO(pkotwicz): Figure out if we actually want this behavior.
103eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  Browser::CreateParams browser_create_params(Browser::TYPE_POPUP,
104eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch      browser()->profile(), chrome::HOST_DESKTOP_TYPE_NATIVE);
105eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#if defined(OS_WIN)
106eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  browser_create_params.host_desktop_type = chrome::HOST_DESKTOP_TYPE_ASH;
107eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#endif  // OS_WIN
108eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  browser_create_params.app_name = "Test";
109eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  browser_create_params.app_type = Browser::APP_TYPE_HOST;
110eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
111eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  Browser* app_host_browser = new Browser(browser_create_params);
112eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  ASSERT_TRUE(app_host_browser->is_app());
113eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  AddBlankTabAndShow(app_host_browser);
114eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  browser_window = app_host_browser->window();
115eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  ASSERT_TRUE(browser_window->IsActive());
116eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  EXPECT_FALSE(browser_window->IsMaximized());
117eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  EXPECT_FALSE(browser_window->IsFullscreen());
118eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
119eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  shell_delegate->ToggleFullscreen();
120eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  EXPECT_TRUE(browser_window->IsMaximized());
121eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
122eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  shell_delegate->ToggleFullscreen();
123eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  EXPECT_FALSE(browser_window->IsMaximized());
124eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  EXPECT_FALSE(browser_window->IsFullscreen());
125eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
126eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  // 4) ToggleFullscreen() should put child windows of v1 apps into
127eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  // non-immersive fullscreen.
128eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  browser_create_params.host_desktop_type = chrome::HOST_DESKTOP_TYPE_NATIVE;
129eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  browser_create_params.app_type = Browser::APP_TYPE_CHILD;
130eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  Browser* app_child_browser = new Browser(browser_create_params);
131eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  ASSERT_TRUE(app_child_browser->is_app());
132eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  AddBlankTabAndShow(app_child_browser);
133eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  browser_window = app_child_browser->window();
134eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  ASSERT_TRUE(browser_window->IsActive());
135eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  EXPECT_FALSE(browser_window->IsMaximized());
136eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  EXPECT_FALSE(browser_window->IsFullscreen());
137eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
138eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  shell_delegate->ToggleFullscreen();
139eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  EXPECT_TRUE(browser_window->IsFullscreen());
140eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  EXPECT_FALSE(IsInImmersiveFullscreen(browser_window));
141eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
142eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  shell_delegate->ToggleFullscreen();
143eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  EXPECT_FALSE(browser_window->IsMaximized());
144eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  EXPECT_FALSE(browser_window->IsFullscreen());
145eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
146eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  // 5) ToggleFullscreen() should put popup browser windows into non-immersive
147eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  // fullscreen.
148eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  browser_create_params.app_name = "";
149eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  Browser* popup_browser = new Browser(browser_create_params);
150eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  ASSERT_TRUE(popup_browser->is_type_popup());
151eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  ASSERT_FALSE(popup_browser->is_app());
152eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  AddBlankTabAndShow(popup_browser);
153eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  browser_window = popup_browser->window();
154eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  ASSERT_TRUE(browser_window->IsActive());
155eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  EXPECT_FALSE(browser_window->IsMaximized());
156eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  EXPECT_FALSE(browser_window->IsFullscreen());
157eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
158eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  shell_delegate->ToggleFullscreen();
159eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  EXPECT_TRUE(browser_window->IsFullscreen());
160eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  EXPECT_FALSE(IsInImmersiveFullscreen(browser_window));
161eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
162eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  shell_delegate->ToggleFullscreen();
163eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  EXPECT_FALSE(browser_window->IsMaximized());
164eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  EXPECT_FALSE(browser_window->IsFullscreen());
165eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch}
166eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
167eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochtypedef extensions::PlatformAppBrowserTest
168eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch    ChromeShellDelegatePlatformAppBrowserTest;
169eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
170eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// Test that ToggleFullscreen() toggles the platform app's fullscreen state.
171eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen MurdochIN_PROC_BROWSER_TEST_F(ChromeShellDelegatePlatformAppBrowserTest,
172eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch                       ToggleFullscreenPlatformApp) {
173eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  ash::ShellDelegate* shell_delegate = ash::Shell::GetInstance()->delegate();
174eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  ASSERT_TRUE(shell_delegate);
175eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
176eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  const extensions::Extension* extension = LoadAndLaunchPlatformApp("minimal");
177eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  apps::ShellWindow* shell_window = CreateShellWindow(extension);
1782385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdoch  apps::NativeAppWindow* app_window = shell_window->GetBaseWindow();
179eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  ASSERT_TRUE(shell_window->GetBaseWindow()->IsActive());
180eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  EXPECT_FALSE(app_window->IsMaximized());
181eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  EXPECT_FALSE(app_window->IsFullscreen());
182eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
183eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  shell_delegate->ToggleFullscreen();
184eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  EXPECT_TRUE(app_window->IsFullscreen());
185eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
186eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  shell_delegate->ToggleFullscreen();
187eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  EXPECT_FALSE(app_window->IsMaximized());
188eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  EXPECT_FALSE(app_window->IsFullscreen());
189eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
190eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  CloseShellWindow(shell_window);
191eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch}
192