summaryrefslogtreecommitdiffstats
path: root/chromium/chrome/third_party/chromevox/extensions/searchvox/results.js
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/chrome/third_party/chromevox/extensions/searchvox/results.js')
-rw-r--r--chromium/chrome/third_party/chromevox/extensions/searchvox/results.js466
1 files changed, 0 insertions, 466 deletions
diff --git a/chromium/chrome/third_party/chromevox/extensions/searchvox/results.js b/chromium/chrome/third_party/chromevox/extensions/searchvox/results.js
deleted file mode 100644
index 405a6ec1bed..00000000000
--- a/chromium/chrome/third_party/chromevox/extensions/searchvox/results.js
+++ /dev/null
@@ -1,466 +0,0 @@
-// Copyright 2012 Google Inc. All Rights Reserved.
-
-/**
- * @fileoverview Provides different rules for each type of result.
- * @author peterxiao@google.com (Peter Xiao)
- */
-
-goog.provide('cvox.SearchResults');
-goog.provide('cvox.UnknownResult');
-
-goog.require('cvox.AbstractResult');
-goog.require('cvox.ChromeVox');
-goog.require('cvox.SearchUtil');
-
-/**
- * @constructor
- */
-cvox.SearchResults = function() {
-};
-
-/**
- * Speaks a result based on given selectors.
- * @param {Element} result Search result to be spoken.
- * @param {Array} selectTexts Array of selectors or text to speak.
- */
-cvox.SearchResults.speakResultBySelectTexts = function(result, selectTexts) {
- for (var j = 0; j < selectTexts.length; j++) {
- var selectText = selectTexts[j];
- if (selectText.select) {
- var elems = result.querySelectorAll(selectText.select);
- for (var i = 0; i < elems.length; i++) {
- cvox.ChromeVox.speakNode(elems.item(i), 1);
- }
- }
- if (selectText.text) {
- cvox.ChromeVox.tts.speak(selectText.text, 1);
- }
- }
-};
-
-/**
- * Unknown Result Type. This is used if we don't know what to do.
- * @constructor
- * @extends {cvox.AbstractResult}
- */
-cvox.UnknownResult = function() {
-};
-goog.inherits(cvox.UnknownResult, cvox.AbstractResult);
-
-/* Normal Result Type. */
-/**
- * @constructor
- * @extends {cvox.AbstractResult}
- */
-cvox.NormalResult = function() {
-};
-goog.inherits(cvox.NormalResult, cvox.AbstractResult);
-
-/**
- * Checks the result if it is a normal result.
- * @param {Element} result Result to be checked.
- * @return {boolean} Whether or not the element is a normal result.
- * @override
- */
-cvox.NormalResult.prototype.isType = function(result) {
- var NORMAL_SELECT = '.rc';
- return result.querySelector(NORMAL_SELECT) !== null;
-};
-
-/**
- * Speak a normal search result.
- * @param {Element} result Normal result to be spoken.
- * @return {boolean} Whether or not the result was spoken.
- * @override
- */
-cvox.NormalResult.prototype.speak = function(result) {
- if (!result) {
- return false;
- }
- var NORMAL_TITLE_SELECT = '.rc .r';
- var NORMAL_URL_SELECT = '.kv';
- var NORMAL_DESC_SELECT = '.rc .st';
- var SITE_LINK_SELECT = '.osl';
- var MORE_RESULTS_SELECT = '.sld';
- var MORE_RESULTS_LINK_SELECT = '.mrf';
-
- var NORMAL_SELECTORS = [
- { select: NORMAL_TITLE_SELECT },
- { select: NORMAL_DESC_SELECT },
- { select: NORMAL_URL_SELECT },
- { select: SITE_LINK_SELECT },
- { select: MORE_RESULTS_SELECT },
- { select: MORE_RESULTS_LINK_SELECT }];
- cvox.SearchResults.speakResultBySelectTexts(result, NORMAL_SELECTORS);
-
- var DISCUSS_TITLE_SELECT = '.mas-1st-col div';
- var DISCUSS_DATE_SELECT = '.mas-col div';
- var discussTitles = result.querySelectorAll(DISCUSS_TITLE_SELECT);
- var discussDates = result.querySelectorAll(DISCUSS_DATE_SELECT);
- for (var i = 0; i < discussTitles.length; i++) {
- cvox.ChromeVox.speakNode(discussTitles.item(i), 1);
- cvox.ChromeVox.speakNode(discussDates.item(i), 1);
- }
- return true;
-};
-
-/* Weather Result */
-/**
- * @constructor
- * @extends {cvox.AbstractResult}
- */
-cvox.WeatherResult = function() {
-};
-goog.inherits(cvox.WeatherResult, cvox.AbstractResult);
-
-/**
- * Checks the result if it is a weather result.
- * @param {Element} result Result to be checked.
- * @return {boolean} Whether or not the element is a weather result.
- * @override
- */
-cvox.WeatherResult.prototype.isType = function(result) {
- var WEATHER_SELECT = '#wob_wc';
- return result.querySelector(WEATHER_SELECT) !== null;
-};
-
-/**
- * Speak a weather forecast.
- * @param {Element} forecast Weather forecast to be spoken.
- */
-cvox.WeatherResult.speakForecast = function(forecast) {
- if (!forecast) {
- return;
- }
- var FORE_DAY_SELECT = '.vk_lgy';
- var FORE_COND_SELECT = 'img';
- var FORE_HIGH_SELECT = '.vk_gy';
- var FORE_LOW_SELECT = '.vk_lgy';
-
- var FORE_SELECTORS = [
- { select: FORE_DAY_SELECT },
- { select: FORE_COND_SELECT },
- { select: FORE_HIGH_SELECT },
- { select: FORE_LOW_SELECT }
- ];
- cvox.SearchResults.speakResultBySelectTexts(forecast, FORE_SELECTORS);
-};
-
-/**
- * Speak a weather search result.
- * @param {Element} result Weather result to be spoken.
- * @return {boolean} Whether or not the result was spoken.
- * @override
- */
-cvox.WeatherResult.prototype.speak = function(result) {
- if (!result) {
- return false;
- }
- /* TODO(peterxiao): Internationalization? */
- var WEATHER_INTRO = 'The weather forcast for';
- var WEATHER_TEMP_UNITS = 'degrees fahrenheit';
- var WEATHER_PREC_INTRO = 'precipitation is';
- var WEATHER_HUMID_INTRO = 'humidity is';
- var WEATHER_WIND_INTRO = 'wind is';
- var FORE_INTRO = 'Forecasts for this week';
- var WEATHER_LOC_SELECT = '.vk_h';
- var WEATHER_WHEN_SELECT = '#wob_dts';
- var WEATHER_COND_SELECT = '#wob_dc';
- var WEATHER_TEMP_SELECT = '#wob_tm';
- var WEATHER_PREC_SELECT = '#wob_pp';
- var WEATHER_HUMID_SELECT = '#wob_hm';
- var WEATHER_WIND_SELECT = '#wob_ws';
-
- var WEATHER_SELECT_TEXTS = [
- { text: WEATHER_INTRO },
- { select: WEATHER_LOC_SELECT },
- { select: WEATHER_WHEN_SELECT },
- { select: WEATHER_COND_SELECT },
- { select: WEATHER_TEMP_SELECT },
- { text: WEATHER_TEMP_UNITS },
- { text: WEATHER_PREC_INTRO },
- { select: WEATHER_PREC_SELECT },
- { text: WEATHER_HUMID_INTRO },
- { select: WEATHER_HUMID_SELECT },
- { text: WEATHER_WIND_INTRO },
- { select: WEATHER_WIND_SELECT }
- ];
- cvox.SearchResults.speakResultBySelectTexts(result, WEATHER_SELECT_TEXTS);
-
- var WEATHER_FORCAST_CLASS = 'wob_df';
- var forecasts = result.getElementsByClassName(WEATHER_FORCAST_CLASS);
- cvox.ChromeVox.tts.speak(FORE_INTRO, 1);
- for (var i = 0; i < forecasts.length; i++) {
- var forecast = forecasts.item(i);
- cvox.WeatherResult.speakForecast(forecast);
- }
- return true;
-};
-
-/* Knowledge Panel Result */
-/**
- * @constructor
- * @extends {cvox.AbstractResult}
- */
-cvox.KnowResult = function() {
-};
-goog.inherits(cvox.KnowResult, cvox.AbstractResult);
-
-/**
- * Checks the result if it is a know result.
- * @param {Element} result Result to be checked.
- * @return {boolean} Whether or not the element is a know result.
- * @override
- */
-cvox.KnowResult.prototype.isType = function(result) {
- var KNOP_SELECT = '.kno-ec';
- return result.querySelector(KNOP_SELECT) !== null;
-};
-
-/**
- * Speak a knowledge panel search result.
- * @param {Element} result Knowledge panel result to be spoken.
- * @return {boolean} Whether or not the result was spoken.
- * @override
- */
-cvox.KnowResult.prototype.speak = function(result) {
- cvox.ChromeVox.speakNode(result, 1);
- return true;
-};
-
-/**
- * Extracts the wikipedia URL from knowledge panel.
- * @param {Element} result Result to extract from.
- * @return {?string} URL.
- * @override
- */
-cvox.KnowResult.prototype.getURL = function(result) {
- var LINK_SELECTOR = '.q';
- return cvox.SearchUtil.extractURL(result.querySelector(LINK_SELECTOR));
-};
-
-/**
- * Extracts the node to sync to in the knowledge panel.
- * @param {Element} result Result.
- * @return {?Node} Node to sync to.
- * @override
- */
-cvox.KnowResult.prototype.getSyncNode = function(result) {
- var HEADER_SELECTOR = '.kno-ecr-pt';
- return result.querySelector(HEADER_SELECTOR);
-};
-
-/* Calculator Type */
-/**
- * @constructor
- * @extends {cvox.AbstractResult}
- */
-cvox.CalcResult = function() {
-};
-goog.inherits(cvox.CalcResult, cvox.AbstractResult);
-
-/**
- * Checks the result if it is a calculator result.
- * @param {Element} result Result to be checked.
- * @return {boolean} Whether or not the element is a calculator result.
- * @override
- */
-cvox.CalcResult.prototype.isType = function(result) {
- var CALC_SELECT = '#cwmcwd';
- return result.querySelector(CALC_SELECT) !== null;
-};
-
-/**
- * Speak a calculator search result.
- * @param {Element} result Calculator result to be spoken.
- * @return {boolean} Whether or not the result was spoken.
- * @override
- */
-cvox.CalcResult.prototype.speak = function(result) {
- if (!result) {
- return false;
- }
- var CALC_QUERY_SELECT = '#cwles';
- var CALC_RESULT_SELECT = '#cwos';
- var CALC_SELECTORS = [
- { select: CALC_QUERY_SELECT },
- { select: CALC_RESULT_SELECT }
- ];
- cvox.SearchResults.speakResultBySelectTexts(result, CALC_SELECTORS);
- return true;
-};
-
-/* Game Type */
-/**
- * @constructor
- * @extends {cvox.AbstractResult}
- */
-cvox.GameResult = function() {
-};
-goog.inherits(cvox.GameResult, cvox.AbstractResult);
-
-/**
- * Checks the result if it is a game result.
- * @param {Element} result Result to be checked.
- * @return {boolean} Whether or not the element is a game result.
- * @override
- */
-cvox.GameResult.prototype.isType = function(result) {
- var GAME_SELECT = '.xpdbox';
- return result.querySelector(GAME_SELECT) !== null;
-};
-
-/* Image Type */
-/**
- * @constructor
- * @extends {cvox.AbstractResult}
- */
-cvox.ImageResult = function() {
-};
-goog.inherits(cvox.ImageResult, cvox.AbstractResult);
-
-/**
- * Checks the result if it is a image result.
- * @param {Element} result Result to be checked.
- * @return {boolean} Whether or not the element is a image result.
- * @override
- */
-cvox.ImageResult.prototype.isType = function(result) {
- var IMAGE_CLASSES = 'rg_di';
- return result.className === IMAGE_CLASSES;
-};
-
-/**
- * Speak an image result.
- * @param {Element} result Image result to be spoken.
- * @return {boolean} Whether or not the result was spoken.
- * @override
- */
-cvox.ImageResult.prototype.speak = function(result) {
- if (!result) {
- return false;
- }
- /* Grab image result metadata. */
- var META_CLASS = 'rg_meta';
- var metaDiv = result.querySelector('.' + META_CLASS);
- var metaJSON = metaDiv.innerHTML;
- var metaData = JSON.parse(metaJSON);
-
- var imageSelectTexts = [];
-
- var filename = metaData['fn'];
- if (filename) {
- imageSelectTexts.push({ text: filename });
- }
-
- var rawDimensions = metaData['is'];
- if (rawDimensions) {
- /* Dimensions contain HTML codes, so we convert them. */
- var tmpDiv = document.createElement('div');
- tmpDiv.innerHTML = rawDimensions;
- var dimensions = tmpDiv.textContent || tmpDiv.innerText;
- imageSelectTexts.push({ text: dimensions });
- }
-
- var url = metaData['isu'];
- if (url) {
- imageSelectTexts.push({ text: url});
- }
- cvox.SearchResults.speakResultBySelectTexts(result, imageSelectTexts);
- return true;
-};
-
-/* Category Result */
-/**
- * @constructor
- * @extends {cvox.AbstractResult}
- */
-cvox.CategoryResult = function() {
-};
-goog.inherits(cvox.CategoryResult, cvox.AbstractResult);
-
-/**
- * Checks the result if it is a category result.
- * @param {Element} result Result to be checked.
- * @return {boolean} Whether or not the element is a category result.
- * @override
- */
-cvox.CategoryResult.prototype.isType = function(result) {
- var CATEGORY_CLASSES = 'rg_fbl nj';
- return result.className === CATEGORY_CLASSES;
-};
-
-/**
- * Speak a category result.
- * @param {Element} result Category result to be spoken.
- * @return {boolean} Whether or not the result was spoken.
- * @override
- */
-cvox.CategoryResult.prototype.speak = function(result) {
- if (!result) {
- return false;
- }
- var LABEL_SELECT = '.rg_bb_label';
- var label = result.querySelector(LABEL_SELECT);
- cvox.ChromeVox.speakNode(label, 1);
- return true;
-};
-
-/* Ad Result */
-/**
- * @constructor
- * @extends {cvox.AbstractResult}
- */
-cvox.AdResult = function() {
-};
-goog.inherits(cvox.AdResult, cvox.AbstractResult);
-
-/**
- * Checks the result if it is an ad result.
- * @param {Element} result Result to be checked.
- * @return {boolean} Whether or not the element is an ad result.
- * @override
- */
-cvox.AdResult.prototype.isType = function(result) {
- var ADS_CLASS = 'ads-ad';
- return result.className === ADS_CLASS;
-};
-
-/**
- * Speak an ad result.
- * @param {Element} result Ad result to be spoken.
- * @return {boolean} Whether or not the result was spoken.
- * @override
- */
-cvox.AdResult.prototype.speak = function(result) {
- if (!result) {
- return false;
- }
- var HEADER_SELECT = 'h3';
- var DESC_SELECT = '.ads-creative';
- var URL_SELECT = '.ads-visurl';
- var AD_SELECTS = [
- { select: HEADER_SELECT },
- { select: DESC_SELECT },
- { select: URL_SELECT }];
- cvox.SearchResults.speakResultBySelectTexts(result, AD_SELECTS);
- return true;
-};
-
-/**
- * To add new result types, create a new object with the following properties:
- * isType: Function to indicate if an element is the object's type.
- * speak: Function that takes in a result and speaks the type to the user.
- * getURL: Function that takes in a result and extracts the URL to follow.
- */
-cvox.SearchResults.RESULT_TYPES = [
- cvox.UnknownResult,
- cvox.NormalResult,
- cvox.KnowResult,
- cvox.WeatherResult,
- cvox.AdResult,
- cvox.CalcResult,
- cvox.GameResult,
- cvox.ImageResult,
- cvox.CategoryResult
-];