blob: 19bf98de18b5c4a883a118b5d12b1ab37a61d158 [file] [log] [blame]
# Copyright 2015 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
from autotest_lib.client.cros.video import video_player
class NativeHtml5Player(video_player.VideoPlayer):
"""
Provides an interface to interact with native html5 player in chrome.
"""
def inject_source_file(self):
"""
Injects the path to the video file under test into the html doc.
"""
self.tab.ExecuteJavaScript(
'loadVideoSource("%s")' % self.video_src_path)
def is_video_ready(self):
"""
Determines if a native html5 video is ready by using javascript.
returns: bool, True if video is ready, else False.
"""
return self.tab.EvaluateJavaScript('canplay()')
def is_javascript_ready(self):
"""
returns: True if javascript variables and functions have been defined,
else False.
"""
return self.tab.EvaluateJavaScript(
'typeof script_ready!="undefined" && script_ready == true')
def play(self):
"""
Plays the video.
"""
self.tab.ExecuteJavaScript('play()')
def pause(self):
"""
Pauses the video.
"""
self.tab.ExecuteJavaScript('pause()')
def paused(self):
"""
Checks whether video paused.
"""
cmd = "%s.paused" % self.video_id
return self.tab.EvaluateJavaScript(cmd)
def ended(self):
"""
Checks whether video paused.
"""
cmd = "%s.ended" % self.video_id
return self.tab.EvaluateJavaScript(cmd)
def currentTime(self):
"""
Returns the current time of the video element.
"""
return self.tab.EvaluateJavaScript('currentTime()')
def seek_to(self, t):
"""
Seeks a video to a time stamp.
@param t: timedelta, time value to seek to.
"""
cmd = "%s.currentTime=%.3f" % (self.video_id, t.total_seconds())
self.tab.ExecuteJavaScript(cmd)
def has_video_finished_seeking(self):
"""
Determines if the video has finished seeking.
"""
return self.tab.EvaluateJavaScript('finishedSeeking()')
def wait_for_error(self):
"""
Determines if the video has any errors
"""
return self.tab.WaitForJavaScriptExpression('errorDetected();', 30)
def reload_page(self):
"""
Reloads current page
"""
self.tab.ExecuteJavaScript('location.reload()')
def enable_VideoControls(self):
"""
For enabling controls
"""
self.tab.ExecuteJavaScript('setControls()')
def dropped_frame_count(self):
"""
Gets the number of dropped frames.
@returns: An integer indicates the number of dropped frame.
"""
cmd = "%s.webkitDroppedFrameCount" % self.video_id
return self.tab.EvaluateJavaScript(cmd)
def duration(self):
"""
Gets the duration of the video.
@returns: An number indicates the duration of the video.
"""
cmd = "%s.duration" % self.video_id
return self.tab.EvaluateJavaScript(cmd)
def wait_video_ended(self):
"""
Waits until the video playback is ended.
"""
cmd = "%s.ended" % self.video_id
self.tab.WaitForJavaScriptExpression(cmd, self.duration() * 2)