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

Unified Diff: tools/telemetry/telemetry/internal/browser/web_contents.py

Issue 1647513002: Delete tools/telemetry. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 11 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
Index: tools/telemetry/telemetry/internal/browser/web_contents.py
diff --git a/tools/telemetry/telemetry/internal/browser/web_contents.py b/tools/telemetry/telemetry/internal/browser/web_contents.py
deleted file mode 100644
index 000c1ee46568307939f55137a9261ea5f03901a2..0000000000000000000000000000000000000000
--- a/tools/telemetry/telemetry/internal/browser/web_contents.py
+++ /dev/null
@@ -1,314 +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 os
-
-from telemetry.core import exceptions
-from telemetry.core import util
-
-DEFAULT_WEB_CONTENTS_TIMEOUT = 90
-
-# TODO(achuith, dtu, nduca): Add unit tests specifically for WebContents,
-# independent of Tab.
-class WebContents(object):
- """Represents web contents in the browser"""
- def __init__(self, inspector_backend):
- self._inspector_backend = inspector_backend
-
- with open(os.path.join(os.path.dirname(__file__),
- 'network_quiescence.js')) as f:
- self._quiescence_js = f.read()
-
- @property
- def id(self):
- """Return the unique id string for this tab object."""
- return self._inspector_backend.id
-
- def GetUrl(self):
- """Returns the URL to which the WebContents is connected.
-
- Raises:
- exceptions.Error: If there is an error in inspector backend connection.
- """
- return self._inspector_backend.url
-
- def GetWebviewContexts(self):
- """Returns a list of webview contexts within the current inspector backend.
-
- Returns:
- A list of WebContents objects representing the webview contexts.
-
- Raises:
- exceptions.Error: If there is an error in inspector backend connection.
- """
- webviews = []
- inspector_backends = self._inspector_backend.GetWebviewInspectorBackends()
- for inspector_backend in inspector_backends:
- webviews.append(WebContents(inspector_backend))
- return webviews
-
- def WaitForDocumentReadyStateToBeComplete(self,
- timeout=DEFAULT_WEB_CONTENTS_TIMEOUT):
- """Waits for the document to finish loading.
-
- Raises:
- exceptions.Error: See WaitForJavaScriptExpression() for a detailed list
- of possible exceptions.
- """
-
- self.WaitForJavaScriptExpression(
- 'document.readyState == "complete"', timeout)
-
- def WaitForDocumentReadyStateToBeInteractiveOrBetter(self,
- timeout=DEFAULT_WEB_CONTENTS_TIMEOUT):
- """Waits for the document to be interactive.
-
- Raises:
- exceptions.Error: See WaitForJavaScriptExpression() for a detailed list
- of possible exceptions.
- """
- self.WaitForJavaScriptExpression(
- 'document.readyState == "interactive" || '
- 'document.readyState == "complete"', timeout)
-
- def WaitForJavaScriptExpression(self, expr, timeout,
- dump_page_state_on_timeout=True):
- """Waits for the given JavaScript expression to be True.
-
- This method is robust against any given Evaluation timing out.
-
- Args:
- expr: The expression to evaluate.
- timeout: The number of seconds to wait for the expression to be True.
- dump_page_state_on_timeout: Whether to provide additional information on
- the page state if a TimeoutException is thrown.
-
- Raises:
- exceptions.TimeoutException: On a timeout.
- exceptions.Error: See EvaluateJavaScript() for a detailed list of
- possible exceptions.
- """
- def IsJavaScriptExpressionTrue():
- try:
- return bool(self.EvaluateJavaScript(expr))
- except exceptions.TimeoutException:
- # If the main thread is busy for longer than Evaluate's timeout, we
- # may time out here early. Instead, we want to wait for the full
- # timeout of this method.
- return False
- try:
- util.WaitFor(IsJavaScriptExpressionTrue, timeout)
- except exceptions.TimeoutException as e:
- if not dump_page_state_on_timeout:
- raise
-
- # Try to make timeouts a little more actionable by dumping |this|.
- raise exceptions.TimeoutException(e.message + self.EvaluateJavaScript("""
- (function() {
- var error = '\\n\\nJavaScript |this|:\\n';
- for (name in this) {
- try {
- error += '\\t' + name + ': ' + this[name] + '\\n';
- } catch (e) {
- error += '\\t' + name + ': ???\\n';
- }
- }
- if (window && window.document) {
- error += '\\n\\nJavaScript window.document:\\n';
- for (name in window.document) {
- try {
- error += '\\t' + name + ': ' + window.document[name] + '\\n';
- } catch (e) {
- error += '\\t' + name + ': ???\\n';
- }
- }
- }
- return error;
- })();
- """))
-
- def HasReachedQuiescence(self):
- """Determine whether the page has reached quiescence after loading.
-
- Returns:
- True if 2 seconds have passed since last resource received, false
- otherwise.
- Raises:
- exceptions.Error: See EvaluateJavaScript() for a detailed list of
- possible exceptions.
- """
-
- # Inclusion of the script that provides
- # window.__telemetry_testHasReachedNetworkQuiescence()
- # is idempotent, it's run on every call because WebContents doesn't track
- # page loads and we need to execute anew for every newly loaded page.
- has_reached_quiescence = (
- self.EvaluateJavaScript(self._quiescence_js +
- "window.__telemetry_testHasReachedNetworkQuiescence()"))
- return has_reached_quiescence
-
- def ExecuteJavaScript(self, statement, timeout=DEFAULT_WEB_CONTENTS_TIMEOUT):
- """Executes statement in JavaScript. Does not return the result.
-
- If the statement failed to evaluate, EvaluateException will be raised.
-
- Raises:
- exceptions.Error: See ExecuteJavaScriptInContext() for a detailed list of
- possible exceptions.
- """
- return self.ExecuteJavaScriptInContext(
- statement, context_id=None, timeout=timeout)
-
- def EvaluateJavaScript(self, expr, timeout=DEFAULT_WEB_CONTENTS_TIMEOUT):
- """Evalutes expr in JavaScript and returns the JSONized result.
-
- Consider using ExecuteJavaScript for cases where the result of the
- expression is not needed.
-
- If evaluation throws in JavaScript, a Python EvaluateException will
- be raised.
-
- If the result of the evaluation cannot be JSONized, then an
- EvaluationException will be raised.
-
- Raises:
- exceptions.Error: See EvaluateJavaScriptInContext() for a detailed list
- of possible exceptions.
- """
- return self.EvaluateJavaScriptInContext(
- expr, context_id=None, timeout=timeout)
-
- def ExecuteJavaScriptInContext(self, expr, context_id,
- timeout=DEFAULT_WEB_CONTENTS_TIMEOUT):
- """Similar to ExecuteJavaScript, except context_id can refer to an iframe.
- The main page has context_id=1, the first iframe context_id=2, etc.
-
- Raises:
- exceptions.EvaluateException
- exceptions.WebSocketDisconnected
- exceptions.TimeoutException
- exceptions.DevtoolsTargetCrashException
- """
- return self._inspector_backend.ExecuteJavaScript(
- expr, context_id=context_id, timeout=timeout)
-
- def EvaluateJavaScriptInContext(self, expr, context_id,
- timeout=DEFAULT_WEB_CONTENTS_TIMEOUT):
- """Similar to ExecuteJavaScript, except context_id can refer to an iframe.
- The main page has context_id=1, the first iframe context_id=2, etc.
-
- Raises:
- exceptions.EvaluateException
- exceptions.WebSocketDisconnected
- exceptions.TimeoutException
- exceptions.DevtoolsTargetCrashException
- """
- return self._inspector_backend.EvaluateJavaScript(
- expr, context_id=context_id, timeout=timeout)
-
- def EnableAllContexts(self):
- """Enable all contexts in a page. Returns the number of available contexts.
-
- Raises:
- exceptions.WebSocketDisconnected
- exceptions.TimeoutException
- exceptions.DevtoolsTargetCrashException
- """
- return self._inspector_backend.EnableAllContexts()
-
- def WaitForNavigate(self, timeout=DEFAULT_WEB_CONTENTS_TIMEOUT):
- """Waits for the navigation to complete.
-
- The current page is expect to be in a navigation.
- This function returns when the navigation is complete or when
- the timeout has been exceeded.
-
- Raises:
- exceptions.TimeoutException
- exceptions.DevtoolsTargetCrashException
- """
- self._inspector_backend.WaitForNavigate(timeout)
-
- def Navigate(self, url, script_to_evaluate_on_commit=None,
- timeout=DEFAULT_WEB_CONTENTS_TIMEOUT):
- """Navigates to url.
-
- If |script_to_evaluate_on_commit| is given, the script source string will be
- evaluated when the navigation is committed. This is after the context of
- the page exists, but before any script on the page itself has executed.
-
- Raises:
- exceptions.TimeoutException
- exceptions.DevtoolsTargetCrashException
- """
- self._inspector_backend.Navigate(url, script_to_evaluate_on_commit, timeout)
-
- @property
- def message_output_stream(self):
- return self._inspector_backend.message_output_stream
-
- @message_output_stream.setter
- def message_output_stream(self, stream):
- self._inspector_backend.message_output_stream = stream
-
- @property
- def timeline_model(self):
- return self._inspector_backend.timeline_model
-
- def IsAlive(self):
- """Whether the WebContents is still operating normally.
-
- Since WebContents function asynchronously, this method does not guarantee
- that the WebContents will still be alive at any point in the future.
-
- Returns:
- A boolean indicating whether the WebContents is opearting normally.
- """
- return self._inspector_backend.IsInspectable()
-
- def CloseConnections(self):
- """Closes all TCP sockets held open by the browser.
-
- Raises:
- exceptions.DevtoolsTargetCrashException if the tab is not alive.
- """
- if not self.IsAlive():
- raise exceptions.DevtoolsTargetCrashException
- self.ExecuteJavaScript('window.chrome && chrome.benchmarking &&'
- 'chrome.benchmarking.closeConnections()')
-
- 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: Ddistance 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
- """
- return self._inspector_backend.SynthesizeScrollGesture(
- x=x, y=y, xDistance=xDistance, yDistance=yDistance,
- xOverscroll=xOverscroll, yOverscroll=yOverscroll,
- preventFling=preventFling, speed=speed,
- gestureSourceType=gestureSourceType, repeatCount=repeatCount,
- repeatDelayMs=repeatDelayMs,
- interactionMarkerName=interactionMarkerName,
- timeout=timeout)

Powered by Google App Engine
This is Rietveld 408576698