| # Copyright (c) 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.common_lib.cros import chrome |
| from autotest_lib.client.cros import service_stopper |
| from autotest_lib.client.cros.input_playback import input_playback |
| from autotest_lib.client.cros.graphics import graphics_utils |
| from autotest_lib.client.cros.ui import ui_test_base |
| |
| |
| class ui_AppLauncher(ui_test_base.ui_TestBase): |
| """ |
| Collects screenshots of the App Launcher. |
| See comments on parent class for overview of how things flow. |
| |
| """ |
| |
| # The keyboard we are emulating |
| _KEYBOARD_PROP = 'keyboard.prop' |
| |
| # The keyboard playback data |
| _KEYBOARD_PLAYBACK = 'searchkey_tabs_enter' |
| |
| def initialize(self): |
| """Perform necessary initialization prior to test run. |
| |
| Private Attributes: |
| _services: service_stopper.ServiceStopper object |
| """ |
| # Do not switch off screen for screenshot utility. |
| self._services = service_stopper.ServiceStopper(['powerd']) |
| self._services.stop_services() |
| |
| def cleanup(self): |
| self._services.restore_services() |
| |
| def capture_screenshot(self, filepath): |
| """ |
| Take a screenshot of the App Launcher page. |
| |
| Implements the abstract method capture_screenshot |
| |
| @param filepath: string, Complete path to save the screenshot to. |
| |
| """ |
| |
| # Login and load the default apps |
| with chrome.Chrome(disable_default_apps=False): |
| |
| # Setup the keyboard file's paths |
| property_file = os.path.join(self.bindir, self._KEYBOARD_PROP) |
| playback_file = os.path.join(self.bindir, self._KEYBOARD_PLAYBACK) |
| |
| # Setup and playback the keyboard commands to open the launcher |
| with input_playback.InputPlayback() as player: |
| player.emulate('keyboard', property_file) |
| player.find_connected_inputs() |
| player.blocking_playback(playback_file, 'keyboard') |
| |
| # Take a screenshot and crop to just the launcher |
| w, h = graphics_utils.get_internal_resolution() |
| upper_x = (w - self.launcher_width) / 2 |
| upper_y = (h - self.launcher_height) / 2 |
| box = (upper_x, upper_y, upper_x + self.launcher_width, upper_y + |
| self.launcher_height) |
| |
| graphics_utils.take_screenshot_crop(filepath, box) |
| |
| def run_once(self): |
| # The default launcher dimensions |
| self.launcher_width = 768 |
| self.launcher_height = 570 |
| |
| w, h = graphics_utils.get_internal_resolution() |
| logging.info('DUT screen width: %d' % w) |
| logging.info('DUT screen height: %d' % h) |
| |
| # If we have a high DPI screen, launcher size is doubled |
| if self.launcher_width * 2 < w: |
| self.launcher_width *= 2 |
| self.launcher_height *= 2 |
| self.tagged_testname += '.large' |
| |
| self.run_screenshot_comparison_test() |