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

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

Issue 1457683009: Complete live region support in ChromeVox Next. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebase Created 5 years 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 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 Handles automation from a desktop automation node. 6 * @fileoverview Handles automation from a desktop automation node.
7 */ 7 */
8 8
9 goog.provide('DesktopAutomationHandler'); 9 goog.provide('DesktopAutomationHandler');
10 10
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
56 * @param {Object} evt 56 * @param {Object} evt
57 */ 57 */
58 onEventDefault: function(evt) { 58 onEventDefault: function(evt) {
59 var node = evt.target; 59 var node = evt.target;
60 60
61 if (!node) 61 if (!node)
62 return; 62 return;
63 63
64 var prevRange = global.backgroundObj.currentRange; 64 var prevRange = global.backgroundObj.currentRange;
65 65
66 global.backgroundObj.currentRange = cursors.Range.fromNode(node); 66 global.backgroundObj.setCurrentRange(cursors.Range.fromNode(node));
David Tseng 2015/11/23 23:23:57 Chang this to ChromeVoxState.
dmazzoni 2015/11/23 23:51:02 Should Background pass ChromeVoxState to the Deskt
dmazzoni 2015/11/30 22:00:47 OK, I made ChromeVoxState a singleton for now beca
67 67
68 // Check to see if we've crossed roots. Continue if we've crossed roots or 68 // Check to see if we've crossed roots. Continue if we've crossed roots or
69 // are not within web content. 69 // are not within web content.
70 if (node.root.role == RoleType.desktop || 70 if (node.root.role == RoleType.desktop ||
71 !prevRange || 71 !prevRange ||
72 prevRange.start.node.root != node.root) 72 prevRange.start.node.root != node.root)
73 global.backgroundObj.refreshMode(node.root.docUrl || ''); 73 global.backgroundObj.refreshMode(node.root.docUrl || '');
74 74
75 // Don't process nodes inside of web content if ChromeVox Next is inactive. 75 // Don't process nodes inside of web content if ChromeVox Next is inactive.
76 if (node.root.role != RoleType.desktop && 76 if (node.root.role != RoleType.desktop &&
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
175 webView = webView.parent; 175 webView = webView.parent;
176 176
177 if (!webView || !webView.state.focused) 177 if (!webView || !webView.state.focused)
178 return; 178 return;
179 179
180 var node = AutomationUtil.findNodePost(root, 180 var node = AutomationUtil.findNodePost(root,
181 Dir.FORWARD, 181 Dir.FORWARD,
182 AutomationPredicate.leaf); 182 AutomationPredicate.leaf);
183 183
184 if (node) 184 if (node)
185 global.backgroundObj.currentRange = cursors.Range.fromNode(node); 185 global.backgroundObj.setCurrentRange(cursors.Range.fromNode(node));
186 186
187 if (global.backgroundObj.currentRange) 187 if (global.backgroundObj.currentRange)
188 new Output().withSpeechAndBraille( 188 new Output().withSpeechAndBraille(
189 global.backgroundObj.currentRange, null, evt.type) 189 global.backgroundObj.currentRange, null, evt.type)
190 .go(); 190 .go();
191 }, 191 },
192 192
193 /** 193 /**
194 * Provides all feedback once a text selection change event fires. 194 * Provides all feedback once a text selection change event fires.
195 * @param {Object} evt 195 * @param {Object} evt
196 */ 196 */
197 onTextOrTextSelectionChanged: function(evt) { 197 onTextOrTextSelectionChanged: function(evt) {
198 if (!this.isEditable_(evt.target)) 198 if (!this.isEditable_(evt.target))
199 return; 199 return;
200 200
201 // Don't process nodes inside of web content if ChromeVox Next is inactive. 201 // Don't process nodes inside of web content if ChromeVox Next is inactive.
202 if (evt.target.root.role != RoleType.desktop && 202 if (evt.target.root.role != RoleType.desktop &&
203 global.backgroundObj.mode === ChromeVoxMode.CLASSIC) 203 global.backgroundObj.mode === ChromeVoxMode.CLASSIC)
204 return; 204 return;
205 205
206 if (!evt.target.state.focused) 206 if (!evt.target.state.focused)
207 return; 207 return;
208 208
209 if (!global.backgroundObj.currentRange) { 209 if (!global.backgroundObj.currentRange) {
210 this.onEventDefault(evt); 210 this.onEventDefault(evt);
211 global.backgroundObj.currentRange = cursors.Range.fromNode(evt.target); 211 global.backgroundObj.setCurrentRange(cursors.Range.fromNode(evt.target));
212 } 212 }
213 213
214 this.createEditableTextHandlerIfNeeded_(evt.target); 214 this.createEditableTextHandlerIfNeeded_(evt.target);
215 215
216 var textChangeEvent = new cvox.TextChangeEvent( 216 var textChangeEvent = new cvox.TextChangeEvent(
217 evt.target.value, 217 evt.target.value,
218 evt.target.textSelStart, 218 evt.target.textSelStart,
219 evt.target.textSelEnd, 219 evt.target.textSelEnd,
220 true); // triggered by user 220 true); // triggered by user
221 221
(...skipping 13 matching lines...) Expand all
235 if (evt.target.root.role != RoleType.desktop && 235 if (evt.target.root.role != RoleType.desktop &&
236 global.backgroundObj.mode === ChromeVoxMode.CLASSIC) 236 global.backgroundObj.mode === ChromeVoxMode.CLASSIC)
237 return; 237 return;
238 238
239 if (!evt.target.state.focused) 239 if (!evt.target.state.focused)
240 return; 240 return;
241 241
242 // Value change events fire on web editables when typing. Suppress them. 242 // Value change events fire on web editables when typing. Suppress them.
243 if (!global.backgroundObj.currentRange || !this.isEditable_(evt.target)) { 243 if (!global.backgroundObj.currentRange || !this.isEditable_(evt.target)) {
244 this.onEventDefault(evt); 244 this.onEventDefault(evt);
245 global.backgroundObj.currentRange = cursors.Range.fromNode(evt.target); 245 global.backgroundObj.setCurrentRange(cursors.Range.fromNode(evt.target));
246 } 246 }
247 }, 247 },
248 248
249 /** 249 /**
250 * Handle updating the active indicator when the document scrolls. 250 * Handle updating the active indicator when the document scrolls.
251 * @override 251 * @override
252 */ 252 */
253 onScrollPositionChanged: function(evt) { 253 onScrollPositionChanged: function(evt) {
254 var currentRange = global.backgroundObj.currentRange; 254 var currentRange = global.backgroundObj.currentRange;
255 if (currentRange) 255 if (currentRange)
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
302 if (cvox.ChromeVox.isMac) 302 if (cvox.ChromeVox.isMac)
303 return; 303 return;
304 chrome.automation.getDesktop(function(desktop) { 304 chrome.automation.getDesktop(function(desktop) {
305 global.desktopAutomationHandler = new DesktopAutomationHandler(desktop); 305 global.desktopAutomationHandler = new DesktopAutomationHandler(desktop);
306 }); 306 });
307 }; 307 };
308 308
309 DesktopAutomationHandler.init_(); 309 DesktopAutomationHandler.init_();
310 310
311 }); // goog.scope 311 }); // goog.scope
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698