diff --git a/closure/goog/deps.js b/closure/goog/deps.js
index c384f125..f3d23c29 100644
--- a/closure/goog/deps.js
+++ b/closure/goog/deps.js
@@ -669,7 +669,7 @@ goog.addDependency('ui/custombuttonrenderer.js', ['goog.ui.CustomButtonRenderer'
goog.addDependency('ui/customcolorpalette.js', ['goog.ui.CustomColorPalette'], ['goog.color', 'goog.dom', 'goog.ui.ColorPalette']);
goog.addDependency('ui/datepicker.js', ['goog.ui.DatePicker', 'goog.ui.DatePicker.Events', 'goog.ui.DatePickerEvent'], ['goog.date', 'goog.date.Date', 'goog.date.Interval', 'goog.dom', 'goog.dom.a11y', 'goog.dom.classes', 'goog.events', 'goog.events.Event', 'goog.events.EventType', 'goog.events.KeyHandler', 'goog.events.KeyHandler.EventType', 'goog.i18n.DateTimeFormat', 'goog.i18n.DateTimeSymbols', 'goog.style', 'goog.ui.Component', 'goog.ui.IdGenerator']);
goog.addDependency('ui/decorate.js', ['goog.ui.decorate'], ['goog.ui.registry']);
-goog.addDependency('ui/dialog.js', ['goog.ui.Dialog', 'goog.ui.Dialog.ButtonSet', 'goog.ui.Dialog.ButtonSet.DefaultButtons', 'goog.ui.Dialog.DefaultButtonCaptions', 'goog.ui.Dialog.DefaultButtonKeys', 'goog.ui.Dialog.Event', 'goog.ui.Dialog.EventType'], ['goog.asserts', 'goog.dom', 'goog.dom.NodeType', 'goog.dom.TagName', 'goog.dom.a11y', 'goog.dom.classes', 'goog.events.Event', 'goog.events.EventType', 'goog.events.KeyCodes', 'goog.fx.Dragger', 'goog.math.Rect', 'goog.structs', 'goog.structs.Map', 'goog.style', 'goog.ui.ModalPopup', 'goog.userAgent']);
+goog.addDependency('ui/dialog.js', ['goog.ui.Dialog', 'goog.ui.Dialog.ButtonSet', 'goog.ui.Dialog.ButtonSet.DefaultButtons', 'goog.ui.Dialog.DefaultButtonCaptions', 'goog.ui.Dialog.DefaultButtonKeys', 'goog.ui.Dialog.Event', 'goog.ui.Dialog.EventType'], ['goog.asserts', 'goog.dom', 'goog.dom.NodeType', 'goog.dom.TagName', 'goog.dom.a11y', 'goog.dom.a11y.Role', 'goog.dom.classes', 'goog.events', 'goog.events.Event', 'goog.events.EventType', 'goog.events.KeyCodes', 'goog.fx.Dragger', 'goog.math.Rect', 'goog.structs', 'goog.structs.Map', 'goog.style', 'goog.ui.ModalPopup', 'goog.userAgent']);
goog.addDependency('ui/dimensionpicker.js', ['goog.ui.DimensionPicker'], ['goog.events.EventType', 'goog.math.Size', 'goog.ui.Control', 'goog.ui.DimensionPickerRenderer', 'goog.ui.registry']);
goog.addDependency('ui/dimensionpickerrenderer.js', ['goog.ui.DimensionPickerRenderer'], ['goog.dom', 'goog.dom.TagName', 'goog.i18n.bidi', 'goog.style', 'goog.ui.ControlRenderer', 'goog.userAgent']);
goog.addDependency('ui/dragdropdetector.js', ['goog.ui.DragDropDetector', 'goog.ui.DragDropDetector.EventType', 'goog.ui.DragDropDetector.ImageDropEvent', 'goog.ui.DragDropDetector.LinkDropEvent'], ['goog.dom', 'goog.dom.TagName', 'goog.events.Event', 'goog.events.EventHandler', 'goog.events.EventTarget', 'goog.events.EventType', 'goog.math.Coordinate', 'goog.string', 'goog.style', 'goog.userAgent']);
diff --git a/closure/goog/ui/dialog.js b/closure/goog/ui/dialog.js
index 7a253763..0a4fa31f 100644
--- a/closure/goog/ui/dialog.js
+++ b/closure/goog/ui/dialog.js
@@ -35,7 +35,9 @@ goog.require('goog.dom');
goog.require('goog.dom.NodeType');
goog.require('goog.dom.TagName');
goog.require('goog.dom.a11y');
+goog.require('goog.dom.a11y.Role');
goog.require('goog.dom.classes');
+goog.require('goog.events');
goog.require('goog.events.Event');
goog.require('goog.events.EventType');
goog.require('goog.events.KeyCodes');
@@ -1019,10 +1021,10 @@ goog.ui.Dialog.prototype.onKey_ = function(e) {
var defaultKey = buttonSet.getDefault();
var defaultButton = defaultKey && buttonSet.getButton(defaultKey);
- // Users may expect to hit enter on a TEXTAREA or a SELECT element.
+ // Users may expect to hit enter on a TEXTAREA, SELECT or an A element.
var isSpecialFormElement =
- (target.tagName == 'TEXTAREA' || target.tagName == 'SELECT') &&
- !target.disabled;
+ (target.tagName == 'TEXTAREA' || target.tagName == 'SELECT' ||
+ target.tagName == 'A') && !target.disabled;
if (defaultButton && !defaultButton.disabled && !isSpecialFormElement) {
key = defaultKey;
diff --git a/closure/goog/ui/dialog_test.html b/closure/goog/ui/dialog_test.html
index 6dd8e071..ffa5429c 100644
--- a/closure/goog/ui/dialog_test.html
+++ b/closure/goog/ui/dialog_test.html
@@ -135,23 +135,37 @@
}
function testEnterKeyDoesNothingOnSpecialFormElements() {
- dialog.setContent('');
- var textarea = dialog.getContentElement().
- getElementsByTagName('TEXTAREA')[0];
+ checkEnterKeyDoesNothingOnSpecialFormElement(
+ '',
+ 'TEXTAREA');
+
+ checkEnterKeyDoesNothingOnSpecialFormElement(
+ '',
+ 'SELECT');
+
+ checkEnterKeyDoesNothingOnSpecialFormElement(
+ 'Hello dialog',
+ 'A');
+ }
+
+ function checkEnterKeyDoesNothingOnSpecialFormElement(content, tagName) {
+ dialog.setContent(content);
+ var formElement = dialog.getContentElement().
+ getElementsByTagName(tagName)[0];
var wasCalled = false;
var callRecorder = function() {
wasCalled = true;
};
goog.events.listen(dialog, goog.ui.Dialog.EventType.SELECT, callRecorder);
- // Enter does not fire on the enabled textarea.
- goog.testing.events.fireKeySequence(textarea,
+ // Enter does not fire on the enabled form element.
+ goog.testing.events.fireKeySequence(formElement,
goog.events.KeyCodes.ENTER);
assertFalse(wasCalled);
- // Enter fires on the disabled textarea.
- textarea.disabled = true;
- goog.testing.events.fireKeySequence(textarea,
+ // Enter fires on the disabled form element.
+ formElement.disabled = true;
+ goog.testing.events.fireKeySequence(formElement,
goog.events.KeyCodes.ENTER);
assertTrue(wasCalled);
}