| # Copyright 2015 The Chromium Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| from page_sets import android_screen_restoration_shared_state |
| from page_sets.rendering import rendering_story |
| from page_sets.rendering import story_tags |
| from page_sets.system_health import platforms |
| |
| |
| class KeyIdlePowerPage(rendering_story.RenderingStory): |
| ABSTRACT_STORY = True |
| SUPPORTED_PLATFORMS = platforms.MOBILE_ONLY |
| TAGS = [story_tags.KEY_IDLE_POWER] |
| TURN_SCREEN_OFF = True |
| DURATION_SECONDS = 20 |
| |
| def __init__(self, |
| page_set, |
| shared_page_state_class=(android_screen_restoration_shared_state |
| .AndroidScreenRestorationSharedState), |
| name_suffix='', |
| extra_browser_args=None): |
| super(KeyIdlePowerPage, self).__init__( |
| page_set=page_set, |
| shared_page_state_class=shared_page_state_class, |
| name_suffix=name_suffix, |
| extra_browser_args=['--report-silk-details','--disable-top-sites']) |
| |
| def RunNavigateSteps(self, action_runner): |
| super(KeyIdlePowerPage, self).RunNavigateSteps(action_runner) |
| action_runner.Wait(2) |
| if self.TURN_SCREEN_OFF: |
| action_runner.tab.browser.platform.android_action_runner.TurnScreenOff() |
| # We're not interested in tracking activity that occurs immediately after |
| # the screen is turned off. Several seconds should be enough time for the |
| # browser to "settle down" into an idle state. |
| action_runner.Wait(2) |
| |
| def RunPageInteractions(self, action_runner): |
| # The page interaction is simply waiting in an idle state. |
| with action_runner.CreateInteraction('IdleWaiting'): |
| action_runner.Wait(self.DURATION_SECONDS) |
| |
| |
| # Why: Ensure minimal activity for static, empty pages in the foreground. |
| class BlankIdlePowerPage(KeyIdlePowerPage): |
| BASE_NAME = 'idle_power_blank' |
| URL = 'file://../key_idle_power_cases/blank.html' |
| TURN_SCREEN_OFF = False |
| |
| |
| # Why: Ensure animated GIFs aren't processed when Chrome is backgrounded. |
| class AnimatedGifIdlePowerPage(KeyIdlePowerPage): |
| BASE_NAME = 'idle_power_animated_gif' |
| URL = 'file://../key_idle_power_cases/animated-gif.html' |
| |
| |
| # Why: Ensure CSS animations aren't processed when Chrome is backgrounded. |
| class CssAnimationIdlePowerPage(KeyIdlePowerPage): |
| BASE_NAME = 'idle_power_css_animation' |
| URL = 'file://../key_idle_power_cases/css-animation.html' |
| |
| |
| # Why: Ensure rAF is suppressed when Chrome is backgrounded. |
| class RequestAnimationIdlePowerPage(KeyIdlePowerPage): |
| BASE_NAME = 'idle_power_request_animation_frame' |
| URL = 'file://../key_idle_power_cases/request-animation-frame.html' |
| |
| |
| # Why: Ensure setTimeout is throttled when Chrome is backgrounded. |
| class SetTimeoutIdlePowerPage(KeyIdlePowerPage): |
| BASE_NAME = 'idle_power_set_timetout' |
| URL = 'file://../key_idle_power_cases/set-timeout.html' |
| |
| |
| # Why: Ensure that activity strictly diminishes the longer the idle time. |
| class SetTimeoutLongIdlePowerPage(KeyIdlePowerPage): |
| BASE_NAME = 'idle_power_set_timeout_long' |
| URL = 'file://../key_idle_power_cases/set-timeout.html' |
| # 90 seconds ensures the capture of activity after the 60-second |
| # PowerMonitor suspend signal. |
| DURATION_SECONDS = 90 |