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 telemetry
.page
import page
as page_module
5 from telemetry
.page
import shared_page_state
6 from telemetry
import story
9 class NoOpPage(page_module
.Page
):
11 def __init__(self
, url
, page_set
):
12 super(NoOpPage
, self
).__init
__(
15 shared_page_state_class
=shared_page_state
.SharedMobilePageState
)
17 def RunNavigateSteps(self
, action_runner
):
18 super(NoOpPage
, self
).RunNavigateSteps(action_runner
)
19 # Let load activity settle.
22 def RunPageInteractions(self
, action_runner
):
23 # The default page interaction is simply waiting in an idle state.
24 with action_runner
.CreateInteraction('IdleWaiting'):
28 class NoOpTouchScrollPage(NoOpPage
):
29 def __init__(self
, url
, page_set
):
30 super(NoOpTouchScrollPage
, self
).__init
__(url
=url
, page_set
=page_set
)
32 def RunPageInteractions(self
, action_runner
):
33 # The noop touch motion should last ~5 seconds.
34 with action_runner
.CreateGestureInteraction('ScrollAction'):
35 action_runner
.ScrollPage(direction
='down', use_touch
=True,
36 speed_in_pixels_per_second
=300, distance
=1500)
39 class KeyNoOpCasesPageSet(story
.StorySet
):
41 """ Key no-op cases """
44 super(KeyNoOpCasesPageSet
, self
).__init
__()
46 # Why: An infinite rAF loop which does not modify the page should incur
48 self
.AddStory(NoOpPage('file://key_noop_cases/no_op_raf.html', self
))
50 # Why: An inifinite setTimeout loop which does not modify the page should
51 # incur minimal activity.
52 self
.AddStory(NoOpPage('file://key_noop_cases/no_op_settimeout.html', self
))
54 # Why: Scrolling an empty, unscrollable page should have no expensive side
55 # effects, as overscroll is suppressed in such cases.
56 self
.AddStory(NoOpTouchScrollPage(
57 'file://key_noop_cases/no_op_scroll.html', self
))
59 # Why: Feeding a stream of touch events to a no-op handler should be cheap.
60 self
.AddStory(NoOpTouchScrollPage(
61 'file://key_noop_cases/no_op_touch_handler.html', self
))