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