Chromium Code Reviews| Index: chrome/browser/ui/fullscreen_controller_interactive_browsertest.cc |
| diff --git a/chrome/browser/ui/fullscreen_controller_interactive_browsertest.cc b/chrome/browser/ui/fullscreen_controller_interactive_browsertest.cc |
| index e21efb75cd5d0971f88e8a780eaa4befe195f94c..875a78e9ec7c914636c4366491b010826041a800 100644 |
| --- a/chrome/browser/ui/fullscreen_controller_interactive_browsertest.cc |
| +++ b/chrome/browser/ui/fullscreen_controller_interactive_browsertest.cc |
| @@ -318,3 +318,155 @@ IN_PROC_BROWSER_TEST_F(FullscreenControllerInteractiveTest, |
| ASSERT_TRUE(IsMouseLocked()); |
| } |
| +// Tests fullscreen is exited on page navigation. |
| +// (Similar to fullscreen version in FullscreenControllerTest) |
| +IN_PROC_BROWSER_TEST_F(FullscreenControllerInteractiveTest, |
| + TestMouseLockExitsFullscreenOnNavigation) { |
|
yzshen1
2012/06/20 18:07:54
'Fullscreen' is not needed in the name, right? It
scheib
2012/06/20 20:38:24
Done.
|
| + ASSERT_TRUE(test_server()->Start()); |
| + ui_test_utils::NavigateToURL(browser(), |
| + test_server()->GetURL(kFullscreenMouseLockHTML)); |
| + |
| + // Lock the mouse with a user gesture. |
| + ASSERT_TRUE(ui_test_utils::SendKeyPressAndWait( |
| + browser(), ui::VKEY_1, false, false, false, false, |
| + chrome::NOTIFICATION_MOUSE_LOCK_CHANGED, |
| + content::NotificationService::AllSources())); |
| + ASSERT_TRUE(IsFullscreenBubbleDisplayed()); |
| + ASSERT_TRUE(IsMouseLockPermissionRequested()); |
| + ASSERT_FALSE(IsMouseLocked()); |
| + |
| + // Accept mouse lock. |
| + AcceptCurrentFullscreenOrMouseLockRequest(); |
| + ASSERT_TRUE(IsMouseLocked()); |
| + |
| + ui_test_utils::NavigateToURL(browser(), GURL("chrome://newtab")); |
| + |
| + ASSERT_FALSE(IsMouseLocked()); |
| +} |
| + |
| +// Tests fullscreen is exited when navigating back. |
| +// (Similar to fullscreen version in FullscreenControllerTest) |
| +IN_PROC_BROWSER_TEST_F(FullscreenControllerInteractiveTest, |
| + TestMouseLockExitsFullscreenOnGoBack) { |
| + ASSERT_TRUE(test_server()->Start()); |
| + |
| + // Navigate twice to provide a place to go back to. |
| + ui_test_utils::NavigateToURL(browser(), GURL("about:blank")); |
| + ui_test_utils::NavigateToURL(browser(), |
| + test_server()->GetURL(kFullscreenMouseLockHTML)); |
| + |
| + // Lock the mouse with a user gesture. |
| + ASSERT_TRUE(ui_test_utils::SendKeyPressAndWait( |
| + browser(), ui::VKEY_1, false, false, false, false, |
| + chrome::NOTIFICATION_MOUSE_LOCK_CHANGED, |
| + content::NotificationService::AllSources())); |
| + ASSERT_TRUE(IsFullscreenBubbleDisplayed()); |
| + ASSERT_TRUE(IsMouseLockPermissionRequested()); |
| + ASSERT_FALSE(IsMouseLocked()); |
| + |
| + // Accept mouse lock. |
| + AcceptCurrentFullscreenOrMouseLockRequest(); |
| + ASSERT_TRUE(IsMouseLocked()); |
| + |
| + GoBack(); |
| + |
| + ASSERT_FALSE(IsMouseLocked()); |
| +} |
| + |
| +// Tests fullscreen is not exited on sub frame navigation. |
| +// (Similar to fullscreen version in FullscreenControllerTest) |
| +IN_PROC_BROWSER_TEST_F(FullscreenControllerInteractiveTest, |
| + TestMouseLockDoesntExitFullscreenOnSubFrameNavigation) { |
| + ASSERT_TRUE(test_server()->Start()); |
| + |
| + // Create URLs for test page and test page with #fragment. |
| + GURL url(test_server()->GetURL(kFullscreenMouseLockHTML)); |
| + GURL url_with_fragment(url.spec() + "#fragment"); |
| + |
| + // Navigate to test page. |
| + ui_test_utils::NavigateToURL(browser(), url); |
| + |
| + // Lock the mouse with a user gesture. |
| + ASSERT_TRUE(ui_test_utils::SendKeyPressAndWait( |
| + browser(), ui::VKEY_1, false, false, false, false, |
| + chrome::NOTIFICATION_MOUSE_LOCK_CHANGED, |
| + content::NotificationService::AllSources())); |
| + ASSERT_TRUE(IsFullscreenBubbleDisplayed()); |
| + ASSERT_TRUE(IsMouseLockPermissionRequested()); |
| + ASSERT_FALSE(IsMouseLocked()); |
|
koz (OOO until 15th September)
2012/06/19 23:57:17
Maybe this block (in this test and others) should
scheib
2012/06/20 20:38:24
I will do so in another polish patch to keep this
|
| + |
| + // Accept mouse lock. |
| + AcceptCurrentFullscreenOrMouseLockRequest(); |
| + ASSERT_TRUE(IsMouseLocked()); |
| + |
| + // Navigate to url with fragment. Mouse lock should persist. |
| + ui_test_utils::NavigateToURL(browser(), url_with_fragment); |
| + ASSERT_TRUE(IsMouseLocked()); |
| +} |
| + |
| +// Tests Mouse Lock and Fullscreen are exited upon reload. |
| +IN_PROC_BROWSER_TEST_F(FullscreenControllerInteractiveTest, |
| + ReloadExitsMouseLockAndFullscreen) { |
| + ASSERT_TRUE(test_server()->Start()); |
| + ui_test_utils::NavigateToURL(browser(), |
| + test_server()->GetURL(kFullscreenMouseLockHTML)); |
| + |
| + ASSERT_FALSE(IsMouseLockPermissionRequested()); |
| + |
| + // Request mouse lock. |
| + ASSERT_TRUE(ui_test_utils::SendKeyPressAndWait( |
| + browser(), ui::VKEY_1, false, false, false, false, |
| + chrome::NOTIFICATION_MOUSE_LOCK_CHANGED, |
| + content::NotificationService::AllSources())); |
| + ASSERT_TRUE(IsMouseLockPermissionRequested()); |
| + |
| + // Reload. Mouse lock request should be cleared. |
| + { |
| + MouseLockNotificationObserver mouselock_observer; |
| + Reload(); |
| + mouselock_observer.Wait(); |
| + ASSERT_FALSE(IsMouseLockPermissionRequested()); |
| + } |
| + |
| + // Request mouse lock. |
| + ASSERT_TRUE(ui_test_utils::SendKeyPressAndWait( |
| + browser(), ui::VKEY_1, false, false, false, false, |
| + chrome::NOTIFICATION_MOUSE_LOCK_CHANGED, |
| + content::NotificationService::AllSources())); |
| + ASSERT_TRUE(IsMouseLockPermissionRequested()); |
| + |
| + // Accept mouse lock. |
| + AcceptCurrentFullscreenOrMouseLockRequest(); |
| + ASSERT_TRUE(IsMouseLocked()); |
| + ASSERT_TRUE(IsFullscreenBubbleDisplayed()); |
| + |
| + // Reload. Mouse should be unlocked. |
| + { |
| + MouseLockNotificationObserver mouselock_observer; |
| + Reload(); |
| + mouselock_observer.Wait(); |
| + ASSERT_FALSE(IsMouseLocked()); |
| + } |
| + |
| + // Request to lock the mouse and enter fullscreen. |
| + { |
| + FullscreenNotificationObserver fullscreen_observer; |
| + ASSERT_TRUE(ui_test_utils::SendKeyPressAndWait( |
| + browser(), ui::VKEY_B, false, true, false, false, |
| + chrome::NOTIFICATION_MOUSE_LOCK_CHANGED, |
| + content::NotificationService::AllSources())); |
| + fullscreen_observer.Wait(); |
| + } |
| + |
| + // We are fullscreen. |
| + ASSERT_TRUE(IsFullscreenForTabOrPending()); |
| + |
| + // Reload. Mouse should be unlocked and fullscreen exited. |
| + { |
| + FullscreenNotificationObserver fullscreen_observer; |
| + Reload(); |
| + fullscreen_observer.Wait(); |
| + ASSERT_FALSE(IsMouseLocked()); |
| + ASSERT_FALSE(IsFullscreenForTabOrPending()); |
| + } |
| +} |