Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(176)

Side by Side Diff: tools/telemetry/telemetry/page/action_runner.py

Issue 1291513004: smoothness.scrolling_tough_ad_cases to use browser driven scrolls (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Final nits Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « tools/telemetry/telemetry/internal/browser/web_contents.py ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Copyright 2014 The Chromium Authors. All rights reserved. 1 # Copyright 2014 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 import logging 5 import logging
6 import time 6 import time
7 import urlparse 7 import urlparse
8 8
9 from telemetry.internal.actions.drag import DragAction 9 from telemetry.internal.actions.drag import DragAction
10 from telemetry.internal.actions.javascript_click import ClickElementAction 10 from telemetry.internal.actions.javascript_click import ClickElementAction
11 from telemetry.internal.actions.load_media import LoadMediaAction 11 from telemetry.internal.actions.load_media import LoadMediaAction
12 from telemetry.internal.actions.loop import LoopAction 12 from telemetry.internal.actions.loop import LoopAction
13 from telemetry.internal.actions.mouse_click import MouseClickAction 13 from telemetry.internal.actions.mouse_click import MouseClickAction
14 from telemetry.internal.actions.navigate import NavigateAction 14 from telemetry.internal.actions.navigate import NavigateAction
15 from telemetry.internal.actions.page_action import GESTURE_SOURCE_DEFAULT 15 from telemetry.internal.actions.page_action import GESTURE_SOURCE_DEFAULT
16 from telemetry.internal.actions.page_action import SUPPORTED_GESTURE_SOURCES 16 from telemetry.internal.actions.page_action import SUPPORTED_GESTURE_SOURCES
17 from telemetry.internal.actions.pinch import PinchAction 17 from telemetry.internal.actions.pinch import PinchAction
18 from telemetry.internal.actions.play import PlayAction 18 from telemetry.internal.actions.play import PlayAction
19 from telemetry.internal.actions.repaint_continuously import ( 19 from telemetry.internal.actions.repaint_continuously import (
20 RepaintContinuouslyAction) 20 RepaintContinuouslyAction)
21 from telemetry.internal.actions.repeatable_scroll import RepeatableScrollAction
21 from telemetry.internal.actions.scroll import ScrollAction 22 from telemetry.internal.actions.scroll import ScrollAction
22 from telemetry.internal.actions.scroll_bounce import ScrollBounceAction 23 from telemetry.internal.actions.scroll_bounce import ScrollBounceAction
23 from telemetry.internal.actions.seek import SeekAction 24 from telemetry.internal.actions.seek import SeekAction
24 from telemetry.internal.actions.swipe import SwipeAction 25 from telemetry.internal.actions.swipe import SwipeAction
25 from telemetry.internal.actions.tap import TapAction 26 from telemetry.internal.actions.tap import TapAction
26 from telemetry.internal.actions.wait import WaitForElementAction 27 from telemetry.internal.actions.wait import WaitForElementAction
27 from telemetry.web_perf import timeline_interaction_record 28 from telemetry.web_perf import timeline_interaction_record
28 29
29 30
30 class ActionRunner(object): 31 class ActionRunner(object):
(...skipping 320 matching lines...) Expand 10 before | Expand all | Expand 10 after
351 synthetic_gesture_source: the source input device type for the 352 synthetic_gesture_source: the source input device type for the
352 synthetic gesture: 'DEFAULT', 'TOUCH' or 'MOUSE'. 353 synthetic gesture: 'DEFAULT', 'TOUCH' or 'MOUSE'.
353 """ 354 """
354 assert synthetic_gesture_source in SUPPORTED_GESTURE_SOURCES 355 assert synthetic_gesture_source in SUPPORTED_GESTURE_SOURCES
355 self._RunAction(ScrollAction( 356 self._RunAction(ScrollAction(
356 left_start_ratio=left_start_ratio, top_start_ratio=top_start_ratio, 357 left_start_ratio=left_start_ratio, top_start_ratio=top_start_ratio,
357 direction=direction, distance=distance, distance_expr=distance_expr, 358 direction=direction, distance=distance, distance_expr=distance_expr,
358 speed_in_pixels_per_second=speed_in_pixels_per_second, 359 speed_in_pixels_per_second=speed_in_pixels_per_second,
359 use_touch=use_touch, synthetic_gesture_source=synthetic_gesture_source)) 360 use_touch=use_touch, synthetic_gesture_source=synthetic_gesture_source))
360 361
362 def RepeatableBrowserDrivenScroll(self, x_scroll_distance_ratio=0.0,
363 y_scroll_distance_ratio=0.5,
364 repeat_count=0,
365 repeat_delay_ms=250):
366 """Perform a browser driven repeatable scroll gesture.
367
368 The scroll gesture is driven from the browser, this is useful because the
369 main thread often isn't resposive but the browser process usually is, so the
370 delay between the scroll gestures should be consistent.
371
372 Args:
373 x_scroll_distance_ratio: The horizontal lenght of the scroll as a fraction
374 of the screen width.
375 y_scroll_distance_ratio: The vertical lenght of the scroll as a fraction
376 of the screen height.
377 repeat_count: The number of additional times to repeat the gesture.
378 repeat_delay_ms: The delay in milliseconds between each scroll gesture.
379 """
380 self._RunAction(RepeatableScrollAction(
381 x_scroll_distance_ratio=x_scroll_distance_ratio,
382 y_scroll_distance_ratio=y_scroll_distance_ratio,
383 repeat_count=repeat_count,
384 repeat_delay_ms=repeat_delay_ms))
385
361 def ScrollElement(self, selector=None, text=None, element_function=None, 386 def ScrollElement(self, selector=None, text=None, element_function=None,
362 left_start_ratio=0.5, top_start_ratio=0.5, 387 left_start_ratio=0.5, top_start_ratio=0.5,
363 direction='down', distance=None, distance_expr=None, 388 direction='down', distance=None, distance_expr=None,
364 speed_in_pixels_per_second=800, use_touch=False, 389 speed_in_pixels_per_second=800, use_touch=False,
365 synthetic_gesture_source=GESTURE_SOURCE_DEFAULT): 390 synthetic_gesture_source=GESTURE_SOURCE_DEFAULT):
366 """Perform scroll gesture on the element. 391 """Perform scroll gesture on the element.
367 392
368 The element may be selected via selector, text, or element_function. 393 The element may be selected via selector, text, or element_function.
369 Only one of these arguments must be specified. 394 Only one of these arguments must be specified.
370 395
(...skipping 308 matching lines...) Expand 10 before | Expand all | Expand 10 after
679 self._action_runner.ExecuteJavaScript('console.time("%s");' % 704 self._action_runner.ExecuteJavaScript('console.time("%s");' %
680 timeline_interaction_record.GetJavaScriptMarker( 705 timeline_interaction_record.GetJavaScriptMarker(
681 self._label, self._flags)) 706 self._label, self._flags))
682 707
683 def End(self): 708 def End(self):
684 assert self._started 709 assert self._started
685 self._started = False 710 self._started = False
686 self._action_runner.ExecuteJavaScript('console.timeEnd("%s");' % 711 self._action_runner.ExecuteJavaScript('console.timeEnd("%s");' %
687 timeline_interaction_record.GetJavaScriptMarker( 712 timeline_interaction_record.GetJavaScriptMarker(
688 self._label, self._flags)) 713 self._label, self._flags))
OLDNEW
« no previous file with comments | « tools/telemetry/telemetry/internal/browser/web_contents.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698