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

Side by Side Diff: chrome/browser/resources/chromeos/chromevox/cvox2/background/cursors.js

Issue 2757623003: Initial support for accessible text fields and focus tracking in ARC++ (Closed)
Patch Set: Simpler fix. Created 3 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 unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 /** 5 /**
6 * @fileoverview Classes related to cursors that point to and select parts of 6 * @fileoverview Classes related to cursors that point to and select parts of
7 * the automation tree. 7 * the automation tree.
8 */ 8 */
9 9
10 goog.provide('cursors.Cursor'); 10 goog.provide('cursors.Cursor');
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after
135 135
136 /** 136 /**
137 * Returns the node. If the node is invalid since the last time it 137 * Returns the node. If the node is invalid since the last time it
138 * was accessed, moves the cursor to the nearest valid ancestor first. 138 * was accessed, moves the cursor to the nearest valid ancestor first.
139 * @return {AutomationNode} 139 * @return {AutomationNode}
140 */ 140 */
141 get node() { 141 get node() {
142 for (var i = 0; i < this.ancestry_.length; i++) { 142 for (var i = 0; i < this.ancestry_.length; i++) {
143 var firstValidNode = this.ancestry_[i]; 143 var firstValidNode = this.ancestry_[i];
144 if (firstValidNode != null && firstValidNode.role !== undefined && 144 if (firstValidNode != null && firstValidNode.role !== undefined &&
145 firstValidNode.root !== undefined) { 145 firstValidNode.root != undefined) {
hidehiko 2017/03/21 03:43:23 nit: looks unnecessary change? (Or any reasons to
David Tseng 2017/03/21 16:41:16 It actually is. There are some cases, particularly
hidehiko 2017/03/21 22:00:43 firstValidNode.root can be null, I think it's nice
146 return firstValidNode; 146 return firstValidNode;
147 } 147 }
148 // If we have to walk up to an ancestor, reset the index to NODE_INDEX. 148 // If we have to walk up to an ancestor, reset the index to NODE_INDEX.
149 this.index_ = cursors.NODE_INDEX; 149 this.index_ = cursors.NODE_INDEX;
150 } 150 }
151 return null; 151 return null;
152 }, 152 },
153 153
154 /** 154 /**
155 * @return {number} 155 * @return {number}
(...skipping 13 matching lines...) Expand all
169 if (!adjustedNode) 169 if (!adjustedNode)
170 return null; 170 return null;
171 171
172 // Make no adjustments if we're within editable content. 172 // Make no adjustments if we're within editable content.
173 if (adjustedNode.state.editable) 173 if (adjustedNode.state.editable)
174 return adjustedNode; 174 return adjustedNode;
175 175
176 // Selections over line break nodes are broken. 176 // Selections over line break nodes are broken.
177 var parent = adjustedNode.parent; 177 var parent = adjustedNode.parent;
178 var grandparent = parent && parent.parent; 178 var grandparent = parent && parent.parent;
179 if (parent.role == RoleType.LINE_BREAK) { 179 if (parent && parent.role == RoleType.LINE_BREAK) {
180 adjustedNode = grandparent; 180 adjustedNode = grandparent;
181 } else if (grandparent.role == RoleType.LINE_BREAK) { 181 } else if (grandparent && grandparent.role == RoleType.LINE_BREAK) {
182 adjustedNode = grandparent.parent; 182 adjustedNode = grandparent.parent;
183 } else if (this.index_ == cursors.NODE_INDEX || 183 } else if (this.index_ == cursors.NODE_INDEX ||
184 adjustedNode.role == RoleType.INLINE_TEXT_BOX || 184 adjustedNode.role == RoleType.INLINE_TEXT_BOX ||
185 adjustedNode.nameFrom != chrome.automation.NameFromType.CONTENTS) { 185 adjustedNode.nameFrom != chrome.automation.NameFromType.CONTENTS) {
186 // A node offset or unselectable character offset. 186 // A node offset or unselectable character offset.
187 adjustedNode = parent; 187 adjustedNode = parent;
188 } else { 188 } else {
189 // A character offset into content. 189 // A character offset into content.
190 adjustedNode = 190 adjustedNode =
191 adjustedNode.find({role: RoleType.STATIC_TEXT}) || adjustedNode; 191 adjustedNode.find({role: RoleType.STATIC_TEXT}) || adjustedNode;
(...skipping 495 matching lines...) Expand 10 before | Expand all | Expand 10 after
687 /** 687 /**
688 * Returns whether this range has valid start and end cursors. 688 * Returns whether this range has valid start and end cursors.
689 * @return {boolean} 689 * @return {boolean}
690 */ 690 */
691 isValid: function() { 691 isValid: function() {
692 return this.start.isValid() && this.end.isValid(); 692 return this.start.isValid() && this.end.isValid();
693 } 693 }
694 }; 694 };
695 695
696 }); // goog.scope 696 }); // goog.scope
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698