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

Unified Diff: chrome/test/pyautolib/dom_mutation_observer.js

Issue 222873002: Remove pyauto tests. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: sync Created 6 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 | « chrome/test/pyautolib/chromotinglib.py ('k') | chrome/test/pyautolib/download_info.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/test/pyautolib/dom_mutation_observer.js
===================================================================
--- chrome/test/pyautolib/dom_mutation_observer.js (revision 261231)
+++ chrome/test/pyautolib/dom_mutation_observer.js (working copy)
@@ -1,276 +0,0 @@
-/* Copyright (c) 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.
- *
- * Helper javascript injected whenever a DomMutationEventObserver is created.
- *
- * This script uses MutationObservers to watch for changes to the DOM, then
- * reports the event to the observer using the DomAutomationController. An
- * anonymous namespace is used to prevent conflict with other Javascript.
- *
- * Args:
- * automation_id: Automation id used to route DomAutomationController messages.
- * observer_id: Id of the observer who will be receiving the messages.
- * observer_type: One of 'add', 'remove', 'change', or 'exists'.
- * xpath: XPath used to specify the DOM node of interest.
- * attribute: If |expected_value| is provided, check if this attribute of the
- * DOM node matches |expected value|.
- * expected_value: If not null, regular expression to match with the value of
- * |attribute| after the mutation.
- */
-function(automation_id, observer_id, observer_type, xpath, attribute,
- expected_value) {
-
- /* Raise an event for the DomMutationEventObserver. */
- function raiseEvent() {
- if (window.domAutomationController) {
- console.log("Event sent to DomEventObserver with id=" +
- observer_id + ".");
- window.domAutomationController.sendWithId(
- automation_id, "__dom_mutation_observer__:" + observer_id);
- }
- }
-
- /* Calls raiseEvent if the expected node has been added to the DOM.
- *
- * Args:
- * mutations: A list of mutation objects.
- * observer: The mutation observer object associated with this callback.
- */
- function addNodeCallback(mutations, observer) {
- for (var j=0; j<mutations.length; j++) {
- for (var i=0; i<mutations[j].addedNodes.length; i++) {
- var node = mutations[j].addedNodes[i];
- if (xpathMatchesNode(node, xpath) &&
- nodeAttributeValueEquals(node, attribute, expected_value)) {
- raiseEvent();
- observer.disconnect();
- delete observer;
- return;
- }
- }
- }
- }
-
- /* Calls raiseEvent if the expected node has been removed from the DOM.
- *
- * Args:
- * mutations: A list of mutation objects.
- * observer: The mutation observer object associated with this callback.
- */
- function removeNodeCallback(mutations, observer) {
- var node = firstXPathNode(xpath);
- if (!node) {
- raiseEvent();
- observer.disconnect();
- delete observer;
- }
- }
-
- /* Calls raiseEvent if the given node has been changed to expected_value.
- *
- * Args:
- * mutations: A list of mutation objects.
- * observer: The mutation observer object associated with this callback.
- */
- function changeNodeCallback(mutations, observer) {
- for (var j=0; j<mutations.length; j++) {
- if (nodeAttributeValueEquals(mutations[j].target, attribute,
- expected_value)) {
- raiseEvent();
- observer.disconnect();
- delete observer;
- return;
- }
- }
- }
-
- /* Calls raiseEvent if the expected node exists in the DOM.
- *
- * Args:
- * mutations: A list of mutation objects.
- * observer: The mutation observer object associated with this callback.
- */
- function existsNodeCallback(mutations, observer) {
- if (findNodeMatchingXPathAndValue(xpath, attribute, expected_value)) {
- raiseEvent();
- observer.disconnect();
- delete observer;
- return;
- }
- }
-
- /* Return true if the xpath matches the given node.
- *
- * Args:
- * node: A node object from the DOM.
- * xpath: An XPath used to compare with the DOM node.
- */
- function xpathMatchesNode(node, xpath) {
- var con = document.evaluate(xpath, document, null,
- XPathResult.UNORDERED_NODE_ITERATOR_TYPE, null);
- var thisNode = con.iterateNext();
- while (thisNode) {
- if (node == thisNode) {
- return true;
- }
- thisNode = con.iterateNext();
- }
- return false;
- }
-
- /* Returns the first node in the DOM that matches the xpath.
- *
- * Args:
- * xpath: XPath used to specify the DOM node of interest.
- */
- function firstXPathNode(xpath) {
- return document.evaluate(xpath, document, null,
- XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;
- }
-
- /* Returns the first node in the DOM that matches the xpath.
- *
- * Args:
- * xpath: XPath used to specify the DOM node of interest.
- * attribute: The attribute to match |expected_value| against.
- * expected_value: A regular expression to match with the node's
- * |attribute|. If null the match always succeeds.
- */
- function findNodeMatchingXPathAndValue(xpath, attribute, expected_value) {
- var nodes = document.evaluate(xpath, document, null,
- XPathResult.ORDERED_NODE_ITERATOR_TYPE, null);
- var node;
- while ( (node = nodes.iterateNext()) ) {
- if (nodeAttributeValueEquals(node, attribute, expected_value))
- return node;
- }
- return null;
- }
-
- /* Returns true if the node's |attribute| value is matched by the regular
- * expression |expected_value|, false otherwise.
- *
- * Args:
- * node: A node object from the DOM.
- * attribute: The attribute to match |expected_value| against.
- * expected_value: A regular expression to match with the node's
- * |attribute|. If null the test always passes.
- */
- function nodeAttributeValueEquals(node, attribute, expected_value) {
- return expected_value == null ||
- (node[attribute] && RegExp(expected_value, "").test(node[attribute]));
- }
-
- /* Watch for a node matching xpath to be added to the DOM.
- *
- * Args:
- * xpath: XPath used to specify the DOM node of interest.
- */
- function observeAdd(xpath) {
- window.domAutomationController.send("success");
- if (findNodeMatchingXPathAndValue(xpath, attribute, expected_value)) {
- raiseEvent();
- console.log("Matching node in DOM, assuming it was previously added.");
- return;
- }
-
- var obs = new MutationObserver(addNodeCallback);
- obs.observe(document,
- { childList: true,
- attributes: true,
- characterData: true,
- subtree: true});
- }
-
- /* Watch for a node matching xpath to be removed from the DOM.
- *
- * Args:
- * xpath: XPath used to specify the DOM node of interest.
- */
- function observeRemove(xpath) {
- window.domAutomationController.send("success");
- if (!firstXPathNode(xpath)) {
- raiseEvent();
- console.log("No matching node in DOM, assuming it was already removed.");
- return;
- }
-
- var obs = new MutationObserver(removeNodeCallback);
- obs.observe(document,
- { childList: true,
- attributes: true,
- subtree: true});
- }
-
- /* Watch for the textContent of a node matching xpath to change to
- * expected_value.
- *
- * Args:
- * xpath: XPath used to specify the DOM node of interest.
- */
- function observeChange(xpath) {
- var node = firstXPathNode(xpath);
- if (!node) {
- console.log("No matching node in DOM.");
- window.domAutomationController.send(
- "No DOM node matching xpath exists.");
- return;
- }
- window.domAutomationController.send("success");
-
- var obs = new MutationObserver(changeNodeCallback);
- obs.observe(node,
- { childList: true,
- attributes: true,
- characterData: true,
- subtree: true});
- }
-
- /* Watch for a node matching xpath to exist in the DOM.
- *
- * Args:
- * xpath: XPath used to specify the DOM node of interest.
- */
- function observeExists(xpath) {
- window.domAutomationController.send("success");
- if (findNodeMatchingXPathAndValue(xpath, attribute, expected_value)) {
- raiseEvent();
- console.log("Node already exists in DOM.");
- return;
- }
-
- var obs = new MutationObserver(existsNodeCallback);
- obs.observe(document,
- { childList: true,
- attributes: true,
- characterData: true,
- subtree: true});
- }
-
- /* Interpret arguments and launch the requested observer function. */
- function installMutationObserver() {
- switch (observer_type) {
- case "add":
- observeAdd(xpath);
- break;
- case "remove":
- observeRemove(xpath);
- break;
- case "change":
- observeChange(xpath);
- break;
- case "exists":
- observeExists(xpath);
- break;
- }
- console.log("MutationObserver javscript injection completed.");
- }
-
- /* Ensure the DOM is loaded before attempting to create MutationObservers. */
- if (document.body) {
- installMutationObserver();
- } else {
- window.addEventListener("DOMContentLoaded", installMutationObserver, true);
- }
-}
« no previous file with comments | « chrome/test/pyautolib/chromotinglib.py ('k') | chrome/test/pyautolib/download_info.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698