Add new certificateProvider extension API.
[chromium-blink-merge.git] / chrome / browser / resources / chromeos / chromevox / walkers / structural_line_walker.js
blob376b04fb89d974631a6b410c03e46bff3a613f66
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
3 // found in the LICENSE file.
5 /**
6  * @fileoverview A JavaScript class for walking lines.
7  */
10 goog.provide('cvox.StructuralLineWalker');
12 goog.require('cvox.AbstractSelectionWalker');
13 goog.require('cvox.BrailleUtil');
14 goog.require('cvox.TraverseContent');
16 /**
17  * @constructor
18  * @extends {cvox.AbstractSelectionWalker}
19  */
20 cvox.StructuralLineWalker = function() {
21   goog.base(this);
22   this.grain = cvox.TraverseContent.kLine;
24 goog.inherits(cvox.StructuralLineWalker, cvox.AbstractSelectionWalker);
27 /**
28  * @override
29  */
30 cvox.StructuralLineWalker.prototype.getGranularityMsg = function() {
31   return cvox.ChromeVox.msgs.getMsg('structural_line');
35 /**
36  * @override
37  */
38 cvox.StructuralLineWalker.prototype.getDescription = function(prevSel, sel) {
39   var desc = goog.base(this, 'getDescription', prevSel, sel);
40   desc[0].text = cvox.DomUtil.getPrefixText(
41       sel.absStart().node, sel.absStart().index) + desc[0].text;
42   return desc;
46 /**
47  * @override
48  */
49 cvox.StructuralLineWalker.prototype.getBraille = function(prevSel, sel) {
50   var braille = goog.base(this, 'getBraille', prevSel, sel);
52   var objNode = this.objWalker_.sync(sel).absStart().node;
53   var node = sel.absStart().node;
54   var prevNode = prevSel.absEnd().node;
56   // Show only the visible line in braille for DOM ranges. This overrides any
57   // labels computed for the node.
58   //
59   // <textarea> needs to be treated specially. It may have TextNode children,
60   // but these reflect the initial value of the node only, and are not updated
61   // as content changes.
62   var name = undefined;
63   if (!sel.start.equals(sel.end) &&
64       !cvox.DomPredicates.editTextPredicate([objNode])) {
65     var prefix =
66         cvox.DomUtil.getPrefixText(sel.absStart().node, sel.absStart().index);
67     name = prefix + sel.getText();
68   }
69   var spannable =
70       cvox.BrailleUtil.getTemplated(prevNode, objNode, {name: name});
71   spannable.setSpan(objNode, 0, spannable.getLength());
72   braille.text = spannable;
74   // Remove any selections.
75   braille.startIndex = 0;
76   braille.endIndex = 0;
77   return braille;