# Copyright 2016 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.graphics import graphics_utils from autotest_lib.client.cros.input_playback import input_playback BRIGHTNESS_LEVELS = 16 class platform_InputBrightness(test.test): """Tests if device suspends using shortcut keys.""" version = 1 BRIGHTNESS_CMD = "backlight_tool --get_brightness_percent" RESET_BRIGHTNESS_CMD = "backlight_tool --set_brightness_percent=70.0" WAIT_TIME = 1 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 test_brightness_down(self, verify_brightness=True): """ Use keyboard shortcut to test brightness Down (F6) key. @raises: error.TestFail if system brightness did not decrease. """ for level in range(0, BRIGHTNESS_LEVELS): logging.debug("Decreasing the brightness. Level %s", level) sys_brightness = self.get_system_brightness() self._player.blocking_playback_of_default_file( input_type='keyboard', filename='keyboard_f6') time.sleep(self.WAIT_TIME) if verify_brightness: if not sys_brightness > self.get_system_brightness(): raise error.TestFail("Brightness did not decrease from: " "%s" % sys_brightness) def test_brightness_up(self, verify_brightness=True): """ Use keyboard shortcut to test brightness Up (F7) key. @raises: error.TestFail if system brightness did not increase. """ for level in range(0, BRIGHTNESS_LEVELS): logging.debug("Increasing the brightness. Level %s", level) sys_brightness = self.get_system_brightness() self._player.blocking_playback_of_default_file( input_type='keyboard', filename='keyboard_f7') time.sleep(self.WAIT_TIME) if verify_brightness: if not sys_brightness < self.get_system_brightness(): raise error.TestFail("Brightness did not increase from: " "%s" % sys_brightness) def get_system_brightness(self): """ Get current system brightness percent (0.0-100.0). @returns: current system brightness. """ sys_brightness = utils.system_output(self.BRIGHTNESS_CMD) return float(sys_brightness) def run_once(self): """ Open browser, and affect brightness using up and down functions. @raises: error.TestFail if brightness keys (F6/F7) did not work. """ # Check for internal_display if not graphics_utils.has_internal_display(): raise error.TestNAError('Test can not proceed on ' 'devices without internal display.') with chrome.Chrome(): logging.info("Increasing the initial brightness to max without " "verifying brightness.") # Not using command to set max brightness because # the brightness button stays at the current level # only irrespective of the command self.test_brightness_up(verify_brightness=False) # Actual test starts from here. self.test_brightness_down(verify_brightness=True) self.test_brightness_up(verify_brightness=True) def cleanup(self): """Test cleanup.""" self._player.close() utils.system_output(self.RESET_BRIGHTNESS_CMD)