| 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))
|
|
|