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

Unified Diff: chrome/browser/resources/chromeos/chromevox/cvox2/background/automation_util.js

Issue 637223006: Initial support for Ranges over automation nodes (used to track ChromeVox focus). (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Reintroduce test. Created 6 years, 2 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: chrome/browser/resources/chromeos/chromevox/cvox2/background/automation_util.js
diff --git a/chrome/browser/resources/chromeos/chromevox/cvox2/background/automation_util.js b/chrome/browser/resources/chromeos/chromevox/cvox2/background/automation_util.js
index 6ce94eae686945a6f3481b7396a5018a045bc123..ec8fe08fa0a7ab679d2bf33a4b7dd20e5034a2d6 100644
--- a/chrome/browser/resources/chromeos/chromevox/cvox2/background/automation_util.js
+++ b/chrome/browser/resources/chromeos/chromevox/cvox2/background/automation_util.js
@@ -30,6 +30,7 @@ AutomationUtil.Dir = {
goog.scope(function() {
+var AutomationNode = chrome.automation.AutomationNode;
var Dir = AutomationUtil.Dir;
/**
@@ -154,4 +155,49 @@ AutomationUtil.findNodeUntil = function(cur, dir, pred, opt_options) {
return opt_options.before ? before : after;
};
+
+/**
+ * Returns ancestors of the given node (inclusive).
dmazzoni 2014/10/17 16:46:08 Specify the order in which it returns the ancestor
Peter Lundblad 2014/10/23 13:35:07 If order is guaranteed, specify that.
+ * @param {!AutomationNode} node
+ * @return {Array.<AutomationNode>}
+ */
+AutomationUtil.getAncestors = function(node) {
Peter Lundblad 2014/10/23 13:35:07 nit: consider calling getAncestorsAndSelf or somet
+ var result = [node];
+ var target = node;
+ while (target = target.parent())
+ result.push(target);
+ return result;
+};
+
+/**
+ * Returns whether |first| comes before |second| in Dir.FORWARD traversal.
Peter Lundblad 2014/10/23 13:35:07 Should specify if that this is not strict.
+ * @param {!AutomationNode} first
+ * @param {!AutomationNode} second
+ * @return {boolean}
+ */
+AutomationUtil.isBefore = function(first, second) {
dmazzoni 2014/10/17 16:46:08 How about a unit test for this? I think it's wort
+ if (first === second)
+ return true;
+
+ var firstA = AutomationUtil.getAncestors(first);
+ var secondA = AutomationUtil.getAncestors(second);
+ var lcaIndex;
Peter Lundblad 2014/10/23 13:35:07 What does 'lca' mean?
+ for (var i = firstA.length - 1, j = secondA.length - 1;
+ firstA[i] === secondA[j];
+ i--, j--)
+ lcaIndex = [i, j];
+
+ if (lcaIndex) {
+ var firstC = firstA[lcaIndex[0] - 1];
+ var secondC = secondA[lcaIndex[1] - 1];
+ var firstCount = 0, secondCount = 0;
+ // TODO(dtseng): Expose parent in index (chrome.automation.AutomationNode).
dmazzoni 2014/10/17 16:46:08 How about writing an indexInParent helper, which c
+ while (firstC = firstC.nextSibling()) firstCount++;
+ firstCount++;
Peter Lundblad 2014/10/23 13:35:07 Looks like one increment too much here.
+ while (secondC = secondC.nextSibling())
+ secondCount++;
+ return firstCount <= secondCount;
+ }
+};
Peter Lundblad 2014/10/23 13:35:07 This function is unnecessarily cryptic because of
+
}); // goog.scope

Powered by Google App Engine
This is Rietveld 408576698