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

Unified Diff: chrome/browser/resources/shared/js/cr/ui/menu.js

Issue 11013021: Basic keyboard access for recently_closed menu on NTP (re-work). (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Rebase to current version. Created 8 years, 1 month 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: chrome/browser/resources/shared/js/cr/ui/menu.js
diff --git a/chrome/browser/resources/shared/js/cr/ui/menu.js b/chrome/browser/resources/shared/js/cr/ui/menu.js
index 3e1e3dc31fc1e0630287a9c9fb6c03d21ed4d8a7..d70b41d5eb6860be0b45f9e4ae928bac05a9f1e7 100644
--- a/chrome/browser/resources/shared/js/cr/ui/menu.js
+++ b/chrome/browser/resources/shared/js/cr/ui/menu.js
@@ -34,6 +34,7 @@ cr.define('cr.ui', function() {
this.addEventListener('mouseout', this.handleMouseOut_);
this.classList.add('decorated');
+ this.setAttribute('role', 'menu');
this.hidden = true; // Hide the menu by default.
// Decorate the children as menu items.
@@ -124,6 +125,20 @@ cr.define('cr.ui', function() {
},
/**
+ * Focuses the selected item. If selectedIndex is invalid, set it to 0
+ * first.
+ */
+ focusSelectedItem: function() {
+ if (this.selectedIndex < 0 ||
+ this.selectedIndex > this.children.length) {
+ this.selectedIndex = 0;
+ }
+
+ if (this.selectedItem)
+ this.selectedItem.focus();
+ },
+
+ /**
* Menu length
*/
get length() {
@@ -173,14 +188,19 @@ cr.define('cr.ui', function() {
switch (e.keyIdentifier) {
case 'Down':
selectNextAvailable(1);
+ this.focusSelectedItem();
return true;
case 'Up':
selectNextAvailable(-1);
+ this.focusSelectedItem();
return true;
case 'Enter':
case 'U+0020': // Space
if (item) {
- if (cr.dispatchSimpleEvent(item, 'activate', true, true)) {
+ var activationEvent = cr.doc.createEvent('Event');
+ activationEvent.initEvent('activate', true, true);
+ activationEvent.originalEvent = e;
+ if (item.dispatchEvent(activationEvent)) {
if (item.command)
item.command.execute();
}
@@ -205,8 +225,10 @@ cr.define('cr.ui', function() {
function selectedIndexChanged(selectedIndex, oldSelectedIndex) {
var oldSelectedItem = this.children[oldSelectedIndex];
- if (oldSelectedItem)
+ if (oldSelectedItem) {
oldSelectedItem.selected = false;
+ oldSelectedItem.blur();
+ }
var item = this.selectedItem;
if (item)
item.selected = true;

Powered by Google App Engine
This is Rietveld 408576698