Index: tools/telemetry/telemetry/internal/actions/page_action.py |
diff --git a/tools/telemetry/telemetry/internal/actions/page_action.py b/tools/telemetry/telemetry/internal/actions/page_action.py |
deleted file mode 100644 |
index a77d29619802cab631322047832e7591cc401c11..0000000000000000000000000000000000000000 |
--- a/tools/telemetry/telemetry/internal/actions/page_action.py |
+++ /dev/null |
@@ -1,136 +0,0 @@ |
-# Copyright 2012 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 re |
- |
-from telemetry import decorators |
- |
-GESTURE_SOURCE_DEFAULT = 'DEFAULT' |
-GESTURE_SOURCE_MOUSE = 'MOUSE' |
-GESTURE_SOURCE_TOUCH = 'TOUCH' |
-SUPPORTED_GESTURE_SOURCES = (GESTURE_SOURCE_DEFAULT, |
- GESTURE_SOURCE_MOUSE, |
- GESTURE_SOURCE_TOUCH) |
- |
-class PageActionNotSupported(Exception): |
- pass |
- |
-class PageActionFailed(Exception): |
- pass |
- |
- |
-class PageAction(object): |
- """Represents an action that a user might try to perform to a page.""" |
- |
- def WillRunAction(self, tab): |
- """Override to do action-specific setup before |
- Test.WillRunAction is called.""" |
- pass |
- |
- def RunAction(self, tab): |
- raise NotImplementedError() |
- |
- def CleanUp(self, tab): |
- pass |
- |
-def EvaluateCallbackWithElement( |
- tab, callback_js, selector=None, text=None, element_function=None, |
- wait=False, timeout_in_seconds=60): |
- """Evaluates the JavaScript callback with the given element. |
- |
- The element may be selected via selector, text, or element_function. |
- Only one of these arguments must be specified. |
- |
- Returns: |
- The callback's return value, if any. The return value must be |
- convertible to JSON. |
- |
- Args: |
- tab: A telemetry.core.Tab object. |
- callback_js: The JavaScript callback to call (as string). |
- The callback receive 2 parameters: the element, and information |
- string about what method was used to retrieve the element. |
- Example: ''' |
- function(element, info) { |
- if (!element) { |
- throw Error('Can not find element: ' + info); |
- } |
- element.click() |
- }''' |
- selector: A CSS selector describing the element. |
- text: The element must contains this exact text. |
- element_function: A JavaScript function (as string) that is used |
- to retrieve the element. For example: |
- '(function() { return foo.element; })()'. |
- wait: Whether to wait for the return value to be true. |
- timeout_in_seconds: The timeout for wait (if waiting). |
- """ |
- count = 0 |
- info_msg = '' |
- if element_function is not None: |
- count = count + 1 |
- info_msg = 'using element_function "%s"' % re.escape(element_function) |
- if selector is not None: |
- count = count + 1 |
- info_msg = 'using selector "%s"' % _EscapeSelector(selector) |
- element_function = 'document.querySelector(\'%s\')' % _EscapeSelector( |
- selector) |
- if text is not None: |
- count = count + 1 |
- info_msg = 'using exact text match "%s"' % re.escape(text) |
- element_function = ''' |
- (function() { |
- function _findElement(element, text) { |
- if (element.innerHTML == text) { |
- return element; |
- } |
- |
- var childNodes = element.childNodes; |
- for (var i = 0, len = childNodes.length; i < len; ++i) { |
- var found = _findElement(childNodes[i], text); |
- if (found) { |
- return found; |
- } |
- } |
- return null; |
- } |
- return _findElement(document, '%s'); |
- })()''' % text |
- |
- if count != 1: |
- raise PageActionFailed( |
- 'Must specify 1 way to retrieve element, but %s was specified.' % count) |
- |
- code = ''' |
- (function() { |
- var element = %s; |
- var callback = %s; |
- return callback(element, '%s'); |
- })()''' % (element_function, callback_js, info_msg) |
- |
- if wait: |
- tab.WaitForJavaScriptExpression(code, timeout_in_seconds) |
- return True |
- else: |
- return tab.EvaluateJavaScript(code) |
- |
-def _EscapeSelector(selector): |
- return selector.replace('\'', '\\\'') |
- |
- |
-@decorators.Cache |
-def IsGestureSourceTypeSupported(tab, gesture_source_type): |
- # TODO(dominikg): remove once support for |
- # 'chrome.gpuBenchmarking.gestureSourceTypeSupported' has |
- # been rolled into reference build. |
- if tab.EvaluateJavaScript(""" |
- typeof chrome.gpuBenchmarking.gestureSourceTypeSupported === |
- 'undefined'"""): |
- return (tab.browser.platform.GetOSName() != 'mac' or |
- gesture_source_type.lower() != 'touch') |
- |
- return tab.EvaluateJavaScript(""" |
- chrome.gpuBenchmarking.gestureSourceTypeSupported( |
- chrome.gpuBenchmarking.%s_INPUT)""" |
- % (gesture_source_type.upper())) |