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

Unified Diff: tools/perf/page_sets/maps_earth.py

Issue 1002883003: Revert of [Telemetry] Adds maps_earth test (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 9 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « tools/perf/page_sets/data/maps_earth_001.wpr.sha1 ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: tools/perf/page_sets/maps_earth.py
diff --git a/tools/perf/page_sets/maps_earth.py b/tools/perf/page_sets/maps_earth.py
deleted file mode 100644
index 7ca0fc4c607b2d254fda72ddd50c8cae4584c88f..0000000000000000000000000000000000000000
--- a/tools/perf/page_sets/maps_earth.py
+++ /dev/null
@@ -1,217 +0,0 @@
-# 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.
-
-import logging
-
-from telemetry.page import page
-from telemetry.page import page_set
-
-
-_MOVE_GOOGLE_MAPS_JS = """
-/**
- * Issues/dispatches keyboard event to target element.
- * @param {element} target Target element.
- * @param {string} eventType One of 'keyup', 'keydown', 'keypress'.
- * @param {number} keyCode Key code.
- */
-function issueKeyEvent(target, eventType, keyCode) {
- var event = document.createEventObject ?
- document.createEventObject() : document.createEvent('Events');
-
- if (event.initEvent) {
- event.initEvent(eventType, true, true);
- }
-
- event.keyCode = keyCode;
- event.which = keyCode;
-
- target.dispatchEvent ?
- target.dispatchEvent(event) : target.fireEvent('on' + eventType, event);
-}
-
-// Map keyboard shortcut to key code mapping.
-var MAP_KEYBOARD = {
- LEFT: 37,
- UP: 38,
- RIGHT: 39,
- DOWN: 40,
- ZOOM_IN: 187,
- ZOOM_OUT: 189
-};
-
-// The scene canvas is the first one on the page apparently. The 2nd one is the
-// minimap. I'd rely on the canvas ordering instead of the class since Tactile's
-// obfuscating classes soon.
-var sceneCanvas = document.querySelector('canvas');
-
-/**
- * Moves Google maps.
- * @param {string} action Action defined in MAP_KEYBOARD.
- * @param {number} duration_msecs Duration (in ms) of the action.
- */
-function moveMap(action, duration_msecs) {
- keycode = MAP_KEYBOARD[action];
- issueKeyEvent(sceneCanvas, 'keydown', keycode);
- setTimeout(function() {issueKeyEvent(sceneCanvas, 'keyup', keycode);},
- duration_msecs);
-}
-
-/**
- * Creates and dispatches mouse event.
- * @param {object} target DOM element to dispatch event to.
- * @param {string} eventType Mouse event, one of 'mousedown', 'mouseup',
- * 'mousemove' event.
- * @param {number} x clientX position.
- * @param {number} y clientY position.
- * @param {number} delay Milliseconds delay to dispatch the event.
- */
-function dispatchMouseEvent(target, eventType, x, y, delay) {
- setTimeout(function() {
- /* TODO(deanliao): investigate why the new MouseEvent creator won't work.
- var button = eventType == 'mouseup' ? -1 : 0;
- var event = new MouseEvent(
- eventType,
- {clientX: x,
- clientY: y,
- button: button});
- */
-
- var event = document.createEvent('MouseEvents');
- var detail = eventType == 'mousemove' ? 0 : 1;
- event.initMouseEvent(eventType, true, true, window,
- detail, x, y, x, y);
-
- target.dispatchEvent(event);
-
- }, delay);
-}
-
-
-/**
- * Drag-n-drops mouse linearly for a while.
- * @param {object} target DOM element to dispatch event to.
- * @param {number} startX Starting clientX position.
- * @param {number} startY Starting clientY position.
- * @param {number} endX Starting clientX position.
- * @param {number} endY Starting clientY position.
- * @param {number} duration Drag for milliseconds.
- */
-function linearMouseDragDrop(target, startX, startY, endX, endY, duration) {
- var interval = 10;
- var numSteps = Math.floor(duration / interval) - 1;
- var deltaX = (endX - startX) / numSteps;
- var deltaY = (endY - startY) / numSteps;
- var x = startX;
- var y = startY;
- var delay = 0;
- dispatchMouseEvent(target, 'mousedown', x, y, delay);
- for (i = 1; i < numSteps; i++) {
- x = Math.floor(startX + i * deltaX);
- y = Math.floor(startY + i * deltaY);
- delay += interval;
- dispatchMouseEvent(target, 'mousemove', x, y, delay);
- }
- dispatchMouseEvent(target, 'mouseup', endX, endY, delay + interval);
-}
-"""
-
-
-class MapsEarthPage(page.Page):
- """Page for surfing Google Maps with Earth layer."""
-
- _MAP_MODE_SWITCHER = '.widget-minimap-shim-button'
- _START_END_COORD = {
- 'LEFT': (700, 380, 20, 380),
- 'RIGHT': (20, 380, 700, 380),
- 'UP': (500, 600, 500, 20),
- 'DOWN': (500, 20, 500, 600)}
-
- def __init__(self, parent_page_set, url, page_name, map_load_wait_secs=10,
- drag_duration_ms=500):
- super(MapsEarthPage, self).__init__(
- url=url,
- page_set=parent_page_set,
- name=page_name)
- self._map_load_wait_sec = map_load_wait_secs
- self._drag_duration_ms = drag_duration_ms
-
- def CanRunOnBrowser(self, browser_info):
- if not browser_info.HasWebGLSupport():
- logging.warning('Browser does not support webgl, skipping test')
- return False
- return True
-
- def RunNavigateSteps(self, action_runner):
- super(MapsEarthPage, self).RunNavigateSteps(action_runner)
- logging.info('Wait for Google Maps mode switcher')
- action_runner.WaitForElement(selector=self._MAP_MODE_SWITCHER)
- logging.info('Loaded. Wait for %d more seconds...' %
- self._map_load_wait_sec)
- action_runner.Wait(self._map_load_wait_sec)
- self.PrepareInteraction(action_runner)
-
- def MouseDrag(self, action_runner, direction, duration_ms):
- """Drags mouse on the map.
-
- Args:
- action_runner: Telemetry action runner.
- direction: Drag direction. One of 'UP', 'DOWN', 'LEFT', 'RIGHT'.
- duration_ms: Duration of the drag.
- """
- if direction not in self._START_END_COORD:
- logging.error('Invalid direction %r. Should be one of %r', direction,
- self._START_END_COORD.keys())
- return
- start_end_coord = ', '.join(
- str(x) for x in self._START_END_COORD[direction])
- js = 'linearMouseDragDrop(sceneCanvas, %s, %d);' % (start_end_coord,
- duration_ms)
- logging.info('MouseDrag %s for %d ms. Execute %s', direction, duration_ms,
- js)
- action_runner.ExecuteJavaScript(js)
- action_runner.Wait(duration_ms / 1000.0 + 0.2)
-
- def RunPageInteractions(self, action_runner):
- logging.info('RunPageInteractions')
- for action in ['DOWN', 'LEFT', 'LEFT', 'UP', 'RIGHT', 'RIGHT', 'UP',
- 'LEFT', 'LEFT', 'UP', 'RIGHT', 'RIGHT', 'UP', 'LEFT',
- 'LEFT']:
- self.MouseDrag(action_runner, action, self._drag_duration_ms)
-
- # TODO(deanliao): figure out why keyboard event doesn't work.
- # for action in
- # logging.info('moveMap ' + action)
- # action_runner.ExecuteJavaScript(
- # "moveMap('%s', %d);" % (action, self._KEYDOWN_MSEC))
- # action_runner.Wait(self._ACTION_INTERVAL_SECS)
-
- def PrepareInteraction(self, action_runner):
- action_runner.ExecuteJavaScript(_MOVE_GOOGLE_MAPS_JS)
- logging.info('_MOVE_GOOGLE_MAPS_JS injected.')
-
-
-class MapsEarthPageSet(page_set.PageSet):
- """Page set for Google Maps with Earth layer."""
-
- def __init__(self):
- super(MapsEarthPageSet, self).__init__(
- archive_data_file='data/maps_earth.json',
- bucket=page_set.PUBLIC_BUCKET)
-
- self.AddUserStory(
- MapsEarthPage(
- self,
- 'https://www.google.com/maps/@37.7502889,-122.4791582,15z',
- 'Maps.SanFrancisco',
- map_load_wait_secs=3,
- drag_duration_ms=1500))
-
- # Temporary disable Earth test as it doesn't run smooth yet.
- # self.AddUserStory(
- # MapsEarthPage(
- # self,
- # 'https://goo.gl/maps/NRtaW',
- # 'Maps.SanFranciscoEarth',
- # map_load_wait_secs=10,
- # drag_duration_ms=2000))
« no previous file with comments | « tools/perf/page_sets/data/maps_earth_001.wpr.sha1 ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698