| Index: chrome/browser/resources/chromeos/chromevox/cvox2/background/editing.js
|
| diff --git a/chrome/browser/resources/chromeos/chromevox/cvox2/background/editing.js b/chrome/browser/resources/chromeos/chromevox/cvox2/background/editing.js
|
| index 4d988b800c8c900b622593c4226cc21756f989f1..74c6e59523fc65036cb3218f8141cd6a5eb326a8 100644
|
| --- a/chrome/browser/resources/chromeos/chromevox/cvox2/background/editing.js
|
| +++ b/chrome/browser/resources/chromeos/chromevox/cvox2/background/editing.js
|
| @@ -21,7 +21,7 @@ goog.scope(function() {
|
| var AutomationEvent = chrome.automation.AutomationEvent;
|
| var AutomationNode = chrome.automation.AutomationNode;
|
| var Cursor = cursors.Cursor;
|
| -var Dir = AutomationUtil.Dir;
|
| +var Dir = constants.Dir;
|
| var EventType = chrome.automation.EventType;
|
| var Range = cursors.Range;
|
| var RoleType = chrome.automation.RoleType;
|
| @@ -141,6 +141,20 @@ AutomationEditableText.prototype = {
|
| },
|
|
|
| /** @override */
|
| + describeLine: function(lineIndex, triggeredByUser) {
|
| + if (!this.node_.state.richlyEditable) {
|
| + cvox.ChromeVoxEditableTextBase.prototype.describeLine.call(
|
| + this, lineIndex, triggeredByUser);
|
| + return;
|
| + }
|
| + var line = this.getSelectedAutomationLine_();
|
| + if (line) {
|
| + new Output().withRichSpeech(line, null, Output.EventType.NAVIGATE)
|
| + .go();
|
| + }
|
| + },
|
| +
|
| + /** @override */
|
| getLineStart: function(lineIndex) {
|
| if (!this.multiline || lineIndex == 0)
|
| return 0;
|
| @@ -173,25 +187,42 @@ AutomationEditableText.prototype = {
|
|
|
| /** @private */
|
| outputBraille_: function() {
|
| - var isFirstLine = false; // First line in a multiline field.
|
| + // First line in a multiline field.
|
| + var lineIndex = this.getLineIndex(this.start);
|
| + var isFirstLine = this.multiline && lineIndex == 0;
|
| var output = new Output();
|
| var range;
|
| - if (this.multiline) {
|
| - var lineIndex = this.getLineIndex(this.start);
|
| - if (lineIndex == 0) {
|
| - isFirstLine = true;
|
| + if (this.node_.state.richlyEditable) {
|
| + range = this.getSelectedAutomationLine_();
|
| + } else if (this.multiline) {
|
| + if (isFirstLine)
|
| output.formatForBraille('$name', this.node_);
|
| - }
|
| range = new Range(
|
| new Cursor(this.node_, this.getLineStart(lineIndex)),
|
| new Cursor(this.node_, this.getLineEnd(lineIndex)));
|
| } else {
|
| range = Range.fromNode(this.node_);
|
| }
|
| - output.withBraille(range, null, Output.EventType.NAVIGATE);
|
| + if (range)
|
| + output.withBraille(range, null, Output.EventType.NAVIGATE);
|
| if (isFirstLine)
|
| output.formatForBraille('@tag_textarea');
|
| output.go();
|
| + },
|
| +
|
| + /**
|
| + * @return {Range}
|
| + * @private
|
| + */
|
| + getSelectedAutomationLine_: function() {
|
| + if (!this.node_.root.anchorObject || !this.node_.root.focusObject)
|
| + return null;
|
| +
|
| + var start = Cursor.fromNode(this.node_.root.anchorObject);
|
| + start = start.move(Unit.LINE, Movement.BOUND, Dir.BACKWARD);
|
| + var end = Cursor.fromNode(this.node_.root.focusObject);
|
| + end = end.move(Unit.LINE, Movement.BOUND, Dir.FORWARD);
|
| + return new Range(start, end);
|
| }
|
| };
|
|
|
|
|