| OLD | NEW |
| 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 from telemetry.core import util | 5 from telemetry.core import util |
| 6 from telemetry.page.actions import seek | 6 from telemetry.page.actions import seek |
| 7 from telemetry.unittest import tab_test_case | 7 from telemetry.unittest import tab_test_case |
| 8 from telemetry.unittest import test | |
| 9 | 8 |
| 10 | 9 |
| 11 AUDIO_1_SEEKED_CHECK = 'window.__hasEventCompleted("#audio_1", "seeked");' | 10 AUDIO_1_SEEKED_CHECK = 'window.__hasEventCompleted("#audio_1", "seeked");' |
| 12 VIDEO_1_SEEKED_CHECK = 'window.__hasEventCompleted("#video_1", "seeked");' | 11 VIDEO_1_SEEKED_CHECK = 'window.__hasEventCompleted("#video_1", "seeked");' |
| 13 | 12 |
| 14 | 13 |
| 15 class SeekActionTest(tab_test_case.TabTestCase): | 14 class SeekActionTest(tab_test_case.TabTestCase): |
| 16 | 15 |
| 17 def setUp(self): | 16 def setUp(self): |
| 18 tab_test_case.TabTestCase.setUp(self) | 17 tab_test_case.TabTestCase.setUp(self) |
| 19 self._browser.SetHTTPServerDirectories(util.GetUnittestDataDir()) | 18 self.Navigate('video_test.html') |
| 20 self._tab.Navigate(self._browser.http_server.UrlOf('video_test.html')) | |
| 21 self._tab.WaitForDocumentReadyStateToBeComplete() | |
| 22 | 19 |
| 23 @test.Disabled('chromeos') | |
| 24 def testSeekWithNoSelector(self): | 20 def testSeekWithNoSelector(self): |
| 25 """Tests that with no selector Seek action seeks first media element.""" | 21 """Tests that with no selector Seek action seeks first media element.""" |
| 26 data = {'wait_for_seeked': True, 'seek_time': 1} | 22 data = {'wait_for_seeked': True, 'seek_time': 1} |
| 27 action = seek.SeekAction(data) | 23 action = seek.SeekAction(data) |
| 28 action.WillRunAction(None, self._tab) | 24 action.WillRunAction(None, self._tab) |
| 29 action.RunAction(None, self._tab, None) | 25 action.RunAction(None, self._tab, None) |
| 30 # Assert only first video has played. | 26 # Assert only first video has played. |
| 31 self.assertTrue(self._tab.EvaluateJavaScript(VIDEO_1_SEEKED_CHECK)) | 27 self.assertTrue(self._tab.EvaluateJavaScript(VIDEO_1_SEEKED_CHECK)) |
| 32 self.assertFalse(self._tab.EvaluateJavaScript(AUDIO_1_SEEKED_CHECK)) | 28 self.assertFalse(self._tab.EvaluateJavaScript(AUDIO_1_SEEKED_CHECK)) |
| 33 | 29 |
| 34 @test.Disabled('chromeos') | |
| 35 def testSeekWithVideoSelector(self): | 30 def testSeekWithVideoSelector(self): |
| 36 """Tests that Seek action seeks video element matching selector.""" | 31 """Tests that Seek action seeks video element matching selector.""" |
| 37 data = {'selector': '#video_1', 'wait_for_seeked': True, 'seek_time': 1} | 32 data = {'selector': '#video_1', 'wait_for_seeked': True, 'seek_time': 1} |
| 38 action = seek.SeekAction(data) | 33 action = seek.SeekAction(data) |
| 39 action.WillRunAction(None, self._tab) | 34 action.WillRunAction(None, self._tab) |
| 40 # Both videos not playing before running action. | 35 # Both videos not playing before running action. |
| 41 self.assertFalse(self._tab.EvaluateJavaScript(VIDEO_1_SEEKED_CHECK)) | 36 self.assertFalse(self._tab.EvaluateJavaScript(VIDEO_1_SEEKED_CHECK)) |
| 42 self.assertFalse(self._tab.EvaluateJavaScript(AUDIO_1_SEEKED_CHECK)) | 37 self.assertFalse(self._tab.EvaluateJavaScript(AUDIO_1_SEEKED_CHECK)) |
| 43 action.RunAction(None, self._tab, None) | 38 action.RunAction(None, self._tab, None) |
| 44 # Assert only video matching selector has played. | 39 # Assert only video matching selector has played. |
| 45 self.assertTrue(self._tab.EvaluateJavaScript(VIDEO_1_SEEKED_CHECK)) | 40 self.assertTrue(self._tab.EvaluateJavaScript(VIDEO_1_SEEKED_CHECK)) |
| 46 self.assertFalse(self._tab.EvaluateJavaScript(AUDIO_1_SEEKED_CHECK)) | 41 self.assertFalse(self._tab.EvaluateJavaScript(AUDIO_1_SEEKED_CHECK)) |
| 47 | 42 |
| 48 @test.Disabled('chromeos') | |
| 49 def testSeekWithAllSelector(self): | 43 def testSeekWithAllSelector(self): |
| 50 """Tests that Seek action seeks all video elements with selector='all'.""" | 44 """Tests that Seek action seeks all video elements with selector='all'.""" |
| 51 data = {'selector': 'all', 'wait_for_seeked': True, 'seek_time': 1} | 45 data = {'selector': 'all', 'wait_for_seeked': True, 'seek_time': 1} |
| 52 action = seek.SeekAction(data) | 46 action = seek.SeekAction(data) |
| 53 action.WillRunAction(None, self._tab) | 47 action.WillRunAction(None, self._tab) |
| 54 # Both videos not playing before running action. | 48 # Both videos not playing before running action. |
| 55 self.assertFalse(self._tab.EvaluateJavaScript(VIDEO_1_SEEKED_CHECK)) | 49 self.assertFalse(self._tab.EvaluateJavaScript(VIDEO_1_SEEKED_CHECK)) |
| 56 self.assertFalse(self._tab.EvaluateJavaScript(AUDIO_1_SEEKED_CHECK)) | 50 self.assertFalse(self._tab.EvaluateJavaScript(AUDIO_1_SEEKED_CHECK)) |
| 57 action.RunAction(None, self._tab, None) | 51 action.RunAction(None, self._tab, None) |
| 58 # Assert all media elements played. | 52 # Assert all media elements played. |
| 59 self.assertTrue(self._tab.EvaluateJavaScript(VIDEO_1_SEEKED_CHECK)) | 53 self.assertTrue(self._tab.EvaluateJavaScript(VIDEO_1_SEEKED_CHECK)) |
| 60 self.assertTrue(self._tab.EvaluateJavaScript(AUDIO_1_SEEKED_CHECK)) | 54 self.assertTrue(self._tab.EvaluateJavaScript(AUDIO_1_SEEKED_CHECK)) |
| 61 | 55 |
| 62 @test.Disabled('chromeos') # http://crbug.com/273887 | |
| 63 def testSeekWaitForSeekTimeout(self): | 56 def testSeekWaitForSeekTimeout(self): |
| 64 """Tests that wait_for_seeked timeouts if video does not seek.""" | 57 """Tests that wait_for_seeked timeouts if video does not seek.""" |
| 65 data = {'selector': '#video_1', | 58 data = {'selector': '#video_1', |
| 66 'wait_for_seeked': True, | 59 'wait_for_seeked': True, |
| 67 'wait_timeout': 1, | 60 'wait_timeout': 1, |
| 68 'seek_time': 1} | 61 'seek_time': 1} |
| 69 action = seek.SeekAction(data) | 62 action = seek.SeekAction(data) |
| 70 action.WillRunAction(None, self._tab) | 63 action.WillRunAction(None, self._tab) |
| 71 self._tab.EvaluateJavaScript('document.getElementById("video_1").src = ""') | 64 self._tab.EvaluateJavaScript('document.getElementById("video_1").src = ""') |
| 72 self.assertFalse(self._tab.EvaluateJavaScript(VIDEO_1_SEEKED_CHECK)) | 65 self.assertFalse(self._tab.EvaluateJavaScript(VIDEO_1_SEEKED_CHECK)) |
| 73 self.assertRaises(util.TimeoutException, action.RunAction, None, self._tab, | 66 self.assertRaises(util.TimeoutException, action.RunAction, None, self._tab, |
| 74 None) | 67 None) |
| 75 | 68 |
| 76 def testSeekWithoutSeekTime(self): | 69 def testSeekWithoutSeekTime(self): |
| 77 """Tests that seek action fails with no seek time.""" | 70 """Tests that seek action fails with no seek time.""" |
| 78 data = {'wait_for_seeked': True} | 71 data = {'wait_for_seeked': True} |
| 79 action = seek.SeekAction(data) | 72 action = seek.SeekAction(data) |
| 80 action.WillRunAction(None, self._tab) | 73 action.WillRunAction(None, self._tab) |
| 81 self.assertRaises(AssertionError, action.RunAction, None, self._tab, | 74 self.assertRaises(AssertionError, action.RunAction, None, self._tab, |
| 82 None) | 75 None) |
| OLD | NEW |