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

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

Issue 198413003: Enable immersive fullscreen on Windows Ash. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix issues from previous review comment. Created 6 years, 9 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 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 "ash/accelerators/accelerator_commands.h" 5 #include "ash/accelerators/accelerator_commands.h"
6 6
7 #include "apps/app_window.h" 7 #include "apps/app_window.h"
8 #include "apps/ui/native_app_window.h" 8 #include "apps/ui/native_app_window.h"
9 #include "ash/ash_switches.h" 9 #include "ash/ash_switches.h"
10 #include "ash/shell.h" 10 #include "ash/shell.h"
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
89 ash::accelerators::ToggleMaximized(); 89 ash::accelerators::ToggleMaximized();
90 EXPECT_FALSE(window_state->IsFullscreen()); 90 EXPECT_FALSE(window_state->IsFullscreen());
91 EXPECT_TRUE(window_state->IsMaximized()); 91 EXPECT_TRUE(window_state->IsMaximized());
92 } 92 }
93 93
94 class AcceleratorCommandsFullscreenBrowserTest 94 class AcceleratorCommandsFullscreenBrowserTest
95 : public WithParamInterface<ui::WindowShowState>, 95 : public WithParamInterface<ui::WindowShowState>,
96 public InProcessBrowserTest { 96 public InProcessBrowserTest {
97 public: 97 public:
98 AcceleratorCommandsFullscreenBrowserTest() 98 AcceleratorCommandsFullscreenBrowserTest()
99 #if defined(OS_CHROMEOS) 99 : initial_show_state_(GetParam()) {
100 : put_window_in_immersive_(true),
101 #else
102 : put_window_in_immersive_(false),
103 #endif
104 initial_show_state_(GetParam()) {
105 } 100 }
106 virtual ~AcceleratorCommandsFullscreenBrowserTest() { 101 virtual ~AcceleratorCommandsFullscreenBrowserTest() {
107 } 102 }
108 103
109 // Sets |window_state|'s show state to |initial_show_state_|. 104 // Sets |window_state|'s show state to |initial_show_state_|.
110 void SetToInitialShowState(ash::wm::WindowState* window_state) { 105 void SetToInitialShowState(ash::wm::WindowState* window_state) {
111 if (initial_show_state_ == ui::SHOW_STATE_MAXIMIZED) 106 if (initial_show_state_ == ui::SHOW_STATE_MAXIMIZED)
112 window_state->Maximize(); 107 window_state->Maximize();
113 else 108 else
114 window_state->Restore(); 109 window_state->Restore();
115 } 110 }
116 111
117 // Returns true if |window_state|'s show state is |initial_show_state_|. 112 // Returns true if |window_state|'s show state is |initial_show_state_|.
118 bool IsInitialShowState(const ash::wm::WindowState* window_state) const { 113 bool IsInitialShowState(const ash::wm::WindowState* window_state) const {
119 if (initial_show_state_ == ui::SHOW_STATE_MAXIMIZED) 114 if (initial_show_state_ == ui::SHOW_STATE_MAXIMIZED)
120 return window_state->IsMaximized(); 115 return window_state->IsMaximized();
121 else 116 else
122 return window_state->IsNormalStateType(); 117 return window_state->IsNormalStateType();
123 } 118 }
124 119
125 bool put_window_in_immersive() const {
126 return put_window_in_immersive_;
127 }
128
129 private: 120 private:
130 bool put_window_in_immersive_;
131 ui::WindowShowState initial_show_state_; 121 ui::WindowShowState initial_show_state_;
132 122
133 DISALLOW_COPY_AND_ASSIGN(AcceleratorCommandsFullscreenBrowserTest); 123 DISALLOW_COPY_AND_ASSIGN(AcceleratorCommandsFullscreenBrowserTest);
134 }; 124 };
135 125
136 // Test that toggling window fullscreen works properly. 126 // Test that toggling window fullscreen works properly.
137 IN_PROC_BROWSER_TEST_P(AcceleratorCommandsFullscreenBrowserTest, 127 IN_PROC_BROWSER_TEST_P(AcceleratorCommandsFullscreenBrowserTest,
138 ToggleFullscreen) { 128 ToggleFullscreen) {
139 #if defined(OS_WIN) 129 #if defined(OS_WIN)
140 // Run the test on Win Ash only. 130 // Run the test on Win Ash only.
141 if (!CommandLine::ForCurrentProcess()->HasSwitch(switches::kAshBrowserTests)) 131 if (!CommandLine::ForCurrentProcess()->HasSwitch(switches::kAshBrowserTests))
142 return; 132 return;
143 #endif 133 #endif
144 134
145 ASSERT_TRUE(ash::Shell::HasInstance()) << "No Instance"; 135 ASSERT_TRUE(ash::Shell::HasInstance()) << "No Instance";
146 136
147 // 1) Browser windows. 137 // 1) Browser windows.
148 ASSERT_TRUE(browser()->is_type_tabbed()); 138 ASSERT_TRUE(browser()->is_type_tabbed());
149 ash::wm::WindowState* window_state = 139 ash::wm::WindowState* window_state =
150 ash::wm::GetWindowState(browser()->window()->GetNativeWindow()); 140 ash::wm::GetWindowState(browser()->window()->GetNativeWindow());
151 ASSERT_TRUE(window_state->IsActive()); 141 ASSERT_TRUE(window_state->IsActive());
152 SetToInitialShowState(window_state); 142 SetToInitialShowState(window_state);
153 EXPECT_TRUE(IsInitialShowState(window_state)); 143 EXPECT_TRUE(IsInitialShowState(window_state));
154 144
155 ash::accelerators::ToggleFullscreen(); 145 ash::accelerators::ToggleFullscreen();
156 EXPECT_TRUE(window_state->IsFullscreen()); 146 EXPECT_TRUE(window_state->IsFullscreen());
157 EXPECT_EQ(put_window_in_immersive(), IsInImmersiveFullscreen(window_state)); 147 EXPECT_TRUE(IsInImmersiveFullscreen(window_state));
158 148
159 ash::accelerators::ToggleFullscreen(); 149 ash::accelerators::ToggleFullscreen();
160 EXPECT_TRUE(IsInitialShowState(window_state)); 150 EXPECT_TRUE(IsInitialShowState(window_state));
161 151
162 // 2) ToggleFullscreen() should have no effect on windows which cannot be 152 // 2) ToggleFullscreen() should have no effect on windows which cannot be
163 // maximized. 153 // maximized.
164 window_state->window()->SetProperty(aura::client::kCanMaximizeKey, false); 154 window_state->window()->SetProperty(aura::client::kCanMaximizeKey, false);
165 ash::accelerators::ToggleFullscreen(); 155 ash::accelerators::ToggleFullscreen();
166 EXPECT_TRUE(IsInitialShowState(window_state)); 156 EXPECT_TRUE(IsInitialShowState(window_state));
167 157
168 // 3) Hosted apps. 158 // 3) Hosted apps.
169 Browser::CreateParams browser_create_params(Browser::TYPE_POPUP, 159 Browser::CreateParams browser_create_params(Browser::TYPE_POPUP,
170 browser()->profile(), chrome::HOST_DESKTOP_TYPE_ASH); 160 browser()->profile(), chrome::HOST_DESKTOP_TYPE_ASH);
171 browser_create_params.app_name = "Test"; 161 browser_create_params.app_name = "Test";
172 162
173 Browser* app_host_browser = new Browser(browser_create_params); 163 Browser* app_host_browser = new Browser(browser_create_params);
174 ASSERT_TRUE(app_host_browser->is_app()); 164 ASSERT_TRUE(app_host_browser->is_app());
175 AddBlankTabAndShow(app_host_browser); 165 AddBlankTabAndShow(app_host_browser);
176 window_state = 166 window_state =
177 ash::wm::GetWindowState(app_host_browser->window()->GetNativeWindow()); 167 ash::wm::GetWindowState(app_host_browser->window()->GetNativeWindow());
178 ASSERT_TRUE(window_state->IsActive()); 168 ASSERT_TRUE(window_state->IsActive());
179 SetToInitialShowState(window_state); 169 SetToInitialShowState(window_state);
180 EXPECT_TRUE(IsInitialShowState(window_state)); 170 EXPECT_TRUE(IsInitialShowState(window_state));
181 171
182 ash::accelerators::ToggleFullscreen(); 172 ash::accelerators::ToggleFullscreen();
183 EXPECT_TRUE(window_state->IsFullscreen()); 173 EXPECT_TRUE(window_state->IsFullscreen());
184 EXPECT_EQ(put_window_in_immersive(), IsInImmersiveFullscreen(window_state)); 174 EXPECT_TRUE(IsInImmersiveFullscreen(window_state));
185 175
186 ash::accelerators::ToggleFullscreen(); 176 ash::accelerators::ToggleFullscreen();
187 EXPECT_TRUE(IsInitialShowState(window_state)); 177 EXPECT_TRUE(IsInitialShowState(window_state));
188 178
189 // 4) Popup browser windows. 179 // 4) Popup browser windows.
190 browser_create_params.app_name = ""; 180 browser_create_params.app_name = "";
191 Browser* popup_browser = new Browser(browser_create_params); 181 Browser* popup_browser = new Browser(browser_create_params);
192 ASSERT_TRUE(popup_browser->is_type_popup()); 182 ASSERT_TRUE(popup_browser->is_type_popup());
193 ASSERT_FALSE(popup_browser->is_app()); 183 ASSERT_FALSE(popup_browser->is_app());
194 AddBlankTabAndShow(popup_browser); 184 AddBlankTabAndShow(popup_browser);
195 window_state = 185 window_state =
196 ash::wm::GetWindowState(popup_browser->window()->GetNativeWindow()); 186 ash::wm::GetWindowState(popup_browser->window()->GetNativeWindow());
197 ASSERT_TRUE(window_state->IsActive()); 187 ASSERT_TRUE(window_state->IsActive());
198 SetToInitialShowState(window_state); 188 SetToInitialShowState(window_state);
199 EXPECT_TRUE(IsInitialShowState(window_state)); 189 EXPECT_TRUE(IsInitialShowState(window_state));
200 190
201 ash::accelerators::ToggleFullscreen(); 191 ash::accelerators::ToggleFullscreen();
202 EXPECT_TRUE(window_state->IsFullscreen()); 192 EXPECT_TRUE(window_state->IsFullscreen());
203 EXPECT_EQ(put_window_in_immersive(), IsInImmersiveFullscreen(window_state)); 193 EXPECT_TRUE(IsInImmersiveFullscreen(window_state));
204 194
205 ash::accelerators::ToggleFullscreen(); 195 ash::accelerators::ToggleFullscreen();
206 EXPECT_TRUE(IsInitialShowState(window_state)); 196 EXPECT_TRUE(IsInitialShowState(window_state));
207 197
208 // 5) Miscellaneous windows (e.g. task manager). 198 // 5) Miscellaneous windows (e.g. task manager).
209 views::Widget::InitParams params; 199 views::Widget::InitParams params;
210 params.delegate = new MaximizableWidgetDelegate(); 200 params.delegate = new MaximizableWidgetDelegate();
211 params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET; 201 params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
212 scoped_ptr<views::Widget> widget(new views::Widget); 202 scoped_ptr<views::Widget> widget(new views::Widget);
213 widget->Init(params); 203 widget->Init(params);
214 widget->Show(); 204 widget->Show();
215 205
216 window_state = ash::wm::GetWindowState(widget->GetNativeWindow()); 206 window_state = ash::wm::GetWindowState(widget->GetNativeWindow());
217 ASSERT_TRUE(window_state->IsActive()); 207 ASSERT_TRUE(window_state->IsActive());
218 SetToInitialShowState(window_state); 208 SetToInitialShowState(window_state);
219 EXPECT_TRUE(IsInitialShowState(window_state)); 209 EXPECT_TRUE(IsInitialShowState(window_state));
220 210
221 ash::accelerators::ToggleFullscreen(); 211 ash::accelerators::ToggleFullscreen();
222 EXPECT_TRUE(window_state->IsFullscreen()); 212 EXPECT_TRUE(window_state->IsFullscreen());
223 EXPECT_EQ(put_window_in_immersive(), IsInImmersiveFullscreen(window_state)); 213 EXPECT_TRUE(IsInImmersiveFullscreen(window_state));
224 214
225 // TODO(pkotwicz|oshima): Make toggling fullscreen restore the window to its 215 // TODO(pkotwicz|oshima): Make toggling fullscreen restore the window to its
226 // show state prior to entering fullscreen. 216 // show state prior to entering fullscreen.
227 ash::accelerators::ToggleFullscreen(); 217 ash::accelerators::ToggleFullscreen();
228 EXPECT_FALSE(window_state->IsFullscreen()); 218 EXPECT_FALSE(window_state->IsFullscreen());
229 } 219 }
230 220
231 INSTANTIATE_TEST_CASE_P(InitiallyRestored, 221 INSTANTIATE_TEST_CASE_P(InitiallyRestored,
232 AcceleratorCommandsFullscreenBrowserTest, 222 AcceleratorCommandsFullscreenBrowserTest,
233 Values(ui::SHOW_STATE_NORMAL)); 223 Values(ui::SHOW_STATE_NORMAL));
234 INSTANTIATE_TEST_CASE_P(InitiallyMaximized, 224 INSTANTIATE_TEST_CASE_P(InitiallyMaximized,
235 AcceleratorCommandsFullscreenBrowserTest, 225 AcceleratorCommandsFullscreenBrowserTest,
236 Values(ui::SHOW_STATE_MAXIMIZED)); 226 Values(ui::SHOW_STATE_MAXIMIZED));
237 227
238 class AcceleratorCommandsPlatformAppFullscreenBrowserTest 228 class AcceleratorCommandsPlatformAppFullscreenBrowserTest
239 : public WithParamInterface<ui::WindowShowState>, 229 : public WithParamInterface<ui::WindowShowState>,
240 public extensions::PlatformAppBrowserTest { 230 public extensions::PlatformAppBrowserTest {
241 public: 231 public:
242 AcceleratorCommandsPlatformAppFullscreenBrowserTest() 232 AcceleratorCommandsPlatformAppFullscreenBrowserTest()
243 #if defined(OS_CHROMEOS) 233 : initial_show_state_(GetParam()) {
244 : put_window_in_immersive_(true),
245 #else
246 : put_window_in_immersive_(false),
247 #endif
248 initial_show_state_(GetParam()) {
249 } 234 }
250 virtual ~AcceleratorCommandsPlatformAppFullscreenBrowserTest() { 235 virtual ~AcceleratorCommandsPlatformAppFullscreenBrowserTest() {
251 } 236 }
252 237
253 // Sets |app_window|'s show state to |initial_show_state_|. 238 // Sets |app_window|'s show state to |initial_show_state_|.
254 void SetToInitialShowState(apps::AppWindow* app_window) { 239 void SetToInitialShowState(apps::AppWindow* app_window) {
255 if (initial_show_state_ == ui::SHOW_STATE_MAXIMIZED) 240 if (initial_show_state_ == ui::SHOW_STATE_MAXIMIZED)
256 app_window->Maximize(); 241 app_window->Maximize();
257 else 242 else
258 app_window->Restore(); 243 app_window->Restore();
259 } 244 }
260 245
261 // Returns true if |app_window|'s show state is |initial_show_state_|. 246 // Returns true if |app_window|'s show state is |initial_show_state_|.
262 bool IsInitialShowState(apps::AppWindow* app_window) const { 247 bool IsInitialShowState(apps::AppWindow* app_window) const {
263 if (initial_show_state_ == ui::SHOW_STATE_MAXIMIZED) 248 if (initial_show_state_ == ui::SHOW_STATE_MAXIMIZED)
264 return app_window->GetBaseWindow()->IsMaximized(); 249 return app_window->GetBaseWindow()->IsMaximized();
265 else 250 else
266 return ui::BaseWindow::IsRestored(*app_window->GetBaseWindow()); 251 return ui::BaseWindow::IsRestored(*app_window->GetBaseWindow());
267 } 252 }
268 253
269 bool put_window_in_immersive() const {
270 return put_window_in_immersive_;
271 }
272
273 private: 254 private:
274 bool put_window_in_immersive_;
275 ui::WindowShowState initial_show_state_; 255 ui::WindowShowState initial_show_state_;
276 256
277 DISALLOW_COPY_AND_ASSIGN(AcceleratorCommandsPlatformAppFullscreenBrowserTest); 257 DISALLOW_COPY_AND_ASSIGN(AcceleratorCommandsPlatformAppFullscreenBrowserTest);
278 }; 258 };
279 259
280 // Test the behavior of platform apps when ToggleFullscreen() is called. 260 // Test the behavior of platform apps when ToggleFullscreen() is called.
281 IN_PROC_BROWSER_TEST_P(AcceleratorCommandsPlatformAppFullscreenBrowserTest, 261 IN_PROC_BROWSER_TEST_P(AcceleratorCommandsPlatformAppFullscreenBrowserTest,
282 ToggleFullscreen) { 262 ToggleFullscreen) {
283 #if defined(OS_WIN) 263 #if defined(OS_WIN)
284 // Run the test on Win Ash only. 264 // Run the test on Win Ash only.
(...skipping 13 matching lines...) Expand all
298 apps::AppWindow* app_window = CreateAppWindowFromParams(extension, params); 278 apps::AppWindow* app_window = CreateAppWindowFromParams(extension, params);
299 apps::NativeAppWindow* native_app_window = app_window->GetBaseWindow(); 279 apps::NativeAppWindow* native_app_window = app_window->GetBaseWindow();
300 SetToInitialShowState(app_window); 280 SetToInitialShowState(app_window);
301 ASSERT_TRUE(app_window->GetBaseWindow()->IsActive()); 281 ASSERT_TRUE(app_window->GetBaseWindow()->IsActive());
302 EXPECT_TRUE(IsInitialShowState(app_window)); 282 EXPECT_TRUE(IsInitialShowState(app_window));
303 283
304 ash::accelerators::ToggleFullscreen(); 284 ash::accelerators::ToggleFullscreen();
305 EXPECT_TRUE(native_app_window->IsFullscreen()); 285 EXPECT_TRUE(native_app_window->IsFullscreen());
306 ash::wm::WindowState* window_state = 286 ash::wm::WindowState* window_state =
307 ash::wm::GetWindowState(native_app_window->GetNativeWindow()); 287 ash::wm::GetWindowState(native_app_window->GetNativeWindow());
308 EXPECT_EQ(put_window_in_immersive(), 288 EXPECT_TRUE(IsInImmersiveFullscreen(window_state));
309 IsInImmersiveFullscreen(window_state));
310 289
311 ash::accelerators::ToggleFullscreen(); 290 ash::accelerators::ToggleFullscreen();
312 EXPECT_TRUE(IsInitialShowState(app_window)); 291 EXPECT_TRUE(IsInitialShowState(app_window));
313 292
314 CloseAppWindow(app_window); 293 CloseAppWindow(app_window);
315 } 294 }
316 295
317 { 296 {
318 // Repeat the test, but make sure that frameless platform apps are never put 297 // Repeat the test, but make sure that frameless platform apps are never put
319 // into immersive fullscreen. 298 // into immersive fullscreen.
(...skipping 17 matching lines...) Expand all
337 CloseAppWindow(app_window); 316 CloseAppWindow(app_window);
338 } 317 }
339 } 318 }
340 319
341 INSTANTIATE_TEST_CASE_P(InitiallyRestored, 320 INSTANTIATE_TEST_CASE_P(InitiallyRestored,
342 AcceleratorCommandsPlatformAppFullscreenBrowserTest, 321 AcceleratorCommandsPlatformAppFullscreenBrowserTest,
343 Values(ui::SHOW_STATE_NORMAL)); 322 Values(ui::SHOW_STATE_NORMAL));
344 INSTANTIATE_TEST_CASE_P(InitiallyMaximized, 323 INSTANTIATE_TEST_CASE_P(InitiallyMaximized,
345 AcceleratorCommandsPlatformAppFullscreenBrowserTest, 324 AcceleratorCommandsPlatformAppFullscreenBrowserTest,
346 Values(ui::SHOW_STATE_MAXIMIZED)); 325 Values(ui::SHOW_STATE_MAXIMIZED));
OLDNEW
« no previous file with comments | « ash/wm/system_gesture_event_filter.cc ('k') | chrome/browser/ui/views/apps/chrome_native_app_window_views.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698