blob: 24f53b04ec10bd4d6037d6f4df040bfe75575050 [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.
import logging
import os
from autotest_lib.client.bin import test
from autotest_lib.client.bin import utils
from autotest_lib.client.common_lib import error
from autotest_lib.client.common_lib.cros import chrome
from autotest_lib.client.cros.video import helper_logger
EXTRA_BROWSER_ARGS = ['--use-fake-ui-for-media-stream',
'--use-fake-device-for-media-stream']
# Polling timeout.
SHORT_TIMEOUT_IN_SECS = 45
class video_WebRtcSanity(test.test):
"""Local getUserMedia test with fake webcam at VGA and 720p."""
version = 1
def start_getusermedia(self, cr):
"""Opens the test page.
@param cr: Autotest Chrome instance.
"""
cr.browser.platform.SetHTTPServerDirectories(self.bindir)
self.tab = cr.browser.tabs[0]
self.tab.Navigate(cr.browser.platform.http_server.UrlOf(
os.path.join(self.bindir, 'getusermedia.html')))
self.tab.WaitForDocumentReadyStateToBeComplete()
def wait_test_completed(self, timeout_secs):
"""Waits until the test is done.
@param timeout_secs Max time to wait in seconds.
@returns True if test completed, False otherwise.
"""
def _test_done():
status = self.tab.EvaluateJavaScript('getStatus()')
logging.debug(status);
return status != 'running'
utils.poll_for_condition(
_test_done, timeout=timeout_secs, sleep_interval=1,
desc = 'getusermedia.html reports itself as finished')
@helper_logger.video_log_wrapper
def run_once(self):
"""Runs the test."""
with chrome.Chrome(extra_browser_args=EXTRA_BROWSER_ARGS +\
[helper_logger.chrome_vmodule_flag()],
init_network_controller=True) as cr:
self.start_getusermedia(cr)
self.wait_test_completed(SHORT_TIMEOUT_IN_SECS)
self.verify_successful()
def verify_successful(self):
"""Checks the results of the test.
@raises TestError if an error occurred.
"""
status = self.tab.EvaluateJavaScript('getStatus()')
logging.info('Status: %s', status)
if status != 'ok-video-playing':
raise error.TestFail('Failed: %s' % status)