| Index: tools/telemetry/telemetry/page/actions/media_action.py
|
| diff --git a/tools/telemetry/telemetry/page/actions/media_action.py b/tools/telemetry/telemetry/page/actions/media_action.py
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..a55a3d729702163b25179dc8940732c18f2d0006
|
| --- /dev/null
|
| +++ b/tools/telemetry/telemetry/page/actions/media_action.py
|
| @@ -0,0 +1,46 @@
|
| +# Copyright (c) 2013 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.
|
| +
|
| +"""Common media action functions."""
|
| +
|
| +import os
|
| +
|
| +from telemetry.core import util
|
| +from telemetry.page.actions import page_action
|
| +
|
| +
|
| +class MediaAction(page_action.PageAction):
|
| + def __init__(self, attributes=None):
|
| + super(MediaAction, self).__init__(attributes)
|
| +
|
| + def WillRunAction(self, page, tab):
|
| + """Loads the common media action JS code prior to running the action."""
|
| + self.LoadJS(tab, 'media_action.js')
|
| +
|
| + def RunAction(self, page, tab, previous_action):
|
| + super(MediaAction, self).RunAction(page, tab, previous_action)
|
| +
|
| + def LoadJS(self, tab, js_file_name):
|
| + """Loads and executes a JS file in the tab."""
|
| + with open(os.path.join(os.path.dirname(__file__), js_file_name)) as f:
|
| + js = f.read()
|
| + tab.ExecuteJavaScript(js)
|
| +
|
| + def WaitForEvent(self, tab, selector, event_name, timeout,
|
| + poll_interval=0.5):
|
| + """Halts media action until the selector's event is fired.
|
| +
|
| + Args:
|
| + tab: The tab to check for event on.
|
| + selector: Media element selector.
|
| + event_name: Name of the event to check if fired or not.
|
| + timeout: Timeout to check for event, throws an exception if not fired.
|
| + poll_interval: Interval to poll for event firing status.
|
| + """
|
| + util.WaitFor(lambda: self.HasEventCompleted(tab, selector, event_name),
|
| + timeout=timeout, poll_interval=poll_interval)
|
| +
|
| + def HasEventCompleted(self, tab, selector, event_name):
|
| + return tab.EvaluateJavaScript(
|
| + 'window.__hasEventCompleted("%s", "%s");' % (selector, event_name))
|
|
|