Index: tools/telemetry/telemetry/internal/backends/chrome_inspector/inspector_backend.py |
diff --git a/tools/telemetry/telemetry/internal/backends/chrome_inspector/inspector_backend.py b/tools/telemetry/telemetry/internal/backends/chrome_inspector/inspector_backend.py |
index 3aa050a1f6f31bf9186167fe66fbde5f5e373fc5..e1e3e0a0b9e268a3c8bef62436cac7dadb3e17f2 100644 |
--- a/tools/telemetry/telemetry/internal/backends/chrome_inspector/inspector_backend.py |
+++ b/tools/telemetry/telemetry/internal/backends/chrome_inspector/inspector_backend.py |
@@ -223,6 +223,65 @@ class InspectorBackend(object): |
""" |
return self._runtime.EnableAllContexts() |
+ @_HandleInspectorWebSocketExceptions |
+ def SynthesizeScrollGesture(self, x=100, y=800, xDistance=0, yDistance=-500, |
+ xOverscroll=None, yOverscroll=None, |
+ preventFling=True, speed=None, |
+ gestureSourceType=None, repeatCount=None, |
+ repeatDelayMs=None, interactionMarkerName=None, |
+ timeout=60): |
+ """Runs an inspector command that causes a repeatable browser driven scroll. |
+ |
+ Args: |
+ x: X coordinate of the start of the gesture in CSS pixels. |
+ y: Y coordinate of the start of the gesture in CSS pixels. |
+ xDistance: Distance to scroll along the X axis (positive to scroll left). |
+ yDistance: Distance to scroll along the Y axis (positive to scroll up). |
+ xOverscroll: Number of additional pixels to scroll back along the X axis. |
+ xOverscroll: Number of additional pixels to scroll back along the Y axis. |
+ preventFling: Prevents a fling gesture. |
+ speed: Swipe speed in pixels per second. |
+ gestureSourceType: Which type of input events to be generated. |
+ repeatCount: Number of additional repeats beyond the first scroll. |
+ repeatDelayMs: Number of milliseconds delay between each repeat. |
+ interactionMarkerName: The name of the interaction markers to generate. |
+ |
+ Raises: |
+ exceptions.TimeoutException |
+ exceptions.DevtoolsTargetCrashException |
+ """ |
+ params = { |
+ 'x': x, |
+ 'y': y, |
+ 'xDistance': xDistance, |
+ 'yDistance': yDistance, |
+ 'preventFling': preventFling, |
+ } |
+ |
+ if xOverscroll is not None: |
+ params['xOverscroll'] = xOverscroll |
+ |
+ if yOverscroll is not None: |
+ params['yOverscroll'] = yOverscroll |
+ |
+ if speed is not None: |
+ params['speed'] = speed |
+ |
+ if repeatCount is not None: |
+ params['repeatCount'] = repeatCount |
+ |
+ if repeatDelayMs is not None: |
+ params['repeatDelayMs'] = repeatDelayMs |
+ |
+ if interactionMarkerName is not None: |
+ params['interactionMarkerName'] = interactionMarkerName |
+ |
+ scroll_command = { |
+ 'method': 'Input.synthesizeScrollGesture', |
+ 'params': params |
+ } |
+ return self._runtime.RunInspectorCommand(scroll_command, timeout) |
+ |
# Timeline public methods. |
@property |