Chromium Code Reviews| Index: chrome/browser/resources/extensions/extension_command_list.js |
| diff --git a/chrome/browser/resources/extensions/extension_command_list.js b/chrome/browser/resources/extensions/extension_command_list.js |
| index d730c9d841ec054f19677f88cb94b7f68d70397b..0cec00516fe88ecfff57ca74bac451112ad2301c 100644 |
| --- a/chrome/browser/resources/extensions/extension_command_list.js |
| +++ b/chrome/browser/resources/extensions/extension_command_list.js |
| @@ -26,6 +26,10 @@ cr.define('options', function() { |
| /** @const */ var keyRight = 39; |
| /** @const */ var keyTab = 9; |
| /** @const */ var keyUp = 38; |
| + /** @const */ var keyMediaNextTrack = 176; |
| + /** @const */ var keyMediaPrevTrack = 177; |
| + /** @const */ var keyMediaStop = 178; |
| + /** @const */ var keyMediaPlayPause = 179; |
|
Finnur
2013/09/04 11:28:12
The list is alphabetical so this should not be at
zhchbin
2013/09/04 12:50:03
Done.
|
| /** |
| * Returns whether the passed in |keyCode| is a valid extension command |
| @@ -48,6 +52,10 @@ cr.define('options', function() { |
| keyCode == keyRight || |
| keyCode == keyTab || |
| keyCode == keyUp || |
| + keyCode == keyMediaNextTrack || |
| + keyCode == keyMediaPrevTrack || |
| + keyCode == keyMediaStop || |
| + keyCode == keyMediaPlayPause || |
|
Finnur
2013/09/04 11:28:12
Same here.
zhchbin
2013/09/04 12:50:03
Done.
|
| (keyCode >= 'A'.charCodeAt(0) && keyCode <= 'Z'.charCodeAt(0)) || |
| (keyCode >= '0'.charCodeAt(0) && keyCode <= '9'.charCodeAt(0)); |
| } |
| @@ -102,6 +110,14 @@ cr.define('options', function() { |
| output += 'Tab'; break; |
| case keyUp: |
| output += 'Up'; break; |
| + case keyMediaNextTrack: |
| + output += 'MediaNextTrack'; break; |
| + case keyMediaPrevTrack: |
| + output += 'MediaPrevTrack'; break; |
| + case keyMediaStop: |
| + output += 'MediaStop'; break; |
| + case keyMediaPlayPause: |
| + output += 'MediaPlayPause'; break; |
|
Finnur
2013/09/04 11:28:12
Same here.
zhchbin
2013/09/04 12:50:03
Done.
|
| } |
| } |
| } |
| @@ -109,6 +125,20 @@ cr.define('options', function() { |
| return output; |
| } |
| + /** |
| + * Returns whether the passed in |keyCode| is a keycode of media key. This is |
| + * restricted to 'MediaNextTrack', 'MediaPrevTrack', 'MediaStop', |
| + * 'MediaPlayPause' at the moment. |
| + * @param {int} keyCode The keycode to consider. |
| + * @return {boolean} Returns whether the keycode is media key. |
| + */ |
| + function isMediaKey(keyCode) { |
|
Finnur
2013/09/04 11:28:12
I'd like to make this function a bit more general,
zhchbin
2013/09/04 12:50:03
Done with using a enum:
/**
* Enum for wheth
|
| + return keyCode == keyMediaNextTrack || |
| + keyCode == keyMediaPrevTrack || |
| + keyCode == keyMediaStop || |
| + keyCode == keyMediaPlayPause; |
| + } |
| + |
| ExtensionCommandList.prototype = { |
| __proto__: HTMLDivElement.prototype, |
| @@ -323,8 +353,18 @@ cr.define('options', function() { |
| event.preventDefault(); |
| event.stopPropagation(); |
| - if (!event.ctrlKey && !event.altKey && (!cr.isMac || !event.metaKey)) |
| - return; // Ctrl or Alt is a must (or Cmd on Mac). |
| + if (!event.ctrlKey && !event.altKey && (!cr.isMac || !event.metaKey) && |
| + !isMediaKey(event.keyCode)) { |
| + // Ctrl or Alt is a must (or Cmd on Mac), except for Media Keys. |
| + return; |
| + } |
| + |
| + // Modifiers can not be used in combination with the Media Keys. |
| + if (isMediaKey(event.keyCode)) { |
| + if (event.ctrlKey || event.altKey || (cr.isMac && event.metaKey) || |
| + event.shiftKey) |
| + return; |
| + } |
|
Finnur
2013/09/04 11:28:12
I think this is a bit more readable:
function has
zhchbin
2013/09/04 12:50:03
Done with still using a boolean for countShiftAsMo
|
| var shortcutNode = this.capturingElement_; |
| var keystroke = keystrokeToString(event); |