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

Unified Diff: chrome/browser/resources/extensions/extension_command_list.js

Issue 23523019: Enable user assign media keys in chrome://extensions page. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Nit. Created 7 years, 3 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
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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..3f1b05ff25d47f1d5b9511af87c14f6c224d171a 100644
--- a/chrome/browser/resources/extensions/extension_command_list.js
+++ b/chrome/browser/resources/extensions/extension_command_list.js
@@ -20,6 +20,10 @@ cr.define('options', function() {
/** @const */ var keyHome = 36;
/** @const */ var keyIns = 45;
/** @const */ var keyLeft = 37;
+ /** @const */ var keyMediaNextTrack = 176;
+ /** @const */ var keyMediaPlayPause = 179;
+ /** @const */ var keyMediaPrevTrack = 177;
+ /** @const */ var keyMediaStop = 178;
/** @const */ var keyPageDown = 34;
/** @const */ var keyPageUp = 33;
/** @const */ var keyPeriod = 190;
@@ -28,6 +32,15 @@ cr.define('options', function() {
/** @const */ var keyUp = 38;
/**
+ * Enum for whether we require modifiers of a keycode.
+ * @enum {number}
+ */
+ var Modifiers = {
+ ARE_NOT_ALLOWED: 0,
+ ARE_REQUIRED: 1
+ };
+
+ /**
* Returns whether the passed in |keyCode| is a valid extension command
* char or not. This is restricted to A-Z and 0-9 (ignoring modifiers) at
* the moment.
@@ -42,6 +55,10 @@ cr.define('options', function() {
keyCode == keyHome ||
keyCode == keyIns ||
keyCode == keyLeft ||
+ keyCode == keyMediaNextTrack ||
+ keyCode == keyMediaPlayPause ||
+ keyCode == keyMediaPrevTrack ||
+ keyCode == keyMediaStop ||
keyCode == keyPageDown ||
keyCode == keyPageUp ||
keyCode == keyPeriod ||
@@ -90,6 +107,14 @@ cr.define('options', function() {
output += 'Insert'; break;
case keyLeft:
output += 'Left'; break;
+ case keyMediaNextTrack:
+ output += 'MediaNextTrack'; break;
+ case keyMediaPlayPause:
+ output += 'MediaPlayPause'; break;
+ case keyMediaPrevTrack:
+ output += 'MediaPrevTrack'; break;
+ case keyMediaStop:
+ output += 'MediaStop'; break;
case keyPageDown:
output += 'PageDown'; break;
case keyPageUp:
@@ -109,6 +134,38 @@ cr.define('options', function() {
return output;
}
+ /**
+ * Returns whether the passed in |keyCode| require modifiers. Currently only
+ * "MediaNextTrack", "MediaPrevTrack", "MediaStop", "MediaPlayPause" are
+ * required to be used without any modifier.
+ * @param {int} keyCode The keycode to consider.
+ * @return {Modifiers} Returns whether the keycode require modifiers.
+ */
+ function modifiers(keyCode) {
+ switch (keyCode) {
+ case keyMediaNextTrack:
+ case keyMediaPlayPause:
+ case keyMediaPrevTrack:
+ case keyMediaStop:
+ return Modifiers.ARE_NOT_ALLOWED;
+ default:
+ return Modifiers.ARE_REQUIRED;
+ }
+ }
+
+ /**
+ * Return true if the specified keyboard event has any one of following
+ * modifiers: "Ctrl", "Alt", "Cmd" on Mac, and "Shift" when the
+ * countShiftAsModifier is true.
+ * @param {Event} event The keyboard event to consider.
+ * @param {boolean} countShiftAsModifier Whether the 'ShiftKey' should be
+ * counted as modifier.
+ */
+ function hasModifier(event, countShiftAsModifier) {
+ return event.ctrlKey || event.altKey || (cr.isMac && event.metaKey) ||
+ (countShiftAsModifier && event.shiftKey);
+ }
+
ExtensionCommandList.prototype = {
__proto__: HTMLDivElement.prototype,
@@ -323,8 +380,16 @@ 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 (modifiers(event.keyCode) == Modifiers.ARE_REQUIRED &&
+ !hasModifier(event, false)) {
+ // Ctrl or Alt (or Cmd on Mac) is a must for most shortcuts.
+ return;
+ }
+
+ if (modifiers(event.keyCode) == Modifiers.ARE_NOT_ALLOWED &&
+ hasModifier(event, true)) {
+ return;
+ }
var shortcutNode = this.capturingElement_;
var keystroke = keystrokeToString(event);
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698