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

Unified Diff: third_party/google_input_tools/third_party/closure_library/closure/goog/ui/controlrenderer.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/ui/controlrenderer.js
diff --git a/third_party/google_input_tools/third_party/closure_library/closure/goog/ui/controlrenderer.js b/third_party/google_input_tools/third_party/closure_library/closure/goog/ui/controlrenderer.js
index e16d1a27fb2a95772dd1a62bd0431ca888f5dd23..1feda07c8ee6b0af06534734ce1db599a0e5f1da 100644
--- a/third_party/google_input_tools/third_party/closure_library/closure/goog/ui/controlrenderer.js
+++ b/third_party/google_input_tools/third_party/closure_library/closure/goog/ui/controlrenderer.js
@@ -27,6 +27,7 @@ goog.require('goog.a11y.aria.State');
goog.require('goog.array');
goog.require('goog.asserts');
goog.require('goog.dom');
+goog.require('goog.dom.TagName');
goog.require('goog.dom.classlist');
goog.require('goog.object');
goog.require('goog.string');
@@ -143,7 +144,7 @@ goog.ui.ControlRenderer.CSS_CLASS = goog.getCssName('goog-control');
* Members of each class name combination will be joined with underscores in the
* order that they're defined in the array. You should alphabetize them (for
* compatibility with the CSS compiler) unless you are doing something special.
- * @type {Array.<Array.<string>>}
+ * @type {Array<Array<string>>}
*/
goog.ui.ControlRenderer.IE6_CLASS_COMBINATIONS = [];
@@ -153,18 +154,17 @@ goog.ui.ControlRenderer.IE6_CLASS_COMBINATIONS = [];
* of component states to ARIA attributes is neither component- nor
* renderer-specific, this is a static property of the renderer class, and is
* initialized on first use.
- * @type {Object.<goog.ui.Component.State, goog.a11y.aria.State>}
+ * @type {Object<goog.ui.Component.State, goog.a11y.aria.State>}
* @private
- * @const
*/
-goog.ui.ControlRenderer.ARIA_ATTRIBUTE_MAP_;
+goog.ui.ControlRenderer.ariaAttributeMap_;
/**
* Map of certain ARIA states to ARIA roles that support them. Used for checked
* and selected Component states because they are used on Components with ARIA
* roles that do not support the corresponding ARIA state.
- * @private {!Object.<goog.a11y.aria.Role, goog.a11y.aria.State>}
+ * @private {!Object<goog.a11y.aria.Role, goog.a11y.aria.State>}
* @const
*/
goog.ui.ControlRenderer.TOGGLE_ARIA_STATE_MAP_ = goog.object.create(
@@ -198,9 +198,9 @@ goog.ui.ControlRenderer.prototype.getAriaRole = function() {
goog.ui.ControlRenderer.prototype.createDom = function(control) {
// Create and return DIV wrapping contents.
var element = control.getDomHelper().createDom(
- 'div', this.getClassNames(control).join(' '), control.getContent());
+ goog.dom.TagName.DIV, this.getClassNames(control).join(' '),
+ control.getContent());
- this.setAriaStates(control, element);
return element;
};
@@ -321,6 +321,12 @@ goog.ui.ControlRenderer.prototype.decorate = function(control, element) {
} else {
state |= this.getStateFromClass(className);
}
+ if (this.getStateFromClass(className) == goog.ui.Component.State.DISABLED) {
+ goog.asserts.assertElement(contentElem);
+ if (goog.dom.isFocusableTabIndex(contentElem)) {
+ goog.dom.setFocusableTabIndex(contentElem, false);
+ }
+ }
}, this);
control.setStateInternal(state);
@@ -357,7 +363,6 @@ goog.ui.ControlRenderer.prototype.decorate = function(control, element) {
goog.dom.classlist.set(element, classNames.join(' '));
}
- this.setAriaStates(control, element);
return element;
};
@@ -419,6 +424,11 @@ goog.ui.ControlRenderer.prototype.setAriaStates = function(control, element) {
goog.asserts.assert(control);
goog.asserts.assert(element);
+ var ariaLabel = control.getAriaLabel();
+ if (goog.isDefAndNotNull(ariaLabel)) {
+ this.setAriaLabel(element, ariaLabel);
+ }
+
if (!control.isVisible()) {
goog.a11y.aria.setState(
element, goog.a11y.aria.State.HIDDEN, !control.isVisible());
@@ -443,6 +453,17 @@ goog.ui.ControlRenderer.prototype.setAriaStates = function(control, element) {
/**
+ * Sets the element's ARIA label. This should be overriden by subclasses that
+ * don't apply the role directly on control.element_.
+ * @param {!Element} element Element whose ARIA label is to be updated.
+ * @param {string} ariaLabel Label to add to the element.
+ */
+goog.ui.ControlRenderer.prototype.setAriaLabel = function(element, ariaLabel) {
+ goog.a11y.aria.setLabel(element, ariaLabel);
+};
+
+
+/**
* Allows or disallows text selection within the control's DOM.
* @param {Element} element The control's root element.
* @param {boolean} allow Whether the element should allow text selection.
@@ -571,8 +592,8 @@ goog.ui.ControlRenderer.prototype.setState = function(control, state, enable) {
goog.ui.ControlRenderer.prototype.updateAriaState = function(element, state,
enable) {
// Ensure the ARIA attribute map exists.
- if (!goog.ui.ControlRenderer.ARIA_ATTRIBUTE_MAP_) {
- goog.ui.ControlRenderer.ARIA_ATTRIBUTE_MAP_ = goog.object.create(
+ if (!goog.ui.ControlRenderer.ariaAttributeMap_) {
+ goog.ui.ControlRenderer.ariaAttributeMap_ = goog.object.create(
goog.ui.Component.State.DISABLED, goog.a11y.aria.State.DISABLED,
goog.ui.Component.State.SELECTED, goog.a11y.aria.State.SELECTED,
goog.ui.Component.State.CHECKED, goog.a11y.aria.State.CHECKED,
@@ -581,7 +602,7 @@ goog.ui.ControlRenderer.prototype.updateAriaState = function(element, state,
goog.asserts.assert(element,
'The element passed as a first parameter cannot be null.');
var ariaAttr = goog.ui.ControlRenderer.getAriaStateForAriaRole_(
- element, goog.ui.ControlRenderer.ARIA_ATTRIBUTE_MAP_[state]);
+ element, goog.ui.ControlRenderer.ariaAttributeMap_[state]);
if (ariaAttr) {
goog.a11y.aria.setState(element, ariaAttr, enable);
}
@@ -654,7 +675,8 @@ goog.ui.ControlRenderer.prototype.setContent = function(element, content) {
// NodeList. The second condition filters out TextNode which also has
// length attribute but is not array like. The nodes have to be cloned
// because childHandler removes them from the list during iteration.
- goog.array.forEach(goog.array.clone(/** @type {NodeList} */(content)),
+ goog.array.forEach(
+ goog.array.clone(/** @type {!NodeList} */(content)),
childHandler);
} else {
// Node or string.
@@ -700,7 +722,7 @@ goog.ui.ControlRenderer.prototype.getCssClass = function() {
* method doesn't reference {@link IE6_CLASS_COMBINATIONS} so that it can be
* compiled out, but subclasses should return their IE6_CLASS_COMBINATIONS
* static constant instead.
- * @return {Array.<Array.<string>>} Array of class name combinations.
+ * @return {Array<Array<string>>} Array of class name combinations.
*/
goog.ui.ControlRenderer.prototype.getIe6ClassCombinations = function() {
return [];
@@ -744,7 +766,7 @@ goog.ui.ControlRenderer.prototype.getStructuralCssClass = function() {
* method is guaranteed to return an array of at least one element.
* @param {goog.ui.Control} control Control whose CSS classes are to be
* returned.
- * @return {!Array.<string>} Array of CSS class names applicable to the control.
+ * @return {!Array<string>} Array of CSS class names applicable to the control.
* @protected
*/
goog.ui.ControlRenderer.prototype.getClassNames = function(control) {
@@ -789,11 +811,11 @@ goog.ui.ControlRenderer.prototype.getClassNames = function(control) {
* If opt_includedClass is provided, return only the combined classes that have
* all members contained in classes AND include opt_includedClass as well.
* opt_includedClass is added to classes as well.
- * @param {goog.array.ArrayLike.<string>} classes Array-like thing of classes to
+ * @param {goog.array.ArrayLike<string>} classes Array-like thing of classes to
* return matching combined classes for.
* @param {?string=} opt_includedClass If provided, get only the combined
* classes that include this one.
- * @return {!Array.<string>} Array of combined class names that should be
+ * @return {!Array<string>} Array of combined class names that should be
* applied.
* @private
*/
@@ -821,7 +843,7 @@ goog.ui.ControlRenderer.prototype.getAppliedCombinedClassNames_ = function(
* implementation uses the renderer's {@link getClassForState} method to
* generate each state-specific class.
* @param {number} state Bit mask of component states.
- * @return {!Array.<string>} Array of CSS class names representing the given
+ * @return {!Array<string>} Array of CSS class names representing the given
* state.
* @protected
*/

Powered by Google App Engine
This is Rietveld 408576698