OLD | NEW |
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 A simple container object for the description of a | 6 * @fileoverview A simple container object for the description of a |
7 * navigation from one object to another. | 7 * navigation from one object to another. |
8 * | 8 * |
9 */ | 9 */ |
10 | 10 |
11 | 11 |
12 goog.provide('cvox.NavDescription'); | 12 goog.provide('cvox.NavDescription'); |
13 | 13 |
14 goog.require('cvox.AbstractTts'); | 14 goog.require('cvox.AbstractTts'); |
15 goog.require('cvox.ChromeVox'); | 15 goog.require('cvox.ChromeVox'); |
16 goog.require('cvox.CursorSelection'); | 16 goog.require('cvox.CursorSelection'); |
| 17 goog.require('cvox.QueueMode'); |
17 | 18 |
18 /** | 19 /** |
19 * A class representing the description of navigation from one object to | 20 * A class representing the description of navigation from one object to |
20 * another. | 21 * another. |
21 * @param {{context: (undefined|string), | 22 * @param {{context: (undefined|string), |
22 * text: (string), | 23 * text: (string), |
23 * userValue: (undefined|string), | 24 * userValue: (undefined|string), |
24 * annotation: (undefined|string), | 25 * annotation: (undefined|string), |
25 * earcons: (undefined|Array.<number>), | 26 * earcons: (undefined|Array.<number>), |
26 * personality: (undefined|Object), | 27 * personality: (undefined|Object), |
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
83 * @param {number} earconId An earcon id to be pushed on to the list of earcon | 84 * @param {number} earconId An earcon id to be pushed on to the list of earcon |
84 * ids to play along with the spoken description of this object. | 85 * ids to play along with the spoken description of this object. |
85 */ | 86 */ |
86 cvox.NavDescription.prototype.pushEarcon = function(earconId) { | 87 cvox.NavDescription.prototype.pushEarcon = function(earconId) { |
87 this.earcons.push(earconId); | 88 this.earcons.push(earconId); |
88 }; | 89 }; |
89 | 90 |
90 | 91 |
91 /** | 92 /** |
92 * Speak this nav description with the given queue mode. | 93 * Speak this nav description with the given queue mode. |
93 * @param {number=} queueMode The queue mode: cvox.AbstractTts.QUEUE_MODE_FLUSH | 94 * @param {cvox.QueueMode=} queueMode The queue mode. |
94 * for flush, cvox.AbstractTts.QUEUE_MODE_QUEUE for adding to queue. | 95 * @param {function()=} opt_startCallback Function called when this |
95 * @param {function()=} startCallback Function called when this starts speaking. | 96 * starts speaking. |
96 * @param {function()=} endCallback Function called when this ends speaking. | 97 * @param {function()=} opt_endCallback Function called when this ends speaking. |
97 */ | 98 */ |
98 cvox.NavDescription.prototype.speak = function( | 99 cvox.NavDescription.prototype.speak = function( |
99 queueMode, startCallback, endCallback) { | 100 queueMode, opt_startCallback, opt_endCallback) { |
100 /** | 101 /** |
101 * Return a deep copy of PERSONALITY_ANNOTATION for modifying. | 102 * Return a deep copy of PERSONALITY_ANNOTATION for modifying. |
102 * @return {Object} The newly created properties object. | 103 * @return {Object} The newly created properties object. |
103 */ | 104 */ |
104 function makeAnnotationProps() { | 105 function makeAnnotationProps() { |
105 var properties = {}; | 106 var properties = {}; |
106 var src = cvox.AbstractTts.PERSONALITY_ANNOTATION; | 107 var src = cvox.AbstractTts.PERSONALITY_ANNOTATION; |
107 for (var key in src) { | 108 for (var key in src) { |
108 properties[key] = src[key]; | 109 properties[key] = src[key]; |
109 } | 110 } |
110 return properties; | 111 return properties; |
111 } | 112 } |
112 | 113 |
113 var speakArgs = new Array(); | 114 var speakArgs = new Array(); |
114 if (this.context) { | 115 if (this.context) { |
115 speakArgs.push([this.context, queueMode, makeAnnotationProps()]); | 116 speakArgs.push([this.context, queueMode, makeAnnotationProps()]); |
116 queueMode = 1; | 117 queueMode = cvox.QueueMode.QUEUE; |
117 } | 118 } |
118 | 119 |
119 speakArgs.push([this.text, | 120 speakArgs.push([this.text, |
120 queueMode, | 121 queueMode, |
121 this.personality ? this.personality : {}]); | 122 this.personality ? this.personality : {}]); |
122 queueMode = 1; | 123 queueMode = cvox.QueueMode.QUEUE; |
123 | 124 |
124 if (this.userValue) { | 125 if (this.userValue) { |
125 speakArgs.push([this.userValue, queueMode, {}]); | 126 speakArgs.push([this.userValue, queueMode, {}]); |
126 } | 127 } |
127 | 128 |
128 if (this.annotation) { | 129 if (this.annotation) { |
129 speakArgs.push([this.annotation, queueMode, makeAnnotationProps()]); | 130 speakArgs.push([this.annotation, queueMode, makeAnnotationProps()]); |
130 } | 131 } |
131 | 132 |
132 if (this.hint) { | 133 if (this.hint) { |
133 speakArgs.push([this.hint, queueMode, makeAnnotationProps()]); | 134 speakArgs.push([this.hint, queueMode, makeAnnotationProps()]); |
134 } | 135 } |
135 | 136 |
136 var length = speakArgs.length; | 137 var length = speakArgs.length; |
137 for (var i = 0; i < length; i++) { | 138 for (var i = 0; i < length; i++) { |
138 if (i == 0 && startCallback) { | 139 if (i == 0 && opt_startCallback) { |
139 speakArgs[i][2]['startCallback'] = startCallback; | 140 speakArgs[i][2]['startCallback'] = opt_startCallback; |
140 } | 141 } |
141 if (i == length - 1 && endCallback) { | 142 if (i == length - 1 && opt_endCallback) { |
142 speakArgs[i][2]['endCallback'] = endCallback; | 143 speakArgs[i][2]['endCallback'] = opt_endCallback; |
143 } | 144 } |
144 if (this.category) { | 145 if (this.category) { |
145 speakArgs[i][2]['category'] = this.category; | 146 speakArgs[i][2]['category'] = this.category; |
146 } | 147 } |
147 cvox.ChromeVox.tts.speak.apply(cvox.ChromeVox.tts, speakArgs[i]); | 148 cvox.ChromeVox.tts.speak.apply(cvox.ChromeVox.tts, speakArgs[i]); |
148 } | 149 } |
149 }; | 150 }; |
150 | 151 |
151 | 152 |
152 /** | 153 /** |
153 * Compares two NavDescriptions. | 154 * Compares two NavDescriptions. |
154 * @param {cvox.NavDescription} that A NavDescription. | 155 * @param {cvox.NavDescription} that A NavDescription. |
155 * @return {boolean} True if equal. | 156 * @return {boolean} True if equal. |
156 */ | 157 */ |
157 cvox.NavDescription.prototype.equals = function(that) { | 158 cvox.NavDescription.prototype.equals = function(that) { |
158 return this.context == that.context && | 159 return this.context == that.context && |
159 this.text == that.text && | 160 this.text == that.text && |
160 this.userValue == that.userValue && | 161 this.userValue == that.userValue && |
161 this.annotation == that.annotation; | 162 this.annotation == that.annotation; |
162 }; | 163 }; |
OLD | NEW |