| # Copyright 2017 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 time |
| |
| 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.input_playback import input_playback |
| from telemetry.core import exceptions |
| |
| |
| class platform_InputNewTab(test.test): |
| """Tests if device suspends using shortcut keys.""" |
| version = 1 |
| _WAIT = 15 |
| |
| def warmup(self): |
| """Test setup.""" |
| # Emulate keyboard. |
| # See input_playback. The keyboard is used to play back shortcuts. |
| self._player = input_playback.InputPlayback() |
| self._player.emulate(input_type='keyboard') |
| self._player.find_connected_inputs() |
| |
| def _open_tab(self): |
| """Use keyboard shortcut to start a new tab.""" |
| self._player.blocking_playback_of_default_file( |
| input_type='keyboard', filename='keyboard_ctrl+t') |
| time.sleep(self._WAIT) |
| |
| def _close_tab(self): |
| """Use keyboard shortcut to start a new tab.""" |
| self._player.blocking_playback_of_default_file( |
| input_type='keyboard', filename='keyboard_ctrl+w') |
| time.sleep(self._WAIT) |
| |
| def verify_num_tabs(self, expected_num): |
| """Verify number of tabs open. |
| |
| @param expected_num: expected number of tabs |
| |
| @raises: error.TestFail if number of expected tabs does not equal |
| number of current tabs. |
| |
| """ |
| current_num = len(self.cr.browser.tabs) |
| utils.poll_for_condition( |
| lambda: current_num == expected_num, |
| exception=error.TestFail('Incorrect number of tabs: %s vs %s' |
| % (current_num, expected_num)), |
| timeout=self._WAIT) |
| |
| |
| def run_once(self): |
| """ |
| Open and close tabs in new browser. Verify expected |
| number of tabs. |
| """ |
| with chrome.Chrome() as cr: |
| self.cr = cr |
| time.sleep(self._WAIT) |
| |
| init_tabs = len(cr.browser.tabs) |
| self._open_tab() |
| self.verify_num_tabs(init_tabs + 1) |
| self._open_tab() |
| self.verify_num_tabs(init_tabs + 2) |
| |
| self._close_tab() |
| self.verify_num_tabs(init_tabs + 1) |
| |
| def cleanup(self): |
| """Test cleanup.""" |
| self._player.close() |