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

Side by Side Diff: chrome/browser/ui/ash/chrome_shell_delegate_browsertest.cc

Issue 17515005: Do not put v1 app windows or popup windows into immersive fullscreen (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Removed maximize behavior for task manager to be consistent with how F11 works on other platforms Created 7 years, 6 months 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/ui/ash/chrome_shell_delegate.h" 5 #include "chrome/browser/ui/ash/chrome_shell_delegate.h"
6 6
7 #include "ash/ash_switches.h" 7 #include "ash/ash_switches.h"
8 #include "ash/shell.h" 8 #include "ash/shell.h"
9 #include "ash/shell_delegate.h" 9 #include "ash/shell_delegate.h"
10 #include "ash/wm/window_properties.h"
10 #include "ash/wm/window_util.h" 11 #include "ash/wm/window_util.h"
11 #include "base/command_line.h" 12 #include "base/command_line.h"
13 #include "chrome/browser/extensions/platform_app_browsertest_util.h"
12 #include "chrome/browser/ui/browser.h" 14 #include "chrome/browser/ui/browser.h"
13 #include "chrome/browser/ui/browser_commands.h" 15 #include "chrome/browser/ui/browser_commands.h"
14 #include "chrome/browser/ui/browser_finder.h" 16 #include "chrome/browser/ui/browser_finder.h"
17 #include "chrome/browser/ui/browser_window.h"
18 #include "chrome/browser/ui/extensions/native_app_window.h"
15 #include "chrome/browser/ui/immersive_fullscreen_configuration.h" 19 #include "chrome/browser/ui/immersive_fullscreen_configuration.h"
16 #include "chrome/test/base/in_process_browser_test.h" 20 #include "chrome/test/base/in_process_browser_test.h"
21 #include "ui/aura/client/aura_constants.h"
22
23 namespace {
24
25 // Returns true if |window| is in immersive fullscreen. Infer whether |window|
26 // is in immersive fullscreen based on whether kFullscreenUsesMinimalChromeKey
27 // is set for |window| because DEPS does not allow the test to use BrowserView.
28 // (This is not quite right because if a window is in both immersive browser
29 // fullscreen and in tab fullscreen, kFullScreenUsesMinimalChromeKey will
30 // not be set).
31 bool IsInImmersiveFullscreen(BrowserWindow* browser_window) {
32 return browser_window->IsFullscreen() &&
33 browser_window->GetNativeWindow()->GetProperty(
34 ash::internal::kFullscreenUsesMinimalChromeKey);
35 }
36
37 } // namespace
17 38
18 typedef InProcessBrowserTest ChromeShellDelegateBrowserTest; 39 typedef InProcessBrowserTest ChromeShellDelegateBrowserTest;
19 40
20 // Confirm that toggling window miximized works properly 41 // Confirm that toggling window miximized works properly
21 IN_PROC_BROWSER_TEST_F(ChromeShellDelegateBrowserTest, ToggleMaximized) { 42 IN_PROC_BROWSER_TEST_F(ChromeShellDelegateBrowserTest, ToggleMaximized) {
22 ash::ShellDelegate* shell_delegate = ash::Shell::GetInstance()->delegate(); 43 ash::ShellDelegate* shell_delegate = ash::Shell::GetInstance()->delegate();
23 ASSERT_TRUE(shell_delegate); 44 ASSERT_TRUE(shell_delegate);
24 aura::Window* window = ash::wm::GetActiveWindow(); 45 aura::Window* window = ash::wm::GetActiveWindow();
25 ASSERT_TRUE(window); 46 ASSERT_TRUE(window);
26 47
27 if (ImmersiveFullscreenConfiguration::UseImmersiveFullscreen()) {
28 // "ToggleMaximized" toggles immersive fullscreen.
29 EXPECT_FALSE(ash::wm::IsWindowMaximized(window));
30 EXPECT_FALSE(ash::wm::IsWindowFullscreen(window));
31 shell_delegate->ToggleMaximized();
32 EXPECT_TRUE(ash::wm::IsWindowFullscreen(window));
33 shell_delegate->ToggleMaximized();
34 EXPECT_FALSE(ash::wm::IsWindowFullscreen(window));
35 return;
36 }
37
38 // When not in fullscreen, ShellDelegate::ToggleMaximized toggles Maximized. 48 // When not in fullscreen, ShellDelegate::ToggleMaximized toggles Maximized.
39 EXPECT_FALSE(ash::wm::IsWindowMaximized(window)); 49 EXPECT_FALSE(ash::wm::IsWindowMaximized(window));
40 shell_delegate->ToggleMaximized(); 50 shell_delegate->ToggleMaximized();
41 EXPECT_TRUE(ash::wm::IsWindowMaximized(window)); 51 EXPECT_TRUE(ash::wm::IsWindowMaximized(window));
42 shell_delegate->ToggleMaximized(); 52 shell_delegate->ToggleMaximized();
43 EXPECT_FALSE(ash::wm::IsWindowMaximized(window)); 53 EXPECT_FALSE(ash::wm::IsWindowMaximized(window));
44 54
45 // When in fullscreen ShellDelegate::ToggleMaximized gets out of fullscreen. 55 // When in fullscreen ShellDelegate::ToggleMaximized gets out of fullscreen.
46 EXPECT_FALSE(ash::wm::IsWindowFullscreen(window)); 56 EXPECT_FALSE(ash::wm::IsWindowFullscreen(window));
47 Browser* browser = chrome::FindBrowserWithWindow(window); 57 Browser* browser = chrome::FindBrowserWithWindow(window);
48 ASSERT_TRUE(browser); 58 ASSERT_TRUE(browser);
49 chrome::ToggleFullscreenMode(browser); 59 chrome::ToggleFullscreenMode(browser);
50 EXPECT_TRUE(ash::wm::IsWindowFullscreen(window)); 60 EXPECT_TRUE(ash::wm::IsWindowFullscreen(window));
51 shell_delegate->ToggleMaximized(); 61 shell_delegate->ToggleMaximized();
52 EXPECT_FALSE(ash::wm::IsWindowFullscreen(window)); 62 EXPECT_FALSE(ash::wm::IsWindowFullscreen(window));
53 EXPECT_FALSE(ash::wm::IsWindowMaximized(window)); 63 EXPECT_FALSE(ash::wm::IsWindowMaximized(window));
54 shell_delegate->ToggleMaximized(); 64 shell_delegate->ToggleMaximized();
55 EXPECT_FALSE(ash::wm::IsWindowFullscreen(window)); 65 EXPECT_FALSE(ash::wm::IsWindowFullscreen(window));
56 EXPECT_TRUE(ash::wm::IsWindowMaximized(window)); 66 EXPECT_TRUE(ash::wm::IsWindowMaximized(window));
57 } 67 }
68
69 // Confirm that toggling window fullscren works properly.
70 IN_PROC_BROWSER_TEST_F(ChromeShellDelegateBrowserTest, ToggleFullscreen) {
71 ash::ShellDelegate* shell_delegate = ash::Shell::GetInstance()->delegate();
72 ASSERT_TRUE(shell_delegate);
73
74 // 1) ToggleFullscreen() should toggle whether a tabbed browser window is in
75 // immersive fullscreen.
76 ASSERT_TRUE(browser()->is_type_tabbed());
77 BrowserWindow* browser_window = browser()->window();
78 ASSERT_TRUE(browser_window->IsActive());
79 EXPECT_FALSE(browser_window->IsMaximized());
80 EXPECT_FALSE(browser_window->IsFullscreen());
81
82 shell_delegate->ToggleFullscreen();
83 EXPECT_TRUE(browser_window->IsFullscreen());
84 EXPECT_EQ(IsInImmersiveFullscreen(browser_window),
85 ImmersiveFullscreenConfiguration::UseImmersiveFullscreen());
86
87 shell_delegate->ToggleFullscreen();
88 EXPECT_FALSE(browser_window->IsMaximized());
89 EXPECT_FALSE(browser_window->IsFullscreen());
90
91 // 2) ToggleFullscreen() should have no effect on windows which cannot be
92 // maximized.
93 browser_window->GetNativeWindow()->SetProperty(aura::client::kCanMaximizeKey,
94 false);
95 shell_delegate->ToggleFullscreen();
96 EXPECT_FALSE(browser_window->IsMaximized());
97 EXPECT_FALSE(browser_window->IsFullscreen());
98
99 // 3) ToggleFullscreen() should maximize v1 app browser windows which use
100 // AppNonClientFrameViewAsh.
101 // TODO(pkotwicz): Figure out if we actually want this behavior.
102 Browser::CreateParams browser_create_params(Browser::TYPE_POPUP,
103 browser()->profile(), chrome::HOST_DESKTOP_TYPE_NATIVE);
104 #if defined(OS_WIN)
105 browser_create_params.host_desktop_type = chrome::HOST_DESKTOP_TYPE_ASH;
106 #endif // OS_WIN
107 browser_create_params.app_name = "Test";
108 browser_create_params.app_type = Browser::APP_TYPE_HOST;
109
110 Browser* app_host_browser = new Browser(browser_create_params);
111 ASSERT_TRUE(app_host_browser->is_app());
112 AddBlankTabAndShow(app_host_browser);
113 browser_window = app_host_browser->window();
114 ASSERT_TRUE(browser_window->IsActive());
115 EXPECT_FALSE(browser_window->IsMaximized());
116 EXPECT_FALSE(browser_window->IsFullscreen());
117
118 shell_delegate->ToggleFullscreen();
119 EXPECT_TRUE(browser_window->IsMaximized());
120
121 shell_delegate->ToggleFullscreen();
122 EXPECT_FALSE(browser_window->IsMaximized());
123 EXPECT_FALSE(browser_window->IsFullscreen());
124
125 // 4) ToggleFullscreen() should put child windows of v1 apps into
126 // non-immersive fullscreen.
127 browser_create_params.host_desktop_type = chrome::HOST_DESKTOP_TYPE_NATIVE;
128 browser_create_params.app_type = Browser::APP_TYPE_CHILD;
129 Browser* app_child_browser = new Browser(browser_create_params);
130 ASSERT_TRUE(app_child_browser->is_app());
131 AddBlankTabAndShow(app_child_browser);
132 browser_window = app_child_browser->window();
133 ASSERT_TRUE(browser_window->IsActive());
134 EXPECT_FALSE(browser_window->IsMaximized());
135 EXPECT_FALSE(browser_window->IsFullscreen());
136
137 shell_delegate->ToggleFullscreen();
138 EXPECT_TRUE(browser_window->IsFullscreen());
139 EXPECT_FALSE(IsInImmersiveFullscreen(browser_window));
140
141 shell_delegate->ToggleFullscreen();
142 EXPECT_FALSE(browser_window->IsMaximized());
143 EXPECT_FALSE(browser_window->IsFullscreen());
144
145 // 5) ToggleFullscreen() should put popup browser windows into non-immersive
146 // fullscreen.
147 browser_create_params.app_name = "";
148 Browser* popup_browser = new Browser(browser_create_params);
149 ASSERT_TRUE(popup_browser->is_type_popup());
150 ASSERT_FALSE(popup_browser->is_app());
151 AddBlankTabAndShow(popup_browser);
152 browser_window = popup_browser->window();
153 ASSERT_TRUE(browser_window->IsActive());
154 EXPECT_FALSE(browser_window->IsMaximized());
155 EXPECT_FALSE(browser_window->IsFullscreen());
156
157 shell_delegate->ToggleFullscreen();
158 EXPECT_TRUE(browser_window->IsFullscreen());
159 EXPECT_FALSE(IsInImmersiveFullscreen(browser_window));
160
161 shell_delegate->ToggleFullscreen();
162 EXPECT_FALSE(browser_window->IsMaximized());
163 EXPECT_FALSE(browser_window->IsFullscreen());
164 }
165
166 typedef extensions::PlatformAppBrowserTest
167 ChromeShellDelegatePlatformAppBrowserTest;
168
169 // Test that ToggleFullscreen() toggles the platform app's fullscreen state.
170 IN_PROC_BROWSER_TEST_F(ChromeShellDelegatePlatformAppBrowserTest,
171 ToggleFullscreenPlatformApp) {
172 ash::ShellDelegate* shell_delegate = ash::Shell::GetInstance()->delegate();
173 ASSERT_TRUE(shell_delegate);
174
175 const extensions::Extension* extension = LoadAndLaunchPlatformApp("minimal");
176 ShellWindow* shell_window = CreateShellWindow(extension);
177 NativeAppWindow* app_window = shell_window->GetBaseWindow();
178 ASSERT_TRUE(shell_window->GetBaseWindow()->IsActive());
179 EXPECT_FALSE(app_window->IsMaximized());
180 EXPECT_FALSE(app_window->IsFullscreen());
181
182 shell_delegate->ToggleFullscreen();
183 EXPECT_TRUE(app_window->IsFullscreen());
184
185 shell_delegate->ToggleFullscreen();
186 EXPECT_FALSE(app_window->IsMaximized());
187 EXPECT_FALSE(app_window->IsFullscreen());
188
189 CloseShellWindow(shell_window);
190 }
OLDNEW
« no previous file with comments | « chrome/browser/ui/ash/chrome_shell_delegate.cc ('k') | chrome/browser/ui/views/frame/browser_view.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698