[refactor] More post-NSS WebCrypto cleanups (utility functions).
[chromium-blink-merge.git] / tools / perf / page_sets / key_idle_power_cases.py
blob4e5ca5eea7e9b6d50667833305a0c1fa394ba755
1 # Copyright 2015 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file.
4 from page_sets import android_screen_restoration_shared_state
6 from telemetry.page import page as page_module
7 from telemetry.page import shared_page_state
8 from telemetry import story
11 class KeyIdlePowerPage(page_module.Page):
13 def __init__(self, url, page_set, turn_screen_off, duration_seconds=20,
14 shared_page_state_class=shared_page_state.SharedMobilePageState):
15 super(KeyIdlePowerPage, self).__init__(
16 url=url,
17 page_set=page_set,
18 shared_page_state_class=(android_screen_restoration_shared_state
19 .AndroidScreenRestorationSharedState))
20 self._turn_screen_off = turn_screen_off
21 self._duration_seconds = duration_seconds
23 def RunNavigateSteps(self, action_runner):
24 super(KeyIdlePowerPage, self).RunNavigateSteps(action_runner)
25 action_runner.Wait(2)
26 if self._turn_screen_off:
27 action_runner.tab.browser.platform.android_action_runner.TurnScreenOff()
28 # We're not interested in tracking activity that occurs immediately after
29 # the screen is turned off. Several seconds should be enough time for the
30 # browser to "settle down" into an idle state.
31 action_runner.Wait(2)
33 def RunPageInteractions(self, action_runner):
34 # The page interaction is simply waiting in an idle state.
35 with action_runner.CreateInteraction('IdleWaiting'):
36 action_runner.Wait(self._duration_seconds)
39 class KeyLongIdlePowerPage(KeyIdlePowerPage):
41 def __init__(self, url, page_set, turn_screen_off,
42 shared_page_state_class=shared_page_state.SharedMobilePageState):
43 # 90 seconds ensures the capture of activity after the 60-second
44 # PowerMonitor suspend signal.
45 super(KeyLongIdlePowerPage, self).__init__(
46 url=url,
47 page_set=page_set,
48 turn_screen_off=turn_screen_off,
49 duration_seconds=90,
50 shared_page_state_class=(android_screen_restoration_shared_state
51 .AndroidScreenRestorationSharedState))
52 self._name = self.display_name + " (Long Idle)"
55 class KeyIdlePowerCasesPageSet(story.StorySet):
57 """ Key idle power cases """
59 def __init__(self):
60 super(KeyIdlePowerCasesPageSet, self).__init__()
62 foreground_urls_list = [
63 # Why: Ensure minimal activity for static, empty pages in the foreground.
64 'file://key_idle_power_cases/blank.html',
67 for url in foreground_urls_list:
68 self.AddStory(KeyIdlePowerPage(url, self, False))
70 background_urls_list = [
71 # Why: Ensure animated GIFs aren't processed when Chrome is backgrounded.
72 'file://key_idle_power_cases/animated-gif.html',
73 # Why: Ensure CSS animations aren't processed when Chrome is backgrounded.
74 'file://key_idle_power_cases/css-animation.html',
75 # Why: Ensure rAF is suppressed when Chrome is backgrounded.
76 'file://key_idle_power_cases/request-animation-frame.html',
77 # Why: Ensure setTimeout is throttled when Chrome is backgrounded.
78 'file://key_idle_power_cases/set-timeout.html',
81 for url in background_urls_list:
82 self.AddStory(KeyIdlePowerPage(url, self, True))
84 # Why: Ensure that activity strictly diminishes the longer the idle time.
85 self.AddStory(KeyLongIdlePowerPage(
86 'file://key_idle_power_cases/set-timeout.html', self, True))