blob: c938d9b7d7c861356bd46a1fb132bbe693a68202 [file] [log] [blame]
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
/**
* @fileoverview Earcon utils.
*/
goog.provide('cvox.EarconUtil');
goog.require('cvox.AbstractEarcons');
goog.require('cvox.AriaUtil');
goog.require('cvox.DomUtil');
/**
* Returns the id of an earcon to play along with the description for a node.
*
* @param {Node} node The node to get the earcon for.
* @return {number?} The earcon id, or null if none applies.
*/
cvox.EarconUtil.getEarcon = function(node) {
var earcon = cvox.AriaUtil.getEarcon(node);
if (earcon != null) {
return earcon;
}
switch (node.tagName) {
case 'BUTTON':
return cvox.AbstractEarcons.BUTTON;
case 'A':
if (node.hasAttribute('href')) {
return cvox.AbstractEarcons.LINK;
}
break;
case 'IMG':
if (cvox.DomUtil.hasLongDesc(node)) {
return cvox.AbstractEarcons.LONG_DESC;
}
break;
case 'LI':
return cvox.AbstractEarcons.LIST_ITEM;
case 'SELECT':
return cvox.AbstractEarcons.LISTBOX;
case 'TEXTAREA':
return cvox.AbstractEarcons.EDITABLE_TEXT;
case 'INPUT':
switch (node.type) {
case 'button':
case 'submit':
case 'reset':
return cvox.AbstractEarcons.BUTTON;
case 'checkbox':
case 'radio':
if (node.checked) {
return cvox.AbstractEarcons.CHECK_ON;
} else {
return cvox.AbstractEarcons.CHECK_OFF;
}
default:
if (cvox.DomUtil.isInputTypeText(node)) {
// 'text', 'password', etc.
return cvox.AbstractEarcons.EDITABLE_TEXT;
}
}
}
return null;
};