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..ef1ff8c86f8f405150fea1a710be3f658af01261 100644 |
--- a/chrome/browser/ui/fullscreen_controller_interactive_browsertest.cc |
+++ b/chrome/browser/ui/fullscreen_controller_interactive_browsertest.cc |
@@ -249,6 +249,8 @@ IN_PROC_BROWSER_TEST_F(FullscreenControllerInteractiveTest, |
ASSERT_FALSE(IsFullscreenPermissionRequested()); |
} |
+// Tests mouse lock can be exited and re-entered by an application silently |
+// with no UI distraction for users. |
IN_PROC_BROWSER_TEST_F(FullscreenControllerInteractiveTest, |
MouseLockSilentAfterTargetUnlock) { |
ASSERT_TRUE(test_server()->Start()); |
@@ -271,7 +273,7 @@ IN_PROC_BROWSER_TEST_F(FullscreenControllerInteractiveTest, |
ASSERT_TRUE(IsMouseLocked()); |
ASSERT_TRUE(IsFullscreenBubbleDisplayed()); |
- // Unlock the mouse from target, make sure it's unloacked |
+ // Unlock the mouse from target, make sure it's unlocked. |
ASSERT_TRUE(ui_test_utils::SendKeyPressAndWait( |
browser(), ui::VKEY_U, false, false, false, false, |
chrome::NOTIFICATION_MOUSE_LOCK_CHANGED, |
@@ -279,7 +281,7 @@ IN_PROC_BROWSER_TEST_F(FullscreenControllerInteractiveTest, |
ASSERT_FALSE(IsMouseLocked()); |
ASSERT_FALSE(IsFullscreenBubbleDisplayed()); |
- // Lock mouse again, make sure it works with no bubble |
+ // Lock mouse again, make sure it works with no bubble. |
ASSERT_TRUE(ui_test_utils::SendKeyPressAndWait( |
browser(), ui::VKEY_1, false, false, false, false, |
chrome::NOTIFICATION_MOUSE_LOCK_CHANGED, |
@@ -287,14 +289,14 @@ IN_PROC_BROWSER_TEST_F(FullscreenControllerInteractiveTest, |
ASSERT_TRUE(IsMouseLocked()); |
ASSERT_FALSE(IsFullscreenBubbleDisplayed()); |
- // Unlock the mouse again by target |
+ // Unlock the mouse again by target. |
ASSERT_TRUE(ui_test_utils::SendKeyPressAndWait( |
browser(), ui::VKEY_U, false, false, false, false, |
chrome::NOTIFICATION_MOUSE_LOCK_CHANGED, |
content::NotificationService::AllSources())); |
ASSERT_FALSE(IsMouseLocked()); |
- // Lock from target, not user gesture, make sure it works |
+ // Lock from target, not user gesture, make sure it works. |
ASSERT_TRUE(ui_test_utils::SendKeyPressAndWait( |
browser(), ui::VKEY_D, false, false, false, false, |
chrome::NOTIFICATION_MOUSE_LOCK_CHANGED, |
@@ -302,14 +304,14 @@ IN_PROC_BROWSER_TEST_F(FullscreenControllerInteractiveTest, |
ASSERT_TRUE(IsMouseLocked()); |
ASSERT_FALSE(IsFullscreenBubbleDisplayed()); |
- // Unlock by escape |
+ // Unlock by escape. |
ASSERT_TRUE(ui_test_utils::SendKeyPressAndWait( |
browser(), ui::VKEY_ESCAPE, false, false, false, false, |
chrome::NOTIFICATION_MOUSE_LOCK_CHANGED, |
content::NotificationService::AllSources())); |
ASSERT_FALSE(IsMouseLocked()); |
- // Lock the mouse with a user gesture, make sure we see bubble again |
+ // Lock the mouse with a user gesture, make sure we see bubble again. |
ASSERT_TRUE(ui_test_utils::SendKeyPressAndWait( |
browser(), ui::VKEY_1, false, false, false, false, |
chrome::NOTIFICATION_MOUSE_LOCK_CHANGED, |
@@ -318,3 +320,70 @@ IN_PROC_BROWSER_TEST_F(FullscreenControllerInteractiveTest, |
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()); |
+ } |
+} |
+ |