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

Side by Side Diff: chrome/browser/ui/fullscreen/fullscreen_controller_interactive_browsertest.cc

Issue 10919113: Move fullscreen_controller browser tests to interactive. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Cross platform safe include of mac specific header Created 8 years, 3 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 "build/build_config.h"
6 #include "chrome/browser/content_settings/host_content_settings_map.h"
7 #include "chrome/browser/profiles/profile.h"
5 #include "chrome/browser/ui/browser.h" 8 #include "chrome/browser/ui/browser.h"
9 #include "chrome/browser/ui/browser_commands.h"
6 #include "chrome/browser/ui/browser_tabstrip.h" 10 #include "chrome/browser/ui/browser_tabstrip.h"
7 #include "chrome/browser/ui/browser_window.h" 11 #include "chrome/browser/ui/browser_window.h"
8 #include "chrome/browser/ui/fullscreen/fullscreen_controller_test.h" 12 #include "chrome/browser/ui/fullscreen/fullscreen_controller_test.h"
9 #include "chrome/test/base/ui_test_utils.h" 13 #include "chrome/test/base/ui_test_utils.h"
10 #include "content/public/browser/render_view_host.h" 14 #include "content/public/browser/render_view_host.h"
11 #include "content/public/browser/render_widget_host_view.h" 15 #include "content/public/browser/render_widget_host_view.h"
12 #include "content/public/browser/web_contents.h" 16 #include "content/public/browser/web_contents.h"
17 #include "content/public/common/url_constants.h"
18
19 #if defined(OS_MACOSX)
20 #include "base/mac/mac_util.h"
21 #endif
13 22
14 using content::WebContents; 23 using content::WebContents;
15 24
25 namespace {
26
27 const FilePath::CharType* kSimpleFile = FILE_PATH_LITERAL("simple.html");
28
29 } // namespace
30
16 class FullscreenControllerInteractiveTest 31 class FullscreenControllerInteractiveTest
17 : public FullscreenControllerTest { 32 : public FullscreenControllerTest {
18 protected: 33 protected:
34
35 // Tests that actually make the browser fullscreen have been flaky when
36 // run sharded, and so are restricted here to interactive ui tests.
37 void ToggleTabFullscreen(bool enter_fullscreen);
38 void ToggleTabFullscreenNoRetries(bool enter_fullscreen);
39 void ToggleBrowserFullscreen(bool enter_fullscreen);
40
19 // IsMouseLocked verifies that the FullscreenController state believes 41 // IsMouseLocked verifies that the FullscreenController state believes
20 // the mouse is locked. This is possible only for tests that initiate 42 // the mouse is locked. This is possible only for tests that initiate
21 // mouse lock from a renderer process, and uses logic that tests that the 43 // mouse lock from a renderer process, and uses logic that tests that the
22 // browser has focus. Thus, this can only be used in interactive ui tests 44 // browser has focus. Thus, this can only be used in interactive ui tests
23 // and not on sharded tests. 45 // and not on sharded tests.
24 bool IsMouseLocked() { 46 bool IsMouseLocked() {
25 // Verify that IsMouseLocked is consistent between the 47 // Verify that IsMouseLocked is consistent between the
26 // Fullscreen Controller and the Render View Host View. 48 // Fullscreen Controller and the Render View Host View.
27 EXPECT_TRUE(browser()->IsMouseLocked() == 49 EXPECT_TRUE(browser()->IsMouseLocked() ==
28 chrome::GetActiveWebContents(browser())-> 50 chrome::GetActiveWebContents(browser())->
29 GetRenderViewHost()->GetView()->IsMouseLocked()); 51 GetRenderViewHost()->GetView()->IsMouseLocked());
30 return browser()->IsMouseLocked(); 52 return browser()->IsMouseLocked();
31 } 53 }
54
55 void TestFullscreenMouseLockContentSettings();
56
57 private:
58 void ToggleTabFullscreen_Internal(bool enter_fullscreen,
59 bool retry_until_success);
32 }; 60 };
33 61
62 void FullscreenControllerInteractiveTest::ToggleTabFullscreen(
63 bool enter_fullscreen) {
64 ToggleTabFullscreen_Internal(enter_fullscreen, true);
65 }
66
67 // |ToggleTabFullscreen| should not need to tolerate the transition failing.
68 // Most fullscreen tests run sharded in fullscreen_controller_browsertest.cc
69 // and some flakiness has occurred when calling |ToggleTabFullscreen|, so that
70 // method has been made robust by retrying if the transition fails.
71 // The root cause of that flakiness should still be tracked down, see
72 // http://crbug.com/133831. In the mean time, this method
73 // allows a fullscreen_controller_interactive_browsertest.cc test to verify
74 // that when running serially there is no flakiness in the transition.
75 void FullscreenControllerInteractiveTest::ToggleTabFullscreenNoRetries(
76 bool enter_fullscreen) {
77 ToggleTabFullscreen_Internal(enter_fullscreen, false);
78 }
79
80 void FullscreenControllerInteractiveTest::ToggleBrowserFullscreen(
81 bool enter_fullscreen) {
82 ASSERT_EQ(browser()->window()->IsFullscreen(), !enter_fullscreen);
83 FullscreenNotificationObserver fullscreen_observer;
84
85 chrome::ToggleFullscreenMode(browser());
86
87 fullscreen_observer.Wait();
88 ASSERT_EQ(browser()->window()->IsFullscreen(), enter_fullscreen);
89 ASSERT_EQ(IsFullscreenForBrowser(), enter_fullscreen);
90 }
91
92 // Helper method to be called by multiple tests.
93 // Tests Fullscreen and Mouse Lock with varying content settings ALLOW & BLOCK.
94 void
95 FullscreenControllerInteractiveTest::TestFullscreenMouseLockContentSettings() {
96 GURL url = test_server()->GetURL("simple.html");
97 AddTabAtIndexAndWait(0, url, content::PAGE_TRANSITION_TYPED);
98
99 // Validate that going fullscreen for a URL defaults to asking permision.
100 ASSERT_FALSE(IsFullscreenPermissionRequested());
101 ASSERT_NO_FATAL_FAILURE(ToggleTabFullscreen(true));
102 ASSERT_TRUE(IsFullscreenPermissionRequested());
103 ASSERT_NO_FATAL_FAILURE(ToggleTabFullscreen(false));
104
105 // Add content setting to ALLOW fullscreen.
106 HostContentSettingsMap* settings_map =
107 browser()->profile()->GetHostContentSettingsMap();
108 ContentSettingsPattern pattern =
109 ContentSettingsPattern::FromURL(url);
110 settings_map->SetContentSetting(
111 pattern, ContentSettingsPattern::Wildcard(),
112 CONTENT_SETTINGS_TYPE_FULLSCREEN, std::string(),
113 CONTENT_SETTING_ALLOW);
114
115 // Now, fullscreen should not prompt for permission.
116 ASSERT_FALSE(IsFullscreenPermissionRequested());
117 ASSERT_NO_FATAL_FAILURE(ToggleTabFullscreen(true));
118 ASSERT_FALSE(IsFullscreenPermissionRequested());
119
120 // Leaving tab in fullscreen, now test mouse lock ALLOW:
121
122 // Validate that mouse lock defaults to asking permision.
123 ASSERT_FALSE(IsMouseLockPermissionRequested());
124 RequestToLockMouse(true, false);
125 ASSERT_TRUE(IsMouseLockPermissionRequested());
126 LostMouseLock();
127
128 // Add content setting to ALLOW mouse lock.
129 settings_map->SetContentSetting(
130 pattern, ContentSettingsPattern::Wildcard(),
131 CONTENT_SETTINGS_TYPE_MOUSELOCK, std::string(),
132 CONTENT_SETTING_ALLOW);
133
134 // Now, mouse lock should not prompt for permission.
135 ASSERT_FALSE(IsMouseLockPermissionRequested());
136 RequestToLockMouse(true, false);
137 ASSERT_FALSE(IsMouseLockPermissionRequested());
138 LostMouseLock();
139
140 // Leaving tab in fullscreen, now test mouse lock BLOCK:
141
142 // Add content setting to BLOCK mouse lock.
143 settings_map->SetContentSetting(
144 pattern, ContentSettingsPattern::Wildcard(),
145 CONTENT_SETTINGS_TYPE_MOUSELOCK, std::string(),
146 CONTENT_SETTING_BLOCK);
147
148 // Now, mouse lock should not be pending.
149 ASSERT_FALSE(IsMouseLockPermissionRequested());
150 RequestToLockMouse(true, false);
151 ASSERT_FALSE(IsMouseLockPermissionRequested());
152 }
153
154 void FullscreenControllerInteractiveTest::ToggleTabFullscreen_Internal(
155 bool enter_fullscreen, bool retry_until_success) {
156 WebContents* tab = chrome::GetActiveWebContents(browser());
157 if (IsFullscreenForBrowser()) {
158 // Changing tab fullscreen state will not actually change the window
159 // when browser fullscreen is in effect.
160 browser()->ToggleFullscreenModeForTab(tab, enter_fullscreen);
161 } else { // Not in browser fullscreen, expect window to actually change.
162 ASSERT_NE(browser()->window()->IsFullscreen(), enter_fullscreen);
163 do {
164 FullscreenNotificationObserver fullscreen_observer;
165 browser()->ToggleFullscreenModeForTab(tab, enter_fullscreen);
166 fullscreen_observer.Wait();
167 // Repeat ToggleFullscreenModeForTab until the correct state is entered.
168 // This addresses flakiness on test bots running many fullscreen
169 // tests in parallel.
170 } while (retry_until_success &&
Robert Sesek 2012/09/06 18:20:51 Is this part still necessary since these tests won
scheib 2012/09/06 20:55:02 ToggleFullscreenModeForTab tests using this code w
171 browser()->window()->IsFullscreen() != enter_fullscreen);
172 ASSERT_EQ(browser()->window()->IsFullscreen(), enter_fullscreen);
173 }
174 }
175
176 // Tests ///////////////////////////////////////////////////////////////////////
177
178 #if defined(OS_MACOSX)
179 // http://crbug.com/104265
180 #define MAYBE_TestNewTabExitsFullscreen DISABLED_TestNewTabExitsFullscreen
181 #elif defined(OS_LINUX)
182 // http://crbug.com/137657
183 #define MAYBE_TestNewTabExitsFullscreen DISABLED_TestNewTabExitsFullscreen
184 #else
185 #define MAYBE_TestNewTabExitsFullscreen TestNewTabExitsFullscreen
186 #endif
187
188 // Tests that while in fullscreen creating a new tab will exit fullscreen.
189 IN_PROC_BROWSER_TEST_F(FullscreenControllerInteractiveTest,
190 MAYBE_TestNewTabExitsFullscreen) {
191 ASSERT_TRUE(test_server()->Start());
192
193 AddTabAtIndexAndWait(
194 0, GURL(chrome::kAboutBlankURL), content::PAGE_TRANSITION_TYPED);
195
196 ASSERT_NO_FATAL_FAILURE(ToggleTabFullscreen(true));
197
198 {
199 FullscreenNotificationObserver fullscreen_observer;
200 AddTabAtIndexAndWait(
201 1, GURL(chrome::kAboutBlankURL), content::PAGE_TRANSITION_TYPED);
202 fullscreen_observer.Wait();
203 ASSERT_FALSE(browser()->window()->IsFullscreen());
204 }
205 }
206
207 #if defined(OS_MACOSX)
208 // http://crbug.com/100467
209 #define MAYBE_TestTabExitsItselfFromFullscreen \
210 FAILS_TestTabExitsItselfFromFullscreen
211 #elif defined(OS_LINUX)
212 // http://crbug.com/146008
213 #define MAYBE_TestTabExitsItselfFromFullscreen \
214 DISABLED_TestTabExitsItselfFromFullscreen
215 #else
216 #define MAYBE_TestTabExitsItselfFromFullscreen TestTabExitsItselfFromFullscreen
217 #endif
218
219 // Tests a tab exiting fullscreen will bring the browser out of fullscreen.
220 IN_PROC_BROWSER_TEST_F(FullscreenControllerInteractiveTest,
221 MAYBE_TestTabExitsItselfFromFullscreen) {
222 ASSERT_TRUE(test_server()->Start());
223
224 AddTabAtIndexAndWait(
225 0, GURL(chrome::kAboutBlankURL), content::PAGE_TRANSITION_TYPED);
226
227 ASSERT_NO_FATAL_FAILURE(ToggleTabFullscreen(true));
228 ASSERT_NO_FATAL_FAILURE(ToggleTabFullscreen(false));
229 }
230
231 // Tests entering fullscreen and then requesting mouse lock results in
232 // buttons for the user, and that after confirming the buttons are dismissed.
233 #if defined(OS_LINUX)
234 // http://crbug.com/146008
235 #define MAYBE_TestFullscreenBubbleMouseLockState \
236 DISABLED_TestFullscreenBubbleMouseLockState
237 #else
238 #define MAYBE_TestFullscreenBubbleMouseLockState \
239 TestFullscreenBubbleMouseLockState
240 #endif
241 IN_PROC_BROWSER_TEST_F(FullscreenControllerInteractiveTest,
242 MAYBE_TestFullscreenBubbleMouseLockState) {
243 ASSERT_TRUE(test_server()->Start());
244
245 AddTabAtIndexAndWait(0, GURL(chrome::kAboutBlankURL),
246 content::PAGE_TRANSITION_TYPED);
247 AddTabAtIndexAndWait(1, GURL(chrome::kAboutBlankURL),
248 content::PAGE_TRANSITION_TYPED);
249
250 ASSERT_NO_FATAL_FAILURE(ToggleTabFullscreen(true));
251
252 // Request mouse lock and verify the bubble is waiting for user confirmation.
253 RequestToLockMouse(true, false);
254 ASSERT_TRUE(IsMouseLockPermissionRequested());
255
256 // Accept mouse lock and verify bubble no longer shows confirmation buttons.
257 AcceptCurrentFullscreenOrMouseLockRequest();
258 ASSERT_FALSE(IsFullscreenBubbleDisplayingButtons());
259 }
260
261 #if defined(OS_MACOSX)
262 // http://crbug.com/133831
263 #define MAYBE_FullscreenMouseLockContentSettings \
264 FLAKY_FullscreenMouseLockContentSettings
265 #elif defined(OS_LINUX)
266 // http://crbug.com/146008
267 #define MAYBE_FullscreenMouseLockContentSettings \
268 DISABLED_FullscreenMouseLockContentSettings
269 #else
270 #define MAYBE_FullscreenMouseLockContentSettings \
271 FullscreenMouseLockContentSettings
272 #endif
273 // Tests fullscreen and Mouse Lock with varying content settings ALLOW & BLOCK.
274 IN_PROC_BROWSER_TEST_F(FullscreenControllerInteractiveTest,
275 MAYBE_FullscreenMouseLockContentSettings) {
276 TestFullscreenMouseLockContentSettings();
277 }
278
279 #if defined(OS_MACOSX) || defined(OS_LINUX)
280 // http://crbug.com/103912 Mac
281 // http://crbug.com/143930 Linux
282 #define MAYBE_BrowserFullscreenMouseLockContentSettings \
283 DISABLED_BrowserFullscreenMouseLockContentSettings
284 #else
285 #define MAYBE_BrowserFullscreenMouseLockContentSettings \
286 BrowserFullscreenMouseLockContentSettings
287 #endif
288 // Tests fullscreen and Mouse Lock with varying content settings ALLOW & BLOCK,
289 // but with the browser initiated in fullscreen mode first.
290 IN_PROC_BROWSER_TEST_F(FullscreenControllerInteractiveTest,
291 MAYBE_BrowserFullscreenMouseLockContentSettings) {
292 // Enter browser fullscreen first.
293 ASSERT_NO_FATAL_FAILURE(ToggleBrowserFullscreen(true));
294 TestFullscreenMouseLockContentSettings();
295 ASSERT_NO_FATAL_FAILURE(ToggleBrowserFullscreen(false));
296 }
297
298 // Tests Fullscreen entered in Browser, then Tab mode, then exited via Browser.
299 #if defined(OS_MACOSX)
300 // http://crbug.com/103912
301 #define MAYBE_BrowserFullscreenExit DISABLED_BrowserFullscreenExit
302 #else
303 #define MAYBE_BrowserFullscreenExit BrowserFullscreenExit
304 #endif
305 IN_PROC_BROWSER_TEST_F(FullscreenControllerInteractiveTest,
306 MAYBE_BrowserFullscreenExit) {
307 // Enter browser fullscreen.
308 ASSERT_NO_FATAL_FAILURE(ToggleBrowserFullscreen(true));
309
310 // Enter tab fullscreen.
311 AddTabAtIndexAndWait(0, GURL(chrome::kAboutBlankURL),
312 content::PAGE_TRANSITION_TYPED);
313 ASSERT_NO_FATAL_FAILURE(ToggleTabFullscreen(true));
314
315 // Exit browser fullscreen.
316 ASSERT_NO_FATAL_FAILURE(ToggleBrowserFullscreen(false));
317 ASSERT_FALSE(browser()->window()->IsFullscreen());
318 }
319
320 // Tests Browser Fullscreen remains active after Tab mode entered and exited.
321 #if defined(OS_MACOSX)
322 // http://crbug.com/103912
323 #define MAYBE_BrowserFullscreenAfterTabFSExit \
324 DISABLED_BrowserFullscreenAfterTabFSExit
325 #elif defined(OS_LINUX)
326 // http://crbug.com/146008
327 #define MAYBE_BrowserFullscreenAfterTabFSExit \
328 DISABLED_BrowserFullscreenAfterTabFSExit
329 #else
330 #define MAYBE_BrowserFullscreenAfterTabFSExit BrowserFullscreenAfterTabFSExit
331 #endif
332 IN_PROC_BROWSER_TEST_F(FullscreenControllerInteractiveTest,
333 MAYBE_BrowserFullscreenAfterTabFSExit) {
334 // Enter browser fullscreen.
335 ASSERT_NO_FATAL_FAILURE(ToggleBrowserFullscreen(true));
336
337 // Enter and then exit tab fullscreen.
338 AddTabAtIndexAndWait(0, GURL(chrome::kAboutBlankURL),
339 content::PAGE_TRANSITION_TYPED);
340 ASSERT_NO_FATAL_FAILURE(ToggleTabFullscreen(true));
341 ASSERT_NO_FATAL_FAILURE(ToggleTabFullscreen(false));
342
343 // Verify browser fullscreen still active.
344 ASSERT_TRUE(IsFullscreenForBrowser());
345 }
346
347 // Tests fullscreen entered without permision prompt for file:// urls.
348 #if defined(OS_LINUX)
349 // http://crbug.com/146008
350 #define MAYBE_FullscreenFileURL DISABLED_FullscreenFileURL
351 #else
352 #define MAYBE_FullscreenFileURL FullscreenFileURL
353 #endif
354
355 IN_PROC_BROWSER_TEST_F(FullscreenControllerInteractiveTest,
356 MAYBE_FullscreenFileURL) {
357 ui_test_utils::NavigateToURL(browser(),
358 ui_test_utils::GetTestUrl(FilePath(FilePath::kCurrentDirectory),
359 FilePath(kSimpleFile)));
360
361 // Validate that going fullscreen for a file does not ask permision.
362 ASSERT_FALSE(IsFullscreenPermissionRequested());
363 ASSERT_NO_FATAL_FAILURE(ToggleTabFullscreen(true));
364 ASSERT_FALSE(IsFullscreenPermissionRequested());
365 ASSERT_NO_FATAL_FAILURE(ToggleTabFullscreen(false));
366 }
367
368 // Tests fullscreen is exited on page navigation.
369 #if defined(OS_MACOSX)
370 // http://crbug.com/103912
371 #define MAYBE_TestTabExitsFullscreenOnNavigation \
372 DISABLED_TestTabExitsFullscreenOnNavigation
373 #else
374 #define MAYBE_TestTabExitsFullscreenOnNavigation \
375 TestTabExitsFullscreenOnNavigation
376 #endif
377 IN_PROC_BROWSER_TEST_F(FullscreenControllerInteractiveTest,
378 MAYBE_TestTabExitsFullscreenOnNavigation) {
379 ASSERT_TRUE(test_server()->Start());
380
381 ui_test_utils::NavigateToURL(browser(), GURL("about:blank"));
382 ASSERT_NO_FATAL_FAILURE(ToggleTabFullscreen(true));
383 ui_test_utils::NavigateToURL(browser(), GURL("chrome://newtab"));
384
385 ASSERT_FALSE(browser()->window()->IsFullscreen());
386 }
387
388 // Tests fullscreen is exited when navigating back.
389 #if defined(OS_MACOSX)
390 // http://crbug.com/103912
391 #define MAYBE_TestTabExitsFullscreenOnGoBack \
392 DISABLED_TestTabExitsFullscreenOnGoBack
393 #elif defined(OS_LINUX)
394 // http://crbug.com/146008
395 #define MAYBE_TestTabExitsFullscreenOnGoBack \
396 DISABLED_TestTabExitsFullscreenOnGoBack
397 #else
398 #define MAYBE_TestTabExitsFullscreenOnGoBack TestTabExitsFullscreenOnGoBack
399 #endif
400 IN_PROC_BROWSER_TEST_F(FullscreenControllerInteractiveTest,
401 MAYBE_TestTabExitsFullscreenOnGoBack) {
402 ASSERT_TRUE(test_server()->Start());
403
404 ui_test_utils::NavigateToURL(browser(), GURL("about:blank"));
405 ui_test_utils::NavigateToURL(browser(), GURL("chrome://newtab"));
406
407 ASSERT_NO_FATAL_FAILURE(ToggleTabFullscreen(true));
408
409 GoBack();
410
411 ASSERT_FALSE(browser()->window()->IsFullscreen());
412 }
413
414 // Tests fullscreen is not exited on sub frame navigation.
415 #if defined(OS_LINUX)
416 // http://crbug.com/146008
417 #define MAYBE_TestTabDoesntExitFullscreenOnSubFrameNavigation \
418 DISABLED_TestTabDoesntExitFullscreenOnSubFrameNavigation
419 #else
420 #define MAYBE_TestTabDoesntExitFullscreenOnSubFrameNavigation \
421 TestTabDoesntExitFullscreenOnSubFrameNavigation
422 #endif
423 IN_PROC_BROWSER_TEST_F(FullscreenControllerInteractiveTest,
424 MAYBE_TestTabDoesntExitFullscreenOnSubFrameNavigation) {
425 ASSERT_TRUE(test_server()->Start());
426
427 GURL url(ui_test_utils::GetTestUrl(FilePath(FilePath::kCurrentDirectory),
428 FilePath(kSimpleFile)));
429 GURL url_with_fragment(url.spec() + "#fragment");
430
431 ui_test_utils::NavigateToURL(browser(), url);
432 ASSERT_NO_FATAL_FAILURE(ToggleTabFullscreen(true));
433 ui_test_utils::NavigateToURL(browser(), url_with_fragment);
434 ASSERT_TRUE(IsFullscreenForTabOrPending());
435 }
436
437 // Tests tab fullscreen exits, but browser fullscreen remains, on navigation.
438 #if defined(OS_MACOSX)
439 // http://crbug.com/103912
440 #define MAYBE_TestFullscreenFromTabWhenAlreadyInBrowserFullscreenWorks \
441 DISABLED_TestFullscreenFromTabWhenAlreadyInBrowserFullscreenWorks
442 #elif defined(OS_LINUX)
443 // http://crbug.com/146008
444 #define MAYBE_TestFullscreenFromTabWhenAlreadyInBrowserFullscreenWorks \
445 DISABLED_TestFullscreenFromTabWhenAlreadyInBrowserFullscreenWorks
446 #else
447 #define MAYBE_TestFullscreenFromTabWhenAlreadyInBrowserFullscreenWorks \
448 TestFullscreenFromTabWhenAlreadyInBrowserFullscreenWorks
449 #endif
450 IN_PROC_BROWSER_TEST_F(FullscreenControllerInteractiveTest,
451 MAYBE_TestFullscreenFromTabWhenAlreadyInBrowserFullscreenWorks) {
452 ASSERT_TRUE(test_server()->Start());
453
454 ui_test_utils::NavigateToURL(browser(), GURL("about:blank"));
455 ui_test_utils::NavigateToURL(browser(), GURL("chrome://newtab"));
456
457 ASSERT_NO_FATAL_FAILURE(ToggleBrowserFullscreen(true));
458 ASSERT_NO_FATAL_FAILURE(ToggleTabFullscreen(true));
459
460 GoBack();
461
462 ASSERT_TRUE(IsFullscreenForBrowser());
463 ASSERT_FALSE(IsFullscreenForTabOrPending());
464 }
465
466 #if defined(OS_MACOSX)
467 // http://crbug.com/100467
468 IN_PROC_BROWSER_TEST_F(
469 FullscreenControllerTest, FAILS_TabEntersPresentationModeFromWindowed) {
470 ASSERT_TRUE(test_server()->Start());
471
472 AddTabAtIndexAndWait(
473 0, GURL(chrome::kAboutBlankURL), content::PAGE_TRANSITION_TYPED);
474
475 WebContents* tab = chrome::GetActiveWebContents(browser());
476
477 {
478 FullscreenNotificationObserver fullscreen_observer;
479 EXPECT_FALSE(browser()->window()->IsFullscreen());
480 EXPECT_FALSE(browser()->window()->InPresentationMode());
481 browser()->ToggleFullscreenModeForTab(tab, true);
482 fullscreen_observer.Wait();
483 ASSERT_TRUE(browser()->window()->IsFullscreen());
484 ASSERT_TRUE(browser()->window()->InPresentationMode());
485 }
486
487 {
488 FullscreenNotificationObserver fullscreen_observer;
489 browser()->TogglePresentationMode();
490 fullscreen_observer.Wait();
491 ASSERT_FALSE(browser()->window()->IsFullscreen());
492 ASSERT_FALSE(browser()->window()->InPresentationMode());
493 }
494
495 if (base::mac::IsOSLionOrLater()) {
496 // Test that tab fullscreen mode doesn't make presentation mode the default
497 // on Lion.
498 FullscreenNotificationObserver fullscreen_observer;
499 chrome::ToggleFullscreenMode(browser());
500 fullscreen_observer.Wait();
501 ASSERT_TRUE(browser()->window()->IsFullscreen());
502 ASSERT_FALSE(browser()->window()->InPresentationMode());
503 }
504 }
505 #endif
506
34 // Tests mouse lock can be escaped with ESC key. 507 // Tests mouse lock can be escaped with ESC key.
35 IN_PROC_BROWSER_TEST_F(FullscreenControllerInteractiveTest, EscapingMouseLock) { 508 IN_PROC_BROWSER_TEST_F(FullscreenControllerInteractiveTest, EscapingMouseLock) {
36 ASSERT_TRUE(test_server()->Start()); 509 ASSERT_TRUE(test_server()->Start());
37 ui_test_utils::NavigateToURL(browser(), 510 ui_test_utils::NavigateToURL(browser(),
38 test_server()->GetURL(kFullscreenMouseLockHTML)); 511 test_server()->GetURL(kFullscreenMouseLockHTML));
39 512
40 ASSERT_FALSE(IsFullscreenBubbleDisplayed()); 513 ASSERT_FALSE(IsFullscreenBubbleDisplayed());
41 514
42 // Request to lock the mouse. 515 // Request to lock the mouse.
43 { 516 {
(...skipping 286 matching lines...) Expand 10 before | Expand all | Expand 10 after
330 // Lock the mouse with a user gesture, make sure we see bubble again. 803 // Lock the mouse with a user gesture, make sure we see bubble again.
331 ASSERT_TRUE(ui_test_utils::SendKeyPressAndWait( 804 ASSERT_TRUE(ui_test_utils::SendKeyPressAndWait(
332 browser(), ui::VKEY_1, false, false, false, false, 805 browser(), ui::VKEY_1, false, false, false, false,
333 chrome::NOTIFICATION_MOUSE_LOCK_CHANGED, 806 chrome::NOTIFICATION_MOUSE_LOCK_CHANGED,
334 content::NotificationService::AllSources())); 807 content::NotificationService::AllSources()));
335 ASSERT_TRUE(IsFullscreenBubbleDisplayed()); 808 ASSERT_TRUE(IsFullscreenBubbleDisplayed());
336 ASSERT_TRUE(IsMouseLocked()); 809 ASSERT_TRUE(IsMouseLocked());
337 } 810 }
338 811
339 // Tests mouse lock is exited on page navigation. 812 // Tests mouse lock is exited on page navigation.
340 // (Similar to fullscreen version in FullscreenControllerTest)
341 IN_PROC_BROWSER_TEST_F(FullscreenControllerInteractiveTest, 813 IN_PROC_BROWSER_TEST_F(FullscreenControllerInteractiveTest,
342 TestTabExitsMouseLockOnNavigation) { 814 TestTabExitsMouseLockOnNavigation) {
343 ASSERT_TRUE(test_server()->Start()); 815 ASSERT_TRUE(test_server()->Start());
344 ui_test_utils::NavigateToURL(browser(), 816 ui_test_utils::NavigateToURL(browser(),
345 test_server()->GetURL(kFullscreenMouseLockHTML)); 817 test_server()->GetURL(kFullscreenMouseLockHTML));
346 818
347 // Lock the mouse with a user gesture. 819 // Lock the mouse with a user gesture.
348 ASSERT_TRUE(ui_test_utils::SendKeyPressAndWait( 820 ASSERT_TRUE(ui_test_utils::SendKeyPressAndWait(
349 browser(), ui::VKEY_1, false, false, false, false, 821 browser(), ui::VKEY_1, false, false, false, false,
350 chrome::NOTIFICATION_MOUSE_LOCK_CHANGED, 822 chrome::NOTIFICATION_MOUSE_LOCK_CHANGED,
351 content::NotificationService::AllSources())); 823 content::NotificationService::AllSources()));
352 ASSERT_TRUE(IsFullscreenBubbleDisplayed()); 824 ASSERT_TRUE(IsFullscreenBubbleDisplayed());
353 ASSERT_TRUE(IsMouseLockPermissionRequested()); 825 ASSERT_TRUE(IsMouseLockPermissionRequested());
354 ASSERT_FALSE(IsMouseLocked()); 826 ASSERT_FALSE(IsMouseLocked());
355 827
356 // Accept mouse lock. 828 // Accept mouse lock.
357 AcceptCurrentFullscreenOrMouseLockRequest(); 829 AcceptCurrentFullscreenOrMouseLockRequest();
358 ASSERT_TRUE(IsMouseLocked()); 830 ASSERT_TRUE(IsMouseLocked());
359 831
360 ui_test_utils::NavigateToURL(browser(), GURL("chrome://newtab")); 832 ui_test_utils::NavigateToURL(browser(), GURL("chrome://newtab"));
361 833
362 ASSERT_FALSE(IsMouseLocked()); 834 ASSERT_FALSE(IsMouseLocked());
363 } 835 }
364 836
365 // Tests mouse lock is exited when navigating back. 837 // Tests mouse lock is exited when navigating back.
366 // (Similar to fullscreen version in FullscreenControllerTest)
367 IN_PROC_BROWSER_TEST_F(FullscreenControllerInteractiveTest, 838 IN_PROC_BROWSER_TEST_F(FullscreenControllerInteractiveTest,
368 TestTabExitsMouseLockOnGoBack) { 839 TestTabExitsMouseLockOnGoBack) {
369 ASSERT_TRUE(test_server()->Start()); 840 ASSERT_TRUE(test_server()->Start());
370 841
371 // Navigate twice to provide a place to go back to. 842 // Navigate twice to provide a place to go back to.
372 ui_test_utils::NavigateToURL(browser(), GURL("about:blank")); 843 ui_test_utils::NavigateToURL(browser(), GURL("about:blank"));
373 ui_test_utils::NavigateToURL(browser(), 844 ui_test_utils::NavigateToURL(browser(),
374 test_server()->GetURL(kFullscreenMouseLockHTML)); 845 test_server()->GetURL(kFullscreenMouseLockHTML));
375 846
376 // Lock the mouse with a user gesture. 847 // Lock the mouse with a user gesture.
377 ASSERT_TRUE(ui_test_utils::SendKeyPressAndWait( 848 ASSERT_TRUE(ui_test_utils::SendKeyPressAndWait(
378 browser(), ui::VKEY_1, false, false, false, false, 849 browser(), ui::VKEY_1, false, false, false, false,
379 chrome::NOTIFICATION_MOUSE_LOCK_CHANGED, 850 chrome::NOTIFICATION_MOUSE_LOCK_CHANGED,
380 content::NotificationService::AllSources())); 851 content::NotificationService::AllSources()));
381 ASSERT_TRUE(IsFullscreenBubbleDisplayed()); 852 ASSERT_TRUE(IsFullscreenBubbleDisplayed());
382 ASSERT_TRUE(IsMouseLockPermissionRequested()); 853 ASSERT_TRUE(IsMouseLockPermissionRequested());
383 ASSERT_FALSE(IsMouseLocked()); 854 ASSERT_FALSE(IsMouseLocked());
384 855
385 // Accept mouse lock. 856 // Accept mouse lock.
386 AcceptCurrentFullscreenOrMouseLockRequest(); 857 AcceptCurrentFullscreenOrMouseLockRequest();
387 ASSERT_TRUE(IsMouseLocked()); 858 ASSERT_TRUE(IsMouseLocked());
388 859
389 GoBack(); 860 GoBack();
390 861
391 ASSERT_FALSE(IsMouseLocked()); 862 ASSERT_FALSE(IsMouseLocked());
392 } 863 }
393 864
394 // Tests mouse lock is not exited on sub frame navigation. 865 // Tests mouse lock is not exited on sub frame navigation.
395 // (Similar to fullscreen version in FullscreenControllerTest)
396 IN_PROC_BROWSER_TEST_F(FullscreenControllerInteractiveTest, 866 IN_PROC_BROWSER_TEST_F(FullscreenControllerInteractiveTest,
397 TestTabDoesntExitMouseLockOnSubFrameNavigation) { 867 TestTabDoesntExitMouseLockOnSubFrameNavigation) {
398 ASSERT_TRUE(test_server()->Start()); 868 ASSERT_TRUE(test_server()->Start());
399 869
400 // Create URLs for test page and test page with #fragment. 870 // Create URLs for test page and test page with #fragment.
401 GURL url(test_server()->GetURL(kFullscreenMouseLockHTML)); 871 GURL url(test_server()->GetURL(kFullscreenMouseLockHTML));
402 GURL url_with_fragment(url.spec() + "#fragment"); 872 GURL url_with_fragment(url.spec() + "#fragment");
403 873
404 // Navigate to test page. 874 // Navigate to test page.
405 ui_test_utils::NavigateToURL(browser(), url); 875 ui_test_utils::NavigateToURL(browser(), url);
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
501 #define MAYBE_ToggleFullscreenModeForTab ToggleFullscreenModeForTab 971 #define MAYBE_ToggleFullscreenModeForTab ToggleFullscreenModeForTab
502 #endif 972 #endif
503 // Tests ToggleFullscreenModeForTab always causes window to change. 973 // Tests ToggleFullscreenModeForTab always causes window to change.
504 IN_PROC_BROWSER_TEST_F(FullscreenControllerInteractiveTest, 974 IN_PROC_BROWSER_TEST_F(FullscreenControllerInteractiveTest,
505 MAYBE_ToggleFullscreenModeForTab) { 975 MAYBE_ToggleFullscreenModeForTab) {
506 // Most fullscreen tests run sharded in fullscreen_controller_browsertest.cc 976 // Most fullscreen tests run sharded in fullscreen_controller_browsertest.cc
507 // but flakiness required a while loop in 977 // but flakiness required a while loop in
508 // FullscreenControllerTest::ToggleTabFullscreen. This test verifies that 978 // FullscreenControllerTest::ToggleTabFullscreen. This test verifies that
509 // when running serially there is no flakiness. 979 // when running serially there is no flakiness.
510 // This test reproduces the same flow as 980 // This test reproduces the same flow as
511 // FullscreenControllerBrowserTest::TestFullscreenMouseLockContentSettings. 981 // TestFullscreenMouseLockContentSettings.
512 // http://crbug.com/133831 982 // http://crbug.com/133831
513 983
514 GURL url = test_server()->GetURL("simple.html"); 984 GURL url = test_server()->GetURL("simple.html");
515 AddTabAtIndexAndWait(0, url, content::PAGE_TRANSITION_TYPED); 985 AddTabAtIndexAndWait(0, url, content::PAGE_TRANSITION_TYPED);
516 986
517 // Validate that going fullscreen for a URL defaults to asking permision. 987 // Validate that going fullscreen for a URL defaults to asking permision.
518 ASSERT_FALSE(IsFullscreenPermissionRequested()); 988 ASSERT_FALSE(IsFullscreenPermissionRequested());
519 ASSERT_NO_FATAL_FAILURE(ToggleTabFullscreenNoRetries(true)); 989 ASSERT_NO_FATAL_FAILURE(ToggleTabFullscreenNoRetries(true));
520 ASSERT_TRUE(IsFullscreenPermissionRequested()); 990 ASSERT_TRUE(IsFullscreenPermissionRequested());
521 ASSERT_NO_FATAL_FAILURE(ToggleTabFullscreenNoRetries(false)); 991 ASSERT_NO_FATAL_FAILURE(ToggleTabFullscreenNoRetries(false));
522 } 992 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698