1c018b97e074c876c765ccfc4e9732a3d8c6a4cb8Rohit Makasana# Copyright (c) 2013 The Chromium OS Authors. All rights reserved.
2c018b97e074c876c765ccfc4e9732a3d8c6a4cb8Rohit Makasana# Use of this source code is governed by a BSD-style license that can be
3c018b97e074c876c765ccfc4e9732a3d8c6a4cb8Rohit Makasana# found in the LICENSE file.
4c018b97e074c876c765ccfc4e9732a3d8c6a4cb8Rohit Makasana
5c018b97e074c876c765ccfc4e9732a3d8c6a4cb8Rohit Makasana
6c018b97e074c876c765ccfc4e9732a3d8c6a4cb8Rohit Makasanafrom autotest_lib.client.bin import test, utils
7c018b97e074c876c765ccfc4e9732a3d8c6a4cb8Rohit Makasanafrom autotest_lib.client.common_lib import error
8c018b97e074c876c765ccfc4e9732a3d8c6a4cb8Rohit Makasanafrom autotest_lib.client.common_lib.cros import chrome
9c018b97e074c876c765ccfc4e9732a3d8c6a4cb8Rohit Makasanafrom autotest_lib.client.cros import httpd
10c018b97e074c876c765ccfc4e9732a3d8c6a4cb8Rohit Makasanafrom autotest_lib.client.cros.video import youtube_helper
11c018b97e074c876c765ccfc4e9732a3d8c6a4cb8Rohit Makasana
12c018b97e074c876c765ccfc4e9732a3d8c6a4cb8Rohit Makasana
13c018b97e074c876c765ccfc4e9732a3d8c6a4cb8Rohit MakasanaFLASH_PROCESS_NAME = 'chrome/chrome --type=ppapi'
14c018b97e074c876c765ccfc4e9732a3d8c6a4cb8Rohit MakasanaPLAYER_PLAYING_STATE = 'Playing'
15c018b97e074c876c765ccfc4e9732a3d8c6a4cb8Rohit Makasana
16c018b97e074c876c765ccfc4e9732a3d8c6a4cb8Rohit Makasana
17c018b97e074c876c765ccfc4e9732a3d8c6a4cb8Rohit Makasanaclass video_YouTubeFlash(test.test):
18c018b97e074c876c765ccfc4e9732a3d8c6a4cb8Rohit Makasana    """This test verify the YouTube Flash video.
19c018b97e074c876c765ccfc4e9732a3d8c6a4cb8Rohit Makasana
20c018b97e074c876c765ccfc4e9732a3d8c6a4cb8Rohit Makasana    - verify the video playback.
21c018b97e074c876c765ccfc4e9732a3d8c6a4cb8Rohit Makasana    - verify the available video resolutions.
22c018b97e074c876c765ccfc4e9732a3d8c6a4cb8Rohit Makasana    - verify the player functionalities.
23c018b97e074c876c765ccfc4e9732a3d8c6a4cb8Rohit Makasana
24c9b1f4c0de874f63ce4b673eaf478e5539a0e17bRohit Makasana    Note: please make sure that the test page uses nohtml5=1 flag for enforcing
25c9b1f4c0de874f63ce4b673eaf478e5539a0e17bRohit Makasana          the player to play video in Flash mode. Same for html5=1 for html5
26c9b1f4c0de874f63ce4b673eaf478e5539a0e17bRohit Makasana          mode.
27c018b97e074c876c765ccfc4e9732a3d8c6a4cb8Rohit Makasana    """
28c018b97e074c876c765ccfc4e9732a3d8c6a4cb8Rohit Makasana    version = 2
29c018b97e074c876c765ccfc4e9732a3d8c6a4cb8Rohit Makasana
30c018b97e074c876c765ccfc4e9732a3d8c6a4cb8Rohit Makasana
31c018b97e074c876c765ccfc4e9732a3d8c6a4cb8Rohit Makasana    def initialize(self):
32c018b97e074c876c765ccfc4e9732a3d8c6a4cb8Rohit Makasana        self._testServer = httpd.HTTPListener(8000, docroot=self.bindir)
33c018b97e074c876c765ccfc4e9732a3d8c6a4cb8Rohit Makasana        self._testServer.run()
34c018b97e074c876c765ccfc4e9732a3d8c6a4cb8Rohit Makasana
35c018b97e074c876c765ccfc4e9732a3d8c6a4cb8Rohit Makasana
36c018b97e074c876c765ccfc4e9732a3d8c6a4cb8Rohit Makasana    def cleanup(self):
37c018b97e074c876c765ccfc4e9732a3d8c6a4cb8Rohit Makasana        if self._testServer:
38c018b97e074c876c765ccfc4e9732a3d8c6a4cb8Rohit Makasana            self._testServer.stop()
39c018b97e074c876c765ccfc4e9732a3d8c6a4cb8Rohit Makasana
40c018b97e074c876c765ccfc4e9732a3d8c6a4cb8Rohit Makasana
41c018b97e074c876c765ccfc4e9732a3d8c6a4cb8Rohit Makasana    def run_youtube_tests(self, browser):
42c018b97e074c876c765ccfc4e9732a3d8c6a4cb8Rohit Makasana        """Run YouTube Flash sanity tests.
43c018b97e074c876c765ccfc4e9732a3d8c6a4cb8Rohit Makasana
44c018b97e074c876c765ccfc4e9732a3d8c6a4cb8Rohit Makasana        @param browser: The Browser object to run the test with.
45c018b97e074c876c765ccfc4e9732a3d8c6a4cb8Rohit Makasana
46c018b97e074c876c765ccfc4e9732a3d8c6a4cb8Rohit Makasana        """
476d9133decf1dd30a6f410445430e2fe569b4101aRohit Makasana        tab = browser.tabs[0]
48c018b97e074c876c765ccfc4e9732a3d8c6a4cb8Rohit Makasana        tab.Navigate('http://localhost:8000/youtube.html')
49c018b97e074c876c765ccfc4e9732a3d8c6a4cb8Rohit Makasana        yh = youtube_helper.YouTubeHelper(tab)
50c018b97e074c876c765ccfc4e9732a3d8c6a4cb8Rohit Makasana        # Waiting for test video to load.
51c018b97e074c876c765ccfc4e9732a3d8c6a4cb8Rohit Makasana        yh.wait_for_player_state(PLAYER_PLAYING_STATE)
52c018b97e074c876c765ccfc4e9732a3d8c6a4cb8Rohit Makasana        yh.set_video_duration()
53c018b97e074c876c765ccfc4e9732a3d8c6a4cb8Rohit Makasana
54c018b97e074c876c765ccfc4e9732a3d8c6a4cb8Rohit Makasana        # Verify that YouTube is running in Flash mode.
55f61287155c8060449dbaa8b78d328b781f016dc7Rohit Makasana        prc = utils.get_process_list('chrome', '--type=ppapi( |$)')
56c018b97e074c876c765ccfc4e9732a3d8c6a4cb8Rohit Makasana        if not prc:
57c018b97e074c876c765ccfc4e9732a3d8c6a4cb8Rohit Makasana            raise error.TestFail('No Flash process is running.')
58c018b97e074c876c765ccfc4e9732a3d8c6a4cb8Rohit Makasana
59c018b97e074c876c765ccfc4e9732a3d8c6a4cb8Rohit Makasana        tab.ExecuteJavaScript('player.mute()')
60c018b97e074c876c765ccfc4e9732a3d8c6a4cb8Rohit Makasana        yh.verify_video_playback()
61c018b97e074c876c765ccfc4e9732a3d8c6a4cb8Rohit Makasana        yh.verify_video_resolutions()
62c018b97e074c876c765ccfc4e9732a3d8c6a4cb8Rohit Makasana        yh.verify_player_states()
63c018b97e074c876c765ccfc4e9732a3d8c6a4cb8Rohit Makasana
64c018b97e074c876c765ccfc4e9732a3d8c6a4cb8Rohit Makasana
65c018b97e074c876c765ccfc4e9732a3d8c6a4cb8Rohit Makasana    def run_once(self):
665b35656e62acce8fd0fac341592670ad0145c8a9Ilja H. Friedel        utils.verify_flash_installed()
67c018b97e074c876c765ccfc4e9732a3d8c6a4cb8Rohit Makasana        with chrome.Chrome() as cr:
68c018b97e074c876c765ccfc4e9732a3d8c6a4cb8Rohit Makasana            self.run_youtube_tests(cr.browser)
69