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