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

Unified Diff: third_party/google_input_tools/third_party/closure_library/closure/goog/a11y/aria/aria.js

Issue 1257313003: Update Google Input Tools (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Free up grd resources. Created 5 years, 5 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 side-by-side diff with in-line comments
Download patch
Index: third_party/google_input_tools/third_party/closure_library/closure/goog/a11y/aria/aria.js
diff --git a/third_party/google_input_tools/third_party/closure_library/closure/goog/a11y/aria/aria.js b/third_party/google_input_tools/third_party/closure_library/closure/goog/a11y/aria/aria.js
index 2774529b95aa3d275204f10916233d365b470296..53df26cc81fc6914ef70cd0412d25159dd73d23d 100644
--- a/third_party/google_input_tools/third_party/closure_library/closure/goog/a11y/aria/aria.js
+++ b/third_party/google_input_tools/third_party/closure_library/closure/goog/a11y/aria/aria.js
@@ -31,6 +31,7 @@ goog.require('goog.asserts');
goog.require('goog.dom');
goog.require('goog.dom.TagName');
goog.require('goog.object');
+goog.require('goog.string');
/**
@@ -75,6 +76,32 @@ goog.a11y.aria.TAGS_WITH_ASSUMED_ROLES_ = [
/**
+ * A list of roles which are considered container roles.
+ * Container roles are ARIA roles which use the aria-activedescendant property
+ * to manage their active descendants or children. See
+ * {@link http://www.w3.org/TR/wai-aria/states_and_properties
+ * #aria-activedescendant} for more information.
+ * @private @const
+ */
+goog.a11y.aria.CONTAINER_ROLES_ = [
+ goog.a11y.aria.Role.COMBOBOX,
+ goog.a11y.aria.Role.GRID,
+ goog.a11y.aria.Role.GROUP,
+ goog.a11y.aria.Role.LISTBOX,
+ goog.a11y.aria.Role.MENU,
+ goog.a11y.aria.Role.MENUBAR,
+ goog.a11y.aria.Role.RADIOGROUP,
+ goog.a11y.aria.Role.ROW,
+ goog.a11y.aria.Role.ROWGROUP,
+ goog.a11y.aria.Role.TAB_LIST,
+ goog.a11y.aria.Role.TEXTBOX,
+ goog.a11y.aria.Role.TOOLBAR,
+ goog.a11y.aria.Role.TREE,
+ goog.a11y.aria.Role.TREEGRID
+];
+
+
+/**
* Sets the role of an element. If the roleName is
* empty string or null, the role for the element is removed.
* We encourage clients to call the goog.a11y.aria.removeRole
@@ -103,7 +130,7 @@ goog.a11y.aria.setRole = function(element, roleName) {
/**
* Gets role of an element.
* @param {!Element} element DOM element to get role of.
- * @return {!goog.a11y.aria.Role} ARIA Role name.
+ * @return {goog.a11y.aria.Role} ARIA Role name.
*/
goog.a11y.aria.getRole = function(element) {
var role = element.getAttribute(goog.a11y.aria.ROLE_ATTRIBUTE_);
@@ -126,13 +153,12 @@ goog.a11y.aria.removeRole = function(element) {
* @param {!(goog.a11y.aria.State|string)} stateName State attribute being set.
* Automatically adds prefix 'aria-' to the state name if the attribute is
* not an extra attribute.
- * @param {string|boolean|number|!goog.array.ArrayLike.<string>} value Value
+ * @param {string|boolean|number|!Array<string>} value Value
* for the state attribute.
*/
goog.a11y.aria.setState = function(element, stateName, value) {
- if (goog.isArrayLike(value)) {
- var array = /** @type {!goog.array.ArrayLike.<string>} */ (value);
- value = array.join(' ');
+ if (goog.isArray(value)) {
+ value = value.join(' ');
}
var attrStateName = goog.a11y.aria.getAriaAttributeName_(stateName);
if (value === '' || value == undefined) {
@@ -159,6 +185,28 @@ goog.a11y.aria.setState = function(element, stateName, value) {
/**
+ * Toggles the ARIA attribute of an element.
+ * Meant for attributes with a true/false value, but works with any attribute.
+ * If the attribute does not have a true/false value, the following rules apply:
+ * A not empty attribute will be removed.
+ * An empty attribute will be set to true.
+ * @param {!Element} el DOM node for which to set attribute.
+ * @param {!(goog.a11y.aria.State|string)} attr ARIA attribute being set.
+ * Automatically adds prefix 'aria-' to the attribute name if the attribute
+ * is not an extra attribute.
+ */
+goog.a11y.aria.toggleState = function(el, attr) {
+ var val = goog.a11y.aria.getState(el, attr);
+ if (!goog.string.isEmptyOrWhitespace(goog.string.makeSafe(val)) &&
+ !(val == 'true' || val == 'false')) {
+ goog.a11y.aria.removeState(el, /** @type {!goog.a11y.aria.State} */ (attr));
+ return;
+ }
+ goog.a11y.aria.setState(el, attr, val == 'true' ? 'false' : 'true');
+};
+
+
+/**
* Remove the state or property for the element.
* @param {!Element} element DOM node where we set state.
* @param {!goog.a11y.aria.State} stateName State name.
@@ -243,7 +291,7 @@ goog.a11y.aria.setLabel = function(element, label) {
* semantics is well supported by most screen readers.
* Only to be used internally by the ARIA library in goog.a11y.aria.*.
* @param {!Element} element The element to assert an ARIA role set.
- * @param {!goog.array.ArrayLike.<string>} allowedRoles The child roles of
+ * @param {!goog.array.ArrayLike<string>} allowedRoles The child roles of
* the roles.
*/
goog.a11y.aria.assertRoleIsSetInternalUtil = function(element, allowedRoles) {
@@ -324,7 +372,7 @@ goog.a11y.aria.getStateString = function(element, stateName) {
* Only to be used internally by the ARIA library in goog.a11y.aria.*.
* @param {!Element} element DOM node to get state from.
* @param {!goog.a11y.aria.State} stateName State name.
- * @return {!goog.array.ArrayLike.<string>} string Array
+ * @return {!goog.array.ArrayLike<string>} string Array
* value of the state attribute.
*/
goog.a11y.aria.getStringArrayStateInternalUtil = function(element, stateName) {
@@ -335,9 +383,24 @@ goog.a11y.aria.getStringArrayStateInternalUtil = function(element, stateName) {
/**
+ * Returns whether the element has a container ARIA role.
+ * Container roles are ARIA roles that use the aria-activedescendant property
+ * to manage their active descendants or children. See
+ * {@link http://www.w3.org/TR/wai-aria/states_and_properties
+ * #aria-activedescendant} for more information.
+ * @param {!Element} element
+ * @return {boolean}
+ */
+goog.a11y.aria.isContainerRole = function(element) {
+ var role = goog.a11y.aria.getRole(element);
+ return goog.array.contains(goog.a11y.aria.CONTAINER_ROLES_, role);
+};
+
+
+/**
* Splits the input stringValue on whitespace.
* @param {string} stringValue The value of the string to split.
- * @return {!goog.array.ArrayLike.<string>} string Array
+ * @return {!goog.array.ArrayLike<string>} string Array
* value as result of the split.
* @private
*/

Powered by Google App Engine
This is Rietveld 408576698