diff options
Diffstat (limited to 'chrome/test/functional/fullscreen_mouselock.py')
-rwxr-xr-x | chrome/test/functional/fullscreen_mouselock.py | 618 |
1 files changed, 0 insertions, 618 deletions
diff --git a/chrome/test/functional/fullscreen_mouselock.py b/chrome/test/functional/fullscreen_mouselock.py deleted file mode 100755 index 6cb5b97..0000000 --- a/chrome/test/functional/fullscreen_mouselock.py +++ /dev/null @@ -1,618 +0,0 @@ -#!/usr/bin/env python -# Copyright (c) 2012 The Chromium Authors. All rights reserved. -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. - -import logging -import os -import re -import shutil -import time - -import pyauto_functional # Must be imported before pyauto -import pyauto -import test_utils -from selenium.webdriver.common.action_chains import ActionChains -from selenium.common.exceptions import WebDriverException -from selenium.webdriver.common.keys import Keys -from webdriver_pages import settings - - -class FullscreenMouselockTest(pyauto.PyUITest): - """TestCase for Fullscreen and Mouse Lock.""" - - def setUp(self): - pyauto.PyUITest.setUp(self) - self._driver = self.NewWebDriver() - # Get the hostname pattern (e.g. http://127.0.0.1:57622). - self._hostname_pattern = ( - re.sub('/files/$', '', self.GetHttpURLForDataPath(''))) - - def Debug(self): - """Test method for experimentation. - - This method will not run automatically. - """ - page = settings.ContentSettingsPage.FromNavigation(self._driver) - import pdb - pdb.set_trace() - - def ExtraChromeFlags(self): - """Ensures Chrome is launched with custom flags. - - Returns: - A list of extra flags to pass to Chrome when it is launched. - """ - # Extra flag needed by scroll performance tests. - return super(FullscreenMouselockTest, - self).ExtraChromeFlags() + ['--enable-pointer-lock'] - - def testFullScreenMouseLockHooks(self): - """Verify fullscreen and mouse lock automation hooks work.""" - self.NavigateToURL(self.GetHttpURLForDataPath( - 'fullscreen_mouselock', 'fullscreen_mouselock.html')) - - # Starting off we shouldn't be fullscreen - self.assertFalse(self.IsFullscreenForBrowser()) - self.assertFalse(self.IsFullscreenForTab()) - - # Go fullscreen - self._driver.find_element_by_id('enterFullscreen').click() - self.assertTrue(self.WaitUntil(self.IsFullscreenForTab)) - - # Bubble should be up prompting to allow fullscreen - self.assertTrue(self.IsFullscreenBubbleDisplayed()) - self.assertTrue(self.IsFullscreenBubbleDisplayingButtons()) - self.assertTrue(self.IsFullscreenPermissionRequested()) - - # Accept bubble, it should go away. - self.AcceptCurrentFullscreenOrMouseLockRequest() - self.assertTrue(self.WaitUntil( - lambda: not self.IsFullscreenBubbleDisplayingButtons())) - - # Try to lock mouse, it won't lock yet but permision will be requested. - self.assertFalse(self.IsMouseLocked()) - self._driver.find_element_by_id('lockMouse1').click() - self.assertTrue(self.WaitUntil(self.IsMouseLockPermissionRequested)) - self.assertFalse(self.IsMouseLocked()) - - # Deny mouse lock. - self.DenyCurrentFullscreenOrMouseLockRequest() - self.assertTrue(self.WaitUntil( - lambda: not self.IsFullscreenBubbleDisplayingButtons())) - self.assertFalse(self.IsMouseLocked()) - - # Try mouse lock again, and accept it. - self._driver.find_element_by_id('lockMouse1').click() - self.assertTrue(self.WaitUntil(self.IsMouseLockPermissionRequested)) - self.AcceptCurrentFullscreenOrMouseLockRequest() - self.assertTrue(self.WaitUntil(self.IsMouseLocked)) - - # The following doesn't work - as sending the key to the input field isn't - # picked up by the browser. :( Need an alternative way. - # - # # Ideally we wouldn't target a specific element, we'd just send keys to - # # whatever the current keyboard focus was. - # keys_target = driver.find_element_by_id('sendKeysTarget') - # - # # ESC key should exit fullscreen and mouse lock. - # - # print "# ESC key should exit fullscreen and mouse lock." - # keys_target.send_keys(Keys.ESCAPE) - # self.assertTrue(self.WaitUntil(lambda: not self.IsFullscreenForBrowser())) - # self.assertTrue(self.WaitUntil(lambda: not self.IsFullscreenForTab())) - # self.assertTrue(self.WaitUntil(lambda: not self.IsMouseLocked())) - # - # # Check we can go browser fullscreen - # print "# Check we can go browser fullscreen" - # keys_target.send_keys(Keys.F11) - # self.assertTrue(self.WaitUntil(self.IsFullscreenForBrowser)) - - def _LaunchFSAndExpectPrompt(self, button_action='enterFullscreen'): - """Helper function to launch fullscreen and expect a prompt. - - Fullscreen is initiated and a bubble prompt appears asking to allow or - cancel from fullscreen mode. The actual fullscreen mode doesn't take place - until after approving the prompt. - - If the helper is not successful then the test will fail. - - Args: - button_action: The button id to click to initiate an action. Default is to - click enterFullscreen. - """ - self.NavigateToURL(self.GetHttpURLForDataPath( - 'fullscreen_mouselock', 'fullscreen_mouselock.html')) - # Should not be in fullscreen mode during initial launch. - self.assertFalse(self.IsFullscreenForBrowser()) - self.assertFalse(self.IsFullscreenForTab()) - # Go into fullscreen mode. - self._driver.find_element_by_id(button_action).click() - self.assertTrue(self.WaitUntil(self.IsFullscreenForTab)) - # Bubble should display prompting to allow fullscreen. - self.assertTrue(self.IsFullscreenPermissionRequested()) - - def _InitiateBrowserFullscreen(self): - """Helper function that initiates browser fullscreen.""" - self.NavigateToURL(self.GetHttpURLForDataPath( - 'fullscreen_mouselock', 'fullscreen_mouselock.html')) - # Should not be in fullscreen mode during initial launch. - self.assertFalse(self.IsFullscreenForBrowser()) - self.assertFalse(self.IsFullscreenForTab()) - # Initiate browser fullscreen. - self.ApplyAccelerator(pyauto.IDC_FULLSCREEN) - self.assertTrue(self.WaitUntil(self.IsFullscreenForBrowser)) - self.assertTrue(self.WaitUntil(lambda: not self.IsFullscreenForTab())) - self.assertTrue(self.WaitUntil(lambda: not self.IsMouseLocked())) - - def _InitiateTabFullscreen(self): - """Helper function that initiates tab fullscreen.""" - self.NavigateToURL(self.GetHttpURLForDataPath( - 'fullscreen_mouselock', 'fullscreen_mouselock.html')) - # Initiate tab fullscreen. - self._driver.find_element_by_id('enterFullscreen').click() - self.assertTrue(self.WaitUntil(self.IsFullscreenForTab)) - - def _AcceptFullscreenOrMouseLockRequest(self): - """Helper function to accept fullscreen or mouse lock request.""" - self.AcceptCurrentFullscreenOrMouseLockRequest() - self.assertTrue(self.WaitUntil( - lambda: not self.IsFullscreenBubbleDisplayingButtons())) - - def _EnableFullscreenAndMouseLockMode(self): - """Helper function to enable fullscreen and mouse lock mode.""" - self._LaunchFSAndExpectPrompt(button_action='enterFullscreenAndLockMouse1') - # Allow fullscreen. - self.AcceptCurrentFullscreenOrMouseLockRequest() - # The wait is needed due to crbug.com/123396. Should be able to click the - # fullscreen and mouselock button and be both accepted in a single action. - self.assertTrue(self.WaitUntil(self.IsMouseLockPermissionRequested)) - # Allow mouse lock. - self.AcceptCurrentFullscreenOrMouseLockRequest() - self.assertTrue(self.WaitUntil(self.IsMouseLocked)) - - def _EnableMouseLockMode(self, button_action='lockMouse1'): - """Helper function to enable mouse lock mode. - - Args: - button_action: The button id to click to initiate an action. Default is to - click lockMouse1. - """ - self._driver.find_element_by_id(button_action).click() - self.assertTrue(self.WaitUntil(self.IsMouseLockPermissionRequested)) - self.AcceptCurrentFullscreenOrMouseLockRequest() - self.assertTrue(self.IsMouseLocked()) - - def _EnableAndReturnLockMouseResult(self): - """Helper function to enable and return mouse lock result.""" - self.NavigateToURL(self.GetHttpURLForDataPath( - 'fullscreen_mouselock', 'fullscreen_mouselock.html')) - self._driver.find_element_by_id('lockMouse2').click() - self.assertTrue( - self.WaitUntil(self.IsMouseLockPermissionRequested)) - self.AcceptCurrentFullscreenOrMouseLockRequest() - # Waits until lock_result gets 'success' or 'failure'. - return self._driver.execute_script('return lock_result') - - def _ClickAnchorLink(self): - """Clicks the anchor link until it's successfully clicked. - - Clicks on the anchor link and compares the js |clicked_elem_ID| variabled - with the anchor id. Returns True if the link is clicked. - """ - element_id = 'anchor' - # Catch WebDriverException: u'Element is not clickable at point (185.5, - # 669.5). Instead another element would receive the click. - try: - self._driver.find_element_by_id(element_id).click() - except WebDriverException: - return False - return self._driver.execute_script('return clicked_elem_ID') == element_id - - def testPrefsForFullscreenAllowed(self): - """Verify prefs when fullscreen is allowed.""" - self._LaunchFSAndExpectPrompt() - self._AcceptFullscreenOrMouseLockRequest() - content_settings = ( - self.GetPrefsInfo().Prefs()['profile']['content_settings']) - self.assertEqual( - {self._hostname_pattern + ',*': {'fullscreen': 1}}, # Allow hostname. - content_settings['pattern_pairs'], - msg='Saved hostname pattern does not match expected pattern.') - - def testPrefsForFullscreenExit(self): - """Verify prefs is empty when exit fullscreen mode before allowing.""" - self._LaunchFSAndExpectPrompt() - self._driver.find_element_by_id('exitFullscreen').click() - # Verify exit from fullscreen mode. - self.assertTrue(self.WaitUntil(lambda: not self.IsFullscreenForTab())) - content_settings = ( - self.GetPrefsInfo().Prefs()['profile']['content_settings']) - self.assertEqual( - {}, content_settings['pattern_pairs'], - msg='Patterns saved when there should be none.') - - def testPatternsForFSAndML(self): - """Verify hostname pattern and behavior for allowed mouse cursor lock. - - To lock the mouse, the browser needs to be in fullscreen mode. - """ - self._EnableFullscreenAndMouseLockMode() - self._EnableMouseLockMode() - expected_pattern = ( - {self._hostname_pattern + ',*': {'fullscreen': 1, 'mouselock': 1}}) - content_settings = ( - self.GetPrefsInfo().Prefs()['profile']['content_settings']) - self.assertEqual( - expected_pattern, content_settings['pattern_pairs'], - msg='Saved hostname and behavior patterns do not match expected.') - - def testPatternsForAllowMouseLock(self): - """Verify hostname pattern and behavior for allowed mouse cursor lock. - - Enable fullscreen mode and enable mouse lock separately. - """ - self._LaunchFSAndExpectPrompt() - self.AcceptCurrentFullscreenOrMouseLockRequest() - self._EnableMouseLockMode() - expected_pattern = ( - {self._hostname_pattern + ',*': {'fullscreen': 1, 'mouselock': 1}}) - content_settings = ( - self.GetPrefsInfo().Prefs()['profile']['content_settings']) - self.assertEqual( - expected_pattern, content_settings['pattern_pairs'], - msg='Saved hostname and behavior patterns do not match expected.') - - def testNoMouseLockRequest(self): - """Verify mouse lock request does not appear. - - When allowing all sites to disable the mouse cursor, the mouse lock request - bubble should not show. The mouse cursor should be automatically disabled - when clicking on a disable mouse button. - """ - # Allow all sites to disable mouse cursor. - self.SetPrefs(pyauto.kDefaultContentSettings, {u'mouselock': 1}) - self._LaunchFSAndExpectPrompt() - # Allow for fullscreen mode. - self._AcceptFullscreenOrMouseLockRequest() - self._driver.set_script_timeout(2) - # Receive callback status (success or failure) from javascript that the - # click has registered and the mouse lock status has changed. - lock_result = self._driver.execute_async_script( - 'lockMouse1(arguments[arguments.length - 1])') - self.assertEqual(lock_result, 'success', msg='Mouse lock unsuccessful.') - self.assertTrue(self.WaitUntil( - lambda: not self.IsMouseLockPermissionRequested())) - self.assertTrue(self.IsMouseLocked()) - - def testUnableToLockMouse(self): - """Verify mouse lock is disabled. - - When not allowing any site to disable the mouse cursor, the mouse lock - request bubble should not show and the mouse cursor should not be disabled. - """ - # Do not allow any site to disable mouse cursor. - self.SetPrefs(pyauto.kDefaultContentSettings, {u'mouselock': 2}) - self._LaunchFSAndExpectPrompt() - # Allow for fullscreen mode. - self._AcceptFullscreenOrMouseLockRequest() - self._driver.set_script_timeout(2) - # Receive callback status (success or failure) from javascript that the - # click has registered and the mouse lock status has changed. - lock_result = self._driver.execute_async_script( - 'lockMouse1(arguments[arguments.length - 1])') - self.assertEqual(lock_result, 'failure', msg='Mouse locked unexpectedly.') - self.assertTrue(self.WaitUntil( - lambda: not self.IsMouseLockPermissionRequested())) - self.assertTrue(self.WaitUntil(lambda: not self.IsMouseLocked())) - - def testEnterTabFSWhileInBrowserFS(self): - """Verify able to enter into tab fullscreen while in browser fullscreen.""" - self._InitiateBrowserFullscreen() - # Initiate tab fullscreen. - self._driver.find_element_by_id('enterFullscreen').click() - self.assertTrue(self.WaitUntil(lambda: self.IsFullscreenForTab())) - self.assertTrue(self.WaitUntil(lambda: not self.IsMouseLocked())) - - def testMouseLockInBrowserFS(self): - """Verify mouse lock in browser fullscreen requires allow prompt.""" - self._InitiateBrowserFullscreen() - self._driver.set_script_timeout(2) - self._driver.execute_script('lockMouse1AndSetLockResult()') - # Bubble should display prompting to allow mouselock. - self.assertTrue(self.WaitUntil(self.IsMouseLockPermissionRequested)) - self.AcceptCurrentFullscreenOrMouseLockRequest() - # Waits until lock_result gets 'success' or 'failure'. - lock_result = self._driver.execute_script('return lock_result') - self.assertEqual(lock_result, 'success', - msg='Mouse was not locked in browser fullscreen.') - - def testNoMouseLockWhenCancelFS(self): - """Verify mouse lock breaks when canceling tab fullscreen. - - This test uses javascript to initiate exit of tab fullscreen after mouse - lock success callback. - """ - self._LaunchFSAndExpectPrompt() - self._driver.set_script_timeout(2) - lock_result = self._driver.execute_script('lockMouse1AndSetLockResult()') - self.assertTrue( - self.WaitUntil(lambda: self.IsMouseLockPermissionRequested())) - self.AcceptCurrentFullscreenOrMouseLockRequest() - self.assertTrue(self.WaitUntil(self.IsMouseLocked)) - # Waits until lock_result gets 'success' or 'failure'. - lock_result = self._driver.execute_script('return lock_result') - self.assertEqual( - lock_result, 'success', msg='Mouse is not locked.') - self._driver.execute_script('document.webkitCancelFullScreen()') - self.assertTrue(self.WaitUntil(lambda: not self.IsFullscreenForTab()), - msg='Tab is still in fullscreen.') - self.assertTrue(self.WaitUntil(lambda: not self.IsMouseLocked()), - msg='Mouse is still locked after exiting fullscreen.') - - def testNoTabFSExitWhenJSExitMouseLock(self): - """Verify tab fullscreen does not exit when javascript init mouse lock exit. - - This test uses javascript to initiate exit of mouse lock after mouse - lock success callback. - """ - self._LaunchFSAndExpectPrompt() - self._EnableMouseLockMode() - self._driver.execute_script('navigator.webkitPointer.unlock()') - self.WaitUntil(lambda: not self.IsMouseLocked()) - self.assertTrue(self.IsFullscreenForTab(), msg='Tab fullscreen was lost.') - - def testMouseLockExitWhenAlertDialogShow(self): - """Verify mouse lock breaks when alert dialog appears.""" - self._LaunchFSAndExpectPrompt() - self._EnableMouseLockMode() - # Need to catch the exception here since the alert dialog raises - # a WebDriverException due to a modal dialog. - from selenium.common.exceptions import WebDriverException - try: - self._driver.execute_script('alert("A modal dialog")') - except WebDriverException: - pass - - self.assertTrue(self.WaitUntil(lambda: self.IsFullscreenForTab()), - msg='Tab fullscreen was lost.') - self.assertTrue(self.WaitUntil(lambda: not self.IsMouseLocked()), - msg='Mouse is still locked') - - def testMouseLockExitWhenBrowserLoseFocus(self): - """Verify mouse lock breaks when browser loses focus. - - Mouse lock breaks when the focus is placed on another new window. - """ - self._LaunchFSAndExpectPrompt() - self.AcceptCurrentFullscreenOrMouseLockRequest() - # Open a new window to shift focus away. - self.OpenNewBrowserWindow(True) - self.assertTrue(self.WaitUntil(lambda: self.IsFullscreenForTab())) - self.assertTrue(self.WaitUntil(lambda: not self.IsMouseLocked()), - msg='Mouse lock did not break when browser lost focus.') - - def testMouseLockLostOnReload(self): - """Verify mouse lock is lost on page reload.""" - self.NavigateToURL(self.GetHttpURLForDataPath( - 'fullscreen_mouselock', 'fullscreen_mouselock.html')) - self._EnableMouseLockMode() - self.ReloadActiveTab() - self.assertTrue(self.WaitUntil(lambda: not self.IsMouseLocked()), - msg='Mouse lock did not break when page is reloaded.') - - def testNoMLBubbleWhenTabLoseFocus(self): - """Verify mouse lock bubble goes away when tab loses focus.""" - self.NavigateToURL(self.GetHttpURLForDataPath( - 'fullscreen_mouselock', 'fullscreen_mouselock.html')) - self._driver.find_element_by_id('lockMouse1').click() - self.assertTrue(self.WaitUntil(self.IsMouseLockPermissionRequested)) - self.AppendTab(pyauto.GURL('chrome://newtab')) - self.assertTrue(self.WaitUntil( - lambda: not self.IsFullscreenBubbleDisplayingButtons()), - msg='Mouse lock bubble did not clear when tab lost focus.') - - def testTabFSExitWhenNavBackToPrevPage(self): - """Verify tab fullscreen exit when navigating back to previous page. - - This test navigates to a new page while in tab fullscreen mode by using - GoBack() to navigate to the previous google.html page. - """ - self.NavigateToURL(self.GetHttpURLForDataPath('google', 'google.html')) - self._InitiateTabFullscreen() - self.TabGoBack() - self.assertFalse( - self.IsFullscreenForTab(), - msg='Tab fullscreen did not exit when navigating to a new page.') - - def testTabFSExitWhenNavToNewPage(self): - """Verify tab fullscreen exit when navigating to a new website. - - This test navigates to a new website while in tab fullscreen. - """ - self._InitiateTabFullscreen() - self.NavigateToURL(self.GetHttpURLForDataPath('google', 'google.html')) - self.assertFalse( - self.IsFullscreenForTab(), - msg='Tab fullscreen did not exit when navigating to a new website.') - - def testTabFSDoesNotExitForAnchorLinks(self): - """Verify tab fullscreen does not exit for anchor links. - - Tab fullscreen should not exit when following a link to the same page such - as example.html#anchor. - """ - self._InitiateTabFullscreen() - self.assertTrue(self.WaitUntil(self._ClickAnchorLink)) - self.assertTrue( - self.WaitUntil(self.IsFullscreenForTab), - msg='Tab fullscreen should not exit when clicking on an anchor link.') - - def testMLExitWhenNavBackToPrevPage(self): - """Verify mouse lock exit when navigating back to previous page. - - This test navigates to a new page while mouse lock is activated by using - GoBack() to navigate to the previous google.html page. - """ - self.NavigateToURL(self.GetHttpURLForDataPath('google', 'google.html')) - lock_result = self._EnableAndReturnLockMouseResult() - self.assertEqual( - lock_result, 'success', msg='Mouse is not locked.') - self.TabGoBack() - self.assertFalse( - self.IsMouseLocked(), - msg='Mouse lock did not exit when navigating to the prev page.') - - def testMLExitWhenNavToNewPage(self): - """Verify mouse lock exit when navigating to a new website.""" - lock_result = self._EnableAndReturnLockMouseResult() - self.assertEqual( - lock_result, 'success', msg='Mouse is not locked.') - self.NavigateToURL(self.GetHttpURLForDataPath('google', 'google.html')) - self.assertFalse( - self.IsMouseLocked(), - msg='Mouse lock did not exit when navigating to a new website.') - - def testMLDoesNotExitForAnchorLinks(self): - """Verify mouse lock does not exit for anchor links. - - Mouse lock should not exist when following a link to the same page such as - example.html#anchor. - """ - lock_result = self._EnableAndReturnLockMouseResult() - self.assertEqual( - lock_result, 'success', msg='Mouse is not locked.') - ActionChains(self._driver).move_to_element( - self._driver.find_element_by_id('anchor')).click().perform() - self.assertTrue(self.WaitUntil(self.IsMouseLocked), - msg='Mouse lock broke when clicking on an anchor link.') - - def ExitTabFSToBrowserFS(self): - """Verify exiting tab fullscreen leaves browser in browser fullscreen. - - This test is semi-automated. - - The browser initiates browser fullscreen, then initiates tab fullscreen. The - test verifies that existing tab fullscreen by simulating ESC key press or - clicking the js function to exitFullscreen() will exit the tab fullscreen - leaving browser fullscreen intact. - """ - self._InitiateBrowserFullscreen() - # Initiate tab fullscreen. - self._driver.find_element_by_id('enterFullscreen').click() - self.assertTrue(self.WaitUntil(lambda: self.IsFullscreenForTab())) - # Require manual intervention to send ESC key due to crbug.com/123930. - # TODO(dyu): Update to a full test once associated bug is fixed. - logging.info('Press ESC key to exit tab fullscreen.') - time.sleep(5) - self.assertTrue(self.WaitUntil(lambda: not self.IsFullscreenForTab())) - self.assertTrue(self.WaitUntil(lambda: self.IsFullscreenForBrowser()), - msg='Not in browser fullscreen mode.') - - self._driver.find_element_by_id('enterFullscreen').click() - self.assertTrue(self.WaitUntil(lambda: self.IsFullscreenForTab())) - # Exit tab fullscreen by clicking button exitFullscreen(). - self._driver.find_element_by_id('exitFullscreen').click() - self.assertTrue(self.WaitUntil(lambda: not self.IsFullscreenForTab())) - self.assertTrue(self.WaitUntil(lambda: self.IsFullscreenForBrowser()), - msg='Not in browser fullscreen mode.') - - def F11KeyExitsTabAndBrowserFS(self): - """Verify existing tab fullscreen exits all fullscreen modes. - - This test is semi-automated. - - The browser initiates browser fullscreen, then initiates tab fullscreen. The - test verifies that existing tab fullscreen by simulating F11 key press or - CMD + SHIFT + F keys on the Mac will exit the tab fullscreen and the - browser fullscreen. - """ - self._InitiateBrowserFullscreen() - # Initiate tab fullscreen. - self._driver.find_element_by_id('enterFullscreen').click() - self.assertTrue(self.WaitUntil(lambda: self.IsFullscreenForTab())) - # Require manual intervention to send F11 key due to crbug.com/123930. - # TODO(dyu): Update to a full test once associated bug is fixed. - logging.info('Press F11 key to exit tab fullscreen.') - time.sleep(5) - self.assertTrue(self.WaitUntil(lambda: not self.IsFullscreenForTab())) - self.assertTrue(self.WaitUntil(lambda: not self.IsFullscreenForBrowser()), - msg='Browser is in fullscreen mode.') - - def SearchForTextOutsideOfContainer(self): - """Verify text outside of container is not visible when fullscreen. - - This test is semi-automated. - - Verify this test manually until there is a way to find text on screen - without using FindInPage(). - - The text that is outside of the fullscreen container should only be visible - when fullscreen is off. The text should not be visible while in fullscreen - mode. - """ - self.NavigateToURL(self.GetHttpURLForDataPath( - 'fullscreen_mouselock', 'fullscreen_mouselock.html')) - # Should not be in fullscreen mode during initial launch. - self.assertFalse(self.IsFullscreenForBrowser()) - self.assertFalse(self.IsFullscreenForTab()) - self.assertTrue( - self.WaitUntil(lambda: self.FindInPage( - 'This text is outside of the container')['match_count'], - expect_retval=1)) - # Go into fullscreen mode. - self._driver.find_element_by_id('enterFullscreen').click() - self.assertTrue(self.WaitUntil(self.IsFullscreenForTab)) - time.sleep(5) - # TODO(dyu): find a way to verify on screen text instead of using - # FindInPage() which searches for text in the HTML. - - def SameMouseLockMovement(self): - """Verify the correct feel of mouse movement data when mouse is locked. - - This test is semi-automated. - - This test loads the same web page in two different tabs while in mouse lock - mode. Each tab loads the web page from a different URL (e.g. by loading it - from a localhost server and a file url). The test verifies - that the mouse lock movements work the same in both - tabs. - """ - url1 = self.GetHttpURLForDataPath( - 'fullscreen_mouselock', 'fullscreen_mouselock.html') - url2 = self.GetFileURLForDataPath( - 'fullscreen_mouselock', 'fullscreen_mouselock.html') - tab2 = 'f1-4' - self.NavigateToURL(url1) - self.RunCommand(pyauto.IDC_NEW_TAB) # Open new tab. - self.NavigateToURL(url2, 0, 1) - self._driver.switch_to_window(tab2) - self._EnableMouseLockMode() # Lock mouse in tab 2. - raw_input('Manually move the mouse cursor on the page in tab 2. Shift+Tab \ - into tab 1, click on lockMouse1() button, and move the mouse \ - cursor on the page in tab 1. Verify mouse movement is smooth.') - - def MouseEventsIndependentOfExitBubble(self): - """Verify mouse events are independent of the exit FS exit bubble for ML. - - Mouse movement events should work immediately when mouse lock is activated. - The events should not be blocked waiting for the exit instruction bubble to - clear. - """ - self.NavigateToURL(self.GetHttpURLForDataPath( - 'fullscreen_mouselock', 'fullscreen_mouselock.html')) - # Should not be in fullscreen mode during initial launch. - self.assertFalse(self.IsFullscreenForBrowser()) - self.assertFalse(self.IsFullscreenForTab()) - # Go into fullscreen mode. - self._driver.find_element_by_id('enterFullscreen').click() - self.assertTrue(self.WaitUntil(self.IsFullscreenForTab)) - self._EnableMouseLockMode() - raw_input( - '1. Move the mouse, see movement data being received by the page.\ - 2. Press ESC key.\ - 3. Lock the mouse without going fullscreen. Click lockMouse1() button.\ - Verify: The mouse movement events should work immediately.') - -if __name__ == '__main__': - pyauto_functional.Main() |