Add new certificateProvider extension API.
[chromium-blink-merge.git] / chrome / browser / resources / chromeos / chromevox / common / node_state.js
blob6abc835bd65a9d68e5a1215e006364415009ffc8
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 The cvox.NodeState typedef.
7  */
9 goog.provide('cvox.NodeState');
10 goog.provide('cvox.NodeStateUtil');
12 /**
13  * Holds the state of a node.  It is an Array or Arrays of strings and numbers.
14  * Each sub array is in the format:
15  * [state, opt_arg, opt_arg, ...].  These sub arrays map directly to a
16  * cvox.ChromeVox.getMsg() call. For example [list_position, 3, 5] maps to
17  * getMsg('list_position', [3, 5]);
18  *
19  * @typedef {!Array<!Array<string|number>>}
20  */
21 cvox.NodeState;
23 /**
24  * Returns a localized, readable string with the NodeState.
25  *
26  * NOTE(deboer): Once AriaUtil and DomUtil are using NodeState exclusively, this
27  * function can be moved into DescriptionUtil, removing the cvox.ChromeVox
28  * dependency here.
29  *
30  * @param {cvox.NodeState} state The node state.
31  * @return {string} The readable state string.
32  */
33 cvox.NodeStateUtil.expand = function(state) {
34   try {
35     return state.map(function(s) {
36       if (s.length < 1) {
37         throw new Error('cvox.NodeState must have at least one entry');
38       }
39       var args = s.slice(1).map(function(a) {
40         if (typeof a == 'number') {
41           return cvox.ChromeVox.msgs.getNumber(a);
42         }
43         return a;
44       });
45       return cvox.ChromeVox.msgs.getMsg(/** @type {string} */ (s[0]), args);
46     }).join(' ');
47   } catch (e) {
48     throw new Error('error: ' + e + ' state: ' + state);
49   }