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

Side by Side Diff: chrome/browser/resources/chromeos/chromevox/extensions/searchvox/results.js

Issue 2943193002: Run clang-format on .js files in c/b/r/chromeos/chromevox (Closed)
Patch Set: Created 3 years, 6 months 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 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 /** 6 /**
7 * @fileoverview Provides different rules for each type of result. 7 * @fileoverview Provides different rules for each type of result.
8 */ 8 */
9 9
10 goog.provide('cvox.SearchResults'); 10 goog.provide('cvox.SearchResults');
11 goog.provide('cvox.UnknownResult'); 11 goog.provide('cvox.UnknownResult');
12 12
13 goog.require('cvox.AbstractResult'); 13 goog.require('cvox.AbstractResult');
14 goog.require('cvox.ChromeVox'); 14 goog.require('cvox.ChromeVox');
15 goog.require('cvox.SearchUtil'); 15 goog.require('cvox.SearchUtil');
16 16
17 /** 17 /**
18 * @constructor 18 * @constructor
19 */ 19 */
20 cvox.SearchResults = function() { 20 cvox.SearchResults = function() {};
21 };
22 21
23 /** 22 /**
24 * Speaks a result based on given selectors. 23 * Speaks a result based on given selectors.
25 * @param {Node} result Search result to be spoken. 24 * @param {Node} result Search result to be spoken.
26 * @param {Array} selectTexts Array of selectors or text to speak. 25 * @param {Array} selectTexts Array of selectors or text to speak.
27 */ 26 */
28 cvox.SearchResults.speakResultBySelectTexts = function(result, selectTexts) { 27 cvox.SearchResults.speakResultBySelectTexts = function(result, selectTexts) {
29 for (var j = 0; j < selectTexts.length; j++) { 28 for (var j = 0; j < selectTexts.length; j++) {
30 var selectText = selectTexts[j]; 29 var selectText = selectTexts[j];
31 if (selectText.select) { 30 if (selectText.select) {
32 var elems = result.querySelectorAll(selectText.select); 31 var elems = result.querySelectorAll(selectText.select);
33 for (var i = 0; i < elems.length; i++) { 32 for (var i = 0; i < elems.length; i++) {
34 cvox.ChromeVox.tts.speak(cvox.DomUtil.getName(elems.item(i)), 33 cvox.ChromeVox.tts.speak(
35 cvox.QueueMode.QUEUE); 34 cvox.DomUtil.getName(elems.item(i)), cvox.QueueMode.QUEUE);
36 } 35 }
37 } 36 }
38 if (selectText.text) { 37 if (selectText.text) {
39 cvox.ChromeVox.tts.speak(selectText.text, cvox.QueueMode.QUEUE); 38 cvox.ChromeVox.tts.speak(selectText.text, cvox.QueueMode.QUEUE);
40 } 39 }
41 } 40 }
42 }; 41 };
43 42
44 /** 43 /**
45 * Unknown Result Type. This is used if we don't know what to do. 44 * Unknown Result Type. This is used if we don't know what to do.
46 * @constructor 45 * @constructor
47 * @extends {cvox.AbstractResult} 46 * @extends {cvox.AbstractResult}
48 */ 47 */
49 cvox.UnknownResult = function() { 48 cvox.UnknownResult = function() {};
50 };
51 goog.inherits(cvox.UnknownResult, cvox.AbstractResult); 49 goog.inherits(cvox.UnknownResult, cvox.AbstractResult);
52 50
53 /* Normal Result Type. */ 51 /* Normal Result Type. */
54 /** 52 /**
55 * @constructor 53 * @constructor
56 * @extends {cvox.AbstractResult} 54 * @extends {cvox.AbstractResult}
57 */ 55 */
58 cvox.NormalResult = function() { 56 cvox.NormalResult = function() {};
59 };
60 goog.inherits(cvox.NormalResult, cvox.AbstractResult); 57 goog.inherits(cvox.NormalResult, cvox.AbstractResult);
61 58
62 /** 59 /**
63 * Checks the result if it is a normal result. 60 * Checks the result if it is a normal result.
64 * @override 61 * @override
65 */ 62 */
66 cvox.NormalResult.prototype.isType = function(result) { 63 cvox.NormalResult.prototype.isType = function(result) {
67 var NORMAL_SELECT = '.rc'; 64 var NORMAL_SELECT = '.rc';
68 return result.querySelector(NORMAL_SELECT) !== null; 65 return result.querySelector(NORMAL_SELECT) !== null;
69 }; 66 };
70 67
71 /** 68 /**
72 * Speak a normal search result. 69 * Speak a normal search result.
73 * @override 70 * @override
74 */ 71 */
75 cvox.NormalResult.prototype.speak = function(result) { 72 cvox.NormalResult.prototype.speak = function(result) {
76 if (!result) { 73 if (!result) {
77 return false; 74 return false;
78 } 75 }
79 var NORMAL_TITLE_SELECT = '.rc .r'; 76 var NORMAL_TITLE_SELECT = '.rc .r';
80 var NORMAL_URL_SELECT = '.kv'; 77 var NORMAL_URL_SELECT = '.kv';
81 var NORMAL_DESC_SELECT = '.rc .st'; 78 var NORMAL_DESC_SELECT = '.rc .st';
82 var SITE_LINK_SELECT = '.osl'; 79 var SITE_LINK_SELECT = '.osl';
83 var MORE_RESULTS_SELECT = '.sld'; 80 var MORE_RESULTS_SELECT = '.sld';
84 var MORE_RESULTS_LINK_SELECT = '.mrf'; 81 var MORE_RESULTS_LINK_SELECT = '.mrf';
85 82
86 var NORMAL_SELECTORS = [ 83 var NORMAL_SELECTORS = [
87 { select: NORMAL_TITLE_SELECT }, 84 {select: NORMAL_TITLE_SELECT}, {select: NORMAL_DESC_SELECT},
88 { select: NORMAL_DESC_SELECT }, 85 {select: NORMAL_URL_SELECT}, {select: SITE_LINK_SELECT},
89 { select: NORMAL_URL_SELECT }, 86 {select: MORE_RESULTS_SELECT}, {select: MORE_RESULTS_LINK_SELECT}
90 { select: SITE_LINK_SELECT }, 87 ];
91 { select: MORE_RESULTS_SELECT },
92 { select: MORE_RESULTS_LINK_SELECT }];
93 cvox.SearchResults.speakResultBySelectTexts(result, NORMAL_SELECTORS); 88 cvox.SearchResults.speakResultBySelectTexts(result, NORMAL_SELECTORS);
94 89
95 var DISCUSS_TITLE_SELECT = '.mas-1st-col div'; 90 var DISCUSS_TITLE_SELECT = '.mas-1st-col div';
96 var DISCUSS_DATE_SELECT = '.mas-col div'; 91 var DISCUSS_DATE_SELECT = '.mas-col div';
97 var discussTitles = result.querySelectorAll(DISCUSS_TITLE_SELECT); 92 var discussTitles = result.querySelectorAll(DISCUSS_TITLE_SELECT);
98 var discussDates = result.querySelectorAll(DISCUSS_DATE_SELECT); 93 var discussDates = result.querySelectorAll(DISCUSS_DATE_SELECT);
99 for (var i = 0; i < discussTitles.length; i++) { 94 for (var i = 0; i < discussTitles.length; i++) {
100 cvox.ChromeVox.tts.speak( 95 cvox.ChromeVox.tts.speak(
101 cvox.DomUtil.getName(discussTitles.item(i)), cvox.QueueMode.QUEUE); 96 cvox.DomUtil.getName(discussTitles.item(i)), cvox.QueueMode.QUEUE);
102 cvox.ChromeVox.tts.speak( 97 cvox.ChromeVox.tts.speak(
103 cvox.DomUtil.getName(discussDates.item(i)), cvox.QueueMode.QUEUE); 98 cvox.DomUtil.getName(discussDates.item(i)), cvox.QueueMode.QUEUE);
104 } 99 }
105 return true; 100 return true;
106 }; 101 };
107 102
108 /* Weather Result */ 103 /* Weather Result */
109 /** 104 /**
110 * @constructor 105 * @constructor
111 * @extends {cvox.AbstractResult} 106 * @extends {cvox.AbstractResult}
112 */ 107 */
113 cvox.WeatherResult = function() { 108 cvox.WeatherResult = function() {};
114 };
115 goog.inherits(cvox.WeatherResult, cvox.AbstractResult); 109 goog.inherits(cvox.WeatherResult, cvox.AbstractResult);
116 110
117 /** 111 /**
118 * Checks the result if it is a weather result. 112 * Checks the result if it is a weather result.
119 * @override 113 * @override
120 */ 114 */
121 cvox.WeatherResult.prototype.isType = function(result) { 115 cvox.WeatherResult.prototype.isType = function(result) {
122 var WEATHER_SELECT = '#wob_wc'; 116 var WEATHER_SELECT = '#wob_wc';
123 return result.querySelector(WEATHER_SELECT) !== null; 117 return result.querySelector(WEATHER_SELECT) !== null;
124 }; 118 };
125 119
126 /** 120 /**
127 * Speak a weather forecast. 121 * Speak a weather forecast.
128 * @param {Element} forecast Weather forecast to be spoken. 122 * @param {Element} forecast Weather forecast to be spoken.
129 */ 123 */
130 cvox.WeatherResult.speakForecast = function(forecast) { 124 cvox.WeatherResult.speakForecast = function(forecast) {
131 if (!forecast) { 125 if (!forecast) {
132 return; 126 return;
133 } 127 }
134 var FORE_DAY_SELECT = '.vk_lgy'; 128 var FORE_DAY_SELECT = '.vk_lgy';
135 var FORE_COND_SELECT = 'img'; 129 var FORE_COND_SELECT = 'img';
136 var FORE_HIGH_SELECT = '.vk_gy'; 130 var FORE_HIGH_SELECT = '.vk_gy';
137 var FORE_LOW_SELECT = '.vk_lgy'; 131 var FORE_LOW_SELECT = '.vk_lgy';
138 132
139 var FORE_SELECTORS = [ 133 var FORE_SELECTORS = [
140 { select: FORE_DAY_SELECT }, 134 {select: FORE_DAY_SELECT}, {select: FORE_COND_SELECT},
141 { select: FORE_COND_SELECT }, 135 {select: FORE_HIGH_SELECT}, {select: FORE_LOW_SELECT}
142 { select: FORE_HIGH_SELECT },
143 { select: FORE_LOW_SELECT }
144 ]; 136 ];
145 cvox.SearchResults.speakResultBySelectTexts(forecast, FORE_SELECTORS); 137 cvox.SearchResults.speakResultBySelectTexts(forecast, FORE_SELECTORS);
146 }; 138 };
147 139
148 /** 140 /**
149 * Speak a weather search result. 141 * Speak a weather search result.
150 * @override 142 * @override
151 */ 143 */
152 cvox.WeatherResult.prototype.speak = function(result) { 144 cvox.WeatherResult.prototype.speak = function(result) {
153 if (!result) { 145 if (!result) {
154 return false; 146 return false;
155 } 147 }
156 /* TODO(peterxiao): Internationalization? */ 148 /* TODO(peterxiao): Internationalization? */
157 var WEATHER_INTRO = 'The weather forcast for'; 149 var WEATHER_INTRO = 'The weather forcast for';
158 var WEATHER_TEMP_UNITS = 'degrees fahrenheit'; 150 var WEATHER_TEMP_UNITS = 'degrees fahrenheit';
159 var WEATHER_PREC_INTRO = 'precipitation is'; 151 var WEATHER_PREC_INTRO = 'precipitation is';
160 var WEATHER_HUMID_INTRO = 'humidity is'; 152 var WEATHER_HUMID_INTRO = 'humidity is';
161 var WEATHER_WIND_INTRO = 'wind is'; 153 var WEATHER_WIND_INTRO = 'wind is';
162 var FORE_INTRO = 'Forecasts for this week'; 154 var FORE_INTRO = 'Forecasts for this week';
163 var WEATHER_LOC_SELECT = '.vk_h'; 155 var WEATHER_LOC_SELECT = '.vk_h';
164 var WEATHER_WHEN_SELECT = '#wob_dts'; 156 var WEATHER_WHEN_SELECT = '#wob_dts';
165 var WEATHER_COND_SELECT = '#wob_dc'; 157 var WEATHER_COND_SELECT = '#wob_dc';
166 var WEATHER_TEMP_SELECT = '#wob_tm'; 158 var WEATHER_TEMP_SELECT = '#wob_tm';
167 var WEATHER_PREC_SELECT = '#wob_pp'; 159 var WEATHER_PREC_SELECT = '#wob_pp';
168 var WEATHER_HUMID_SELECT = '#wob_hm'; 160 var WEATHER_HUMID_SELECT = '#wob_hm';
169 var WEATHER_WIND_SELECT = '#wob_ws'; 161 var WEATHER_WIND_SELECT = '#wob_ws';
170 162
171 var WEATHER_SELECT_TEXTS = [ 163 var WEATHER_SELECT_TEXTS = [
172 { text: WEATHER_INTRO }, 164 {text: WEATHER_INTRO}, {select: WEATHER_LOC_SELECT},
173 { select: WEATHER_LOC_SELECT }, 165 {select: WEATHER_WHEN_SELECT}, {select: WEATHER_COND_SELECT},
174 { select: WEATHER_WHEN_SELECT }, 166 {select: WEATHER_TEMP_SELECT}, {text: WEATHER_TEMP_UNITS},
175 { select: WEATHER_COND_SELECT }, 167 {text: WEATHER_PREC_INTRO}, {select: WEATHER_PREC_SELECT},
176 { select: WEATHER_TEMP_SELECT }, 168 {text: WEATHER_HUMID_INTRO}, {select: WEATHER_HUMID_SELECT},
177 { text: WEATHER_TEMP_UNITS }, 169 {text: WEATHER_WIND_INTRO}, {select: WEATHER_WIND_SELECT}
178 { text: WEATHER_PREC_INTRO },
179 { select: WEATHER_PREC_SELECT },
180 { text: WEATHER_HUMID_INTRO },
181 { select: WEATHER_HUMID_SELECT },
182 { text: WEATHER_WIND_INTRO },
183 { select: WEATHER_WIND_SELECT }
184 ]; 170 ];
185 cvox.SearchResults.speakResultBySelectTexts(result, WEATHER_SELECT_TEXTS); 171 cvox.SearchResults.speakResultBySelectTexts(result, WEATHER_SELECT_TEXTS);
186 172
187 var WEATHER_FORCAST_CLASS = 'wob_df'; 173 var WEATHER_FORCAST_CLASS = 'wob_df';
188 var forecasts = result.getElementsByClassName(WEATHER_FORCAST_CLASS); 174 var forecasts = result.getElementsByClassName(WEATHER_FORCAST_CLASS);
189 cvox.ChromeVox.tts.speak(FORE_INTRO, cvox.QueueMode.QUEUE); 175 cvox.ChromeVox.tts.speak(FORE_INTRO, cvox.QueueMode.QUEUE);
190 for (var i = 0; i < forecasts.length; i++) { 176 for (var i = 0; i < forecasts.length; i++) {
191 var forecast = forecasts.item(i); 177 var forecast = forecasts.item(i);
192 cvox.WeatherResult.speakForecast(forecast); 178 cvox.WeatherResult.speakForecast(forecast);
193 } 179 }
194 return true; 180 return true;
195 }; 181 };
196 182
197 /* Knowledge Panel Result */ 183 /* Knowledge Panel Result */
198 /** 184 /**
199 * @constructor 185 * @constructor
200 * @extends {cvox.AbstractResult} 186 * @extends {cvox.AbstractResult}
201 */ 187 */
202 cvox.KnowResult = function() { 188 cvox.KnowResult = function() {};
203 };
204 goog.inherits(cvox.KnowResult, cvox.AbstractResult); 189 goog.inherits(cvox.KnowResult, cvox.AbstractResult);
205 190
206 /** 191 /**
207 * Checks the result if it is a know result. 192 * Checks the result if it is a know result.
208 * @override 193 * @override
209 */ 194 */
210 cvox.KnowResult.prototype.isType = function(result) { 195 cvox.KnowResult.prototype.isType = function(result) {
211 var KNOP_SELECT = '.kno-ec'; 196 var KNOP_SELECT = '.kno-ec';
212 return result.querySelector(KNOP_SELECT) !== null; 197 return result.querySelector(KNOP_SELECT) !== null;
213 }; 198 };
214 199
215 /** 200 /**
216 * Speak a knowledge panel search result. 201 * Speak a knowledge panel search result.
217 * @override 202 * @override
218 */ 203 */
219 cvox.KnowResult.prototype.speak = function(result) { 204 cvox.KnowResult.prototype.speak = function(result) {
220 205
221 cvox.ChromeVox.tts.speak( 206 cvox.ChromeVox.tts.speak(cvox.DomUtil.getName(result), cvox.QueueMode.QUEUE);
222 cvox.DomUtil.getName(result), cvox.QueueMode.QUEUE);
223 return true; 207 return true;
224 }; 208 };
225 209
226 /** 210 /**
227 * Extracts the wikipedia URL from knowledge panel. 211 * Extracts the wikipedia URL from knowledge panel.
228 * @override 212 * @override
229 */ 213 */
230 cvox.KnowResult.prototype.getURL = function(result) { 214 cvox.KnowResult.prototype.getURL = function(result) {
231 var LINK_SELECTOR = '.q'; 215 var LINK_SELECTOR = '.q';
232 return cvox.SearchUtil.extractURL(result.querySelector(LINK_SELECTOR)); 216 return cvox.SearchUtil.extractURL(result.querySelector(LINK_SELECTOR));
233 }; 217 };
234 218
235 /** 219 /**
236 * @override 220 * @override
237 */ 221 */
238 cvox.KnowResult.prototype.getSyncNode = function(result) { 222 cvox.KnowResult.prototype.getSyncNode = function(result) {
239 var HEADER_SELECTOR = '.kno-ecr-pt'; 223 var HEADER_SELECTOR = '.kno-ecr-pt';
240 return result.querySelector(HEADER_SELECTOR); 224 return result.querySelector(HEADER_SELECTOR);
241 }; 225 };
242 226
243 /* Calculator Type */ 227 /* Calculator Type */
244 /** 228 /**
245 * @constructor 229 * @constructor
246 * @extends {cvox.AbstractResult} 230 * @extends {cvox.AbstractResult}
247 */ 231 */
248 cvox.CalcResult = function() { 232 cvox.CalcResult = function() {};
249 };
250 goog.inherits(cvox.CalcResult, cvox.AbstractResult); 233 goog.inherits(cvox.CalcResult, cvox.AbstractResult);
251 234
252 /** 235 /**
253 * Checks the result if it is a calculator result. 236 * Checks the result if it is a calculator result.
254 * @override 237 * @override
255 */ 238 */
256 cvox.CalcResult.prototype.isType = function(result) { 239 cvox.CalcResult.prototype.isType = function(result) {
257 var CALC_SELECT = '#cwmcwd'; 240 var CALC_SELECT = '#cwmcwd';
258 return result.querySelector(CALC_SELECT) !== null; 241 return result.querySelector(CALC_SELECT) !== null;
259 }; 242 };
260 243
261 /** 244 /**
262 * Speak a calculator search result. 245 * Speak a calculator search result.
263 * @override 246 * @override
264 */ 247 */
265 cvox.CalcResult.prototype.speak = function(result) { 248 cvox.CalcResult.prototype.speak = function(result) {
266 if (!result) { 249 if (!result) {
267 return false; 250 return false;
268 } 251 }
269 var CALC_QUERY_SELECT = '#cwles'; 252 var CALC_QUERY_SELECT = '#cwles';
270 var CALC_RESULT_SELECT = '#cwos'; 253 var CALC_RESULT_SELECT = '#cwos';
271 var CALC_SELECTORS = [ 254 var CALC_SELECTORS =
272 { select: CALC_QUERY_SELECT }, 255 [{select: CALC_QUERY_SELECT}, {select: CALC_RESULT_SELECT}];
273 { select: CALC_RESULT_SELECT }
274 ];
275 cvox.SearchResults.speakResultBySelectTexts(result, CALC_SELECTORS); 256 cvox.SearchResults.speakResultBySelectTexts(result, CALC_SELECTORS);
276 return true; 257 return true;
277 }; 258 };
278 259
279 /* Game Type */ 260 /* Game Type */
280 /** 261 /**
281 * @constructor 262 * @constructor
282 * @extends {cvox.AbstractResult} 263 * @extends {cvox.AbstractResult}
283 */ 264 */
284 cvox.GameResult = function() { 265 cvox.GameResult = function() {};
285 };
286 goog.inherits(cvox.GameResult, cvox.AbstractResult); 266 goog.inherits(cvox.GameResult, cvox.AbstractResult);
287 267
288 /** 268 /**
289 * Checks the result if it is a game result. 269 * Checks the result if it is a game result.
290 * @override 270 * @override
291 */ 271 */
292 cvox.GameResult.prototype.isType = function(result) { 272 cvox.GameResult.prototype.isType = function(result) {
293 var GAME_SELECT = '.xpdbox'; 273 var GAME_SELECT = '.xpdbox';
294 return result.querySelector(GAME_SELECT) !== null; 274 return result.querySelector(GAME_SELECT) !== null;
295 }; 275 };
296 276
297 /* Image Type */ 277 /* Image Type */
298 /** 278 /**
299 * @constructor 279 * @constructor
300 * @extends {cvox.AbstractResult} 280 * @extends {cvox.AbstractResult}
301 */ 281 */
302 cvox.ImageResult = function() { 282 cvox.ImageResult = function() {};
303 };
304 goog.inherits(cvox.ImageResult, cvox.AbstractResult); 283 goog.inherits(cvox.ImageResult, cvox.AbstractResult);
305 284
306 /** 285 /**
307 * Checks the result if it is a image result. 286 * Checks the result if it is a image result.
308 * @override 287 * @override
309 */ 288 */
310 cvox.ImageResult.prototype.isType = function(result) { 289 cvox.ImageResult.prototype.isType = function(result) {
311 var IMAGE_CLASSES = 'rg_di'; 290 var IMAGE_CLASSES = 'rg_di';
312 return result.className === IMAGE_CLASSES; 291 return result.className === IMAGE_CLASSES;
313 }; 292 };
314 293
315 /** 294 /**
316 * Speak an image result. 295 * Speak an image result.
317 * @override 296 * @override
318 */ 297 */
319 cvox.ImageResult.prototype.speak = function(result) { 298 cvox.ImageResult.prototype.speak = function(result) {
320 if (!result) { 299 if (!result) {
321 return false; 300 return false;
322 } 301 }
323 /* Grab image result metadata. */ 302 /* Grab image result metadata. */
324 var META_CLASS = 'rg_meta'; 303 var META_CLASS = 'rg_meta';
325 var metaDiv = result.querySelector('.' + META_CLASS); 304 var metaDiv = result.querySelector('.' + META_CLASS);
326 var metaJSON = metaDiv.innerHTML; 305 var metaJSON = metaDiv.innerHTML;
327 var metaData = JSON.parse(metaJSON); 306 var metaData = JSON.parse(metaJSON);
328 307
329 var imageSelectTexts = []; 308 var imageSelectTexts = [];
330 309
331 var filename = metaData['fn']; 310 var filename = metaData['fn'];
332 if (filename) { 311 if (filename) {
333 imageSelectTexts.push({ text: filename }); 312 imageSelectTexts.push({text: filename});
334 } 313 }
335 314
336 var rawDimensions = metaData['is']; 315 var rawDimensions = metaData['is'];
337 if (rawDimensions) { 316 if (rawDimensions) {
338 /* Dimensions contain HTML codes, so we convert them. */ 317 /* Dimensions contain HTML codes, so we convert them. */
339 var tmpDiv = document.createElement('div'); 318 var tmpDiv = document.createElement('div');
340 tmpDiv.innerHTML = rawDimensions; 319 tmpDiv.innerHTML = rawDimensions;
341 var dimensions = tmpDiv.textContent || tmpDiv.innerText; 320 var dimensions = tmpDiv.textContent || tmpDiv.innerText;
342 imageSelectTexts.push({ text: dimensions }); 321 imageSelectTexts.push({text: dimensions});
343 } 322 }
344 323
345 var url = metaData['isu']; 324 var url = metaData['isu'];
346 if (url) { 325 if (url) {
347 imageSelectTexts.push({ text: url}); 326 imageSelectTexts.push({text: url});
348 } 327 }
349 cvox.SearchResults.speakResultBySelectTexts(result, imageSelectTexts); 328 cvox.SearchResults.speakResultBySelectTexts(result, imageSelectTexts);
350 return true; 329 return true;
351 }; 330 };
352 331
353 /* Category Result */ 332 /* Category Result */
354 /** 333 /**
355 * @constructor 334 * @constructor
356 * @extends {cvox.AbstractResult} 335 * @extends {cvox.AbstractResult}
357 */ 336 */
358 cvox.CategoryResult = function() { 337 cvox.CategoryResult = function() {};
359 };
360 goog.inherits(cvox.CategoryResult, cvox.AbstractResult); 338 goog.inherits(cvox.CategoryResult, cvox.AbstractResult);
361 339
362 /** 340 /**
363 * Checks the result if it is a category result. 341 * Checks the result if it is a category result.
364 * @param {Element} result Result to be checked. 342 * @param {Element} result Result to be checked.
365 * @return {boolean} Whether or not the element is a category result. 343 * @return {boolean} Whether or not the element is a category result.
366 * @override 344 * @override
367 */ 345 */
368 cvox.CategoryResult.prototype.isType = function(result) { 346 cvox.CategoryResult.prototype.isType = function(result) {
369 var CATEGORY_CLASSES = 'rg_fbl nj'; 347 var CATEGORY_CLASSES = 'rg_fbl nj';
370 return result.className === CATEGORY_CLASSES; 348 return result.className === CATEGORY_CLASSES;
371 }; 349 };
372 350
373 /** 351 /**
374 * Speak a category result. 352 * Speak a category result.
375 * @override 353 * @override
376 */ 354 */
377 cvox.CategoryResult.prototype.speak = function(result) { 355 cvox.CategoryResult.prototype.speak = function(result) {
378 if (!result) { 356 if (!result) {
379 return false; 357 return false;
380 } 358 }
381 var LABEL_SELECT = '.rg_bb_label'; 359 var LABEL_SELECT = '.rg_bb_label';
382 var label = result.querySelector(LABEL_SELECT); 360 var label = result.querySelector(LABEL_SELECT);
383 361
384 cvox.ChromeVox.tts.speak( 362 cvox.ChromeVox.tts.speak(cvox.DomUtil.getName(label), cvox.QueueMode.QUEUE);
385 cvox.DomUtil.getName(label), cvox.QueueMode.QUEUE);
386 return true; 363 return true;
387 }; 364 };
388 365
389 /* Ad Result */ 366 /* Ad Result */
390 /** 367 /**
391 * @constructor 368 * @constructor
392 * @extends {cvox.AbstractResult} 369 * @extends {cvox.AbstractResult}
393 */ 370 */
394 cvox.AdResult = function() { 371 cvox.AdResult = function() {};
395 };
396 goog.inherits(cvox.AdResult, cvox.AbstractResult); 372 goog.inherits(cvox.AdResult, cvox.AbstractResult);
397 373
398 /** 374 /**
399 * Checks the result if it is an ad result. 375 * Checks the result if it is an ad result.
400 * @override 376 * @override
401 */ 377 */
402 cvox.AdResult.prototype.isType = function(result) { 378 cvox.AdResult.prototype.isType = function(result) {
403 var ADS_CLASS = 'ads-ad'; 379 var ADS_CLASS = 'ads-ad';
404 return result.className === ADS_CLASS; 380 return result.className === ADS_CLASS;
405 }; 381 };
406 382
407 /** 383 /**
408 * Speak an ad result. 384 * Speak an ad result.
409 * @override 385 * @override
410 */ 386 */
411 cvox.AdResult.prototype.speak = function(result) { 387 cvox.AdResult.prototype.speak = function(result) {
412 if (!result) { 388 if (!result) {
413 return false; 389 return false;
414 } 390 }
415 var HEADER_SELECT = 'h3'; 391 var HEADER_SELECT = 'h3';
416 var DESC_SELECT = '.ads-creative'; 392 var DESC_SELECT = '.ads-creative';
417 var URL_SELECT = '.ads-visurl'; 393 var URL_SELECT = '.ads-visurl';
418 var AD_SELECTS = [ 394 var AD_SELECTS =
419 { select: HEADER_SELECT }, 395 [{select: HEADER_SELECT}, {select: DESC_SELECT}, {select: URL_SELECT}];
420 { select: DESC_SELECT },
421 { select: URL_SELECT }];
422 cvox.SearchResults.speakResultBySelectTexts(result, AD_SELECTS); 396 cvox.SearchResults.speakResultBySelectTexts(result, AD_SELECTS);
423 return true; 397 return true;
424 }; 398 };
425 399
426 /** 400 /**
427 * To add new result types, create a new object with the following properties: 401 * To add new result types, create a new object with the following properties:
428 * isType: Function to indicate if an element is the object's type. 402 * isType: Function to indicate if an element is the object's type.
429 * speak: Function that takes in a result and speaks the type to the user. 403 * speak: Function that takes in a result and speaks the type to the user.
430 * getURL: Function that takes in a result and extracts the URL to follow. 404 * getURL: Function that takes in a result and extracts the URL to follow.
431 */ 405 */
432 cvox.SearchResults.RESULT_TYPES = [ 406 cvox.SearchResults.RESULT_TYPES = [
433 cvox.UnknownResult, 407 cvox.UnknownResult, cvox.NormalResult, cvox.KnowResult, cvox.WeatherResult,
434 cvox.NormalResult, 408 cvox.AdResult, cvox.CalcResult, cvox.GameResult, cvox.ImageResult,
435 cvox.KnowResult,
436 cvox.WeatherResult,
437 cvox.AdResult,
438 cvox.CalcResult,
439 cvox.GameResult,
440 cvox.ImageResult,
441 cvox.CategoryResult 409 cvox.CategoryResult
442 ]; 410 ];
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698