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

Unified Diff: Source/devtools/front_end/KeyboardShortcut.js

Issue 218613013: DevTools: Decouple shortcuts from actions, introduce shortcut contexts (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Address comments - take 1 Created 6 years, 8 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: Source/devtools/front_end/KeyboardShortcut.js
diff --git a/Source/devtools/front_end/KeyboardShortcut.js b/Source/devtools/front_end/KeyboardShortcut.js
index d76471f1540b278e8a1f654152d6d72bd61d6b2f..337884671c4b956b891272e217424633981a11ae 100644
--- a/Source/devtools/front_end/KeyboardShortcut.js
+++ b/Source/devtools/front_end/KeyboardShortcut.js
@@ -282,29 +282,35 @@ WebInspector.KeyboardShortcut._modifiersToString = function(modifiers)
WebInspector.KeyboardShortcut.handleShortcut = function(event)
{
var key = WebInspector.KeyboardShortcut.makeKeyFromEvent(event);
- var extensions = WebInspector.KeyboardShortcut._keysToActionExtensions[key];
+ var extensions = WebInspector.KeyboardShortcut._keyToAction[key];
if (!extensions)
return;
- function handler(extension)
- {
- var result = extension.instance().handleAction(event);
- if (result)
- event.consume(true);
- delete WebInspector.KeyboardShortcut._pendingActionTimer;
- return result;
- }
-
+ extensions = WebInspector.context.applicableExtensions(extensions).items();
pfeldman 2014/04/17 10:40:25 Lets cache them?
apavlov 2014/04/17 12:42:22 Since the context is dynamic, we should always sel
for (var i = 0; i < extensions.length; ++i) {
+ var extension = extensions[i];
var ident = event.keyIdentifier;
if (/^F\d+|Control|Shift|Alt|Meta|Win|U\+001B$/.test(ident) || event.ctrlKey || event.altKey || event.metaKey) {
- if (handler(extensions[i]))
+ if (handler(extension))
return;
} else {
- WebInspector.KeyboardShortcut._pendingActionTimer = setTimeout(handler.bind(null, extensions[i]), 0);
+ WebInspector.KeyboardShortcut._pendingActionTimer = setTimeout(handler.bind(null, extension), 0);
break;
}
}
+
+ /**
+ * @param {!WebInspector.ModuleManager.Extension} extension
+ * @return {boolean}
+ */
+ function handler(extension)
+ {
+ var result = WebInspector.actionRegistry.execute(extension.descriptor()["actionId"], event);
+ if (result)
+ event.consume(true);
+ delete WebInspector.KeyboardShortcut._pendingActionTimer;
+ return result;
+ }
}
WebInspector.KeyboardShortcut.SelectAll = WebInspector.KeyboardShortcut.makeKey("a", WebInspector.KeyboardShortcut.Modifiers.CtrlOrMeta);
@@ -321,19 +327,19 @@ WebInspector.KeyboardShortcut._onKeyPress = function(event)
}
}
-WebInspector.KeyboardShortcut.registerActions = function()
+WebInspector.KeyboardShortcut.registerBindings = function()
{
document.addEventListener("keypress", WebInspector.KeyboardShortcut._onKeyPress, true);
- WebInspector.KeyboardShortcut._keysToActionExtensions = {};
+ WebInspector.KeyboardShortcut._keyToAction = {};
var extensions = WebInspector.moduleManager.extensions(WebInspector.ActionDelegate);
- extensions.forEach(registerBindings);
+ extensions.forEach(registerExtension);
/**
* @param {!WebInspector.ModuleManager.Extension} extension
*/
- function registerBindings(extension)
+ function registerExtension(extension)
{
- var bindings = extension.descriptor().bindings;
+ var bindings = extension.descriptor()["bindings"];
for (var i = 0; bindings && i < bindings.length; ++i) {
if (!platformMatches(bindings[i].platform))
continue;
@@ -344,17 +350,16 @@ WebInspector.KeyboardShortcut.registerActions = function()
/**
* @param {!WebInspector.ModuleManager.Extension} extension
- * @param {string} shortcut
*/
function registerShortcut(extension, shortcut)
{
var key = WebInspector.KeyboardShortcut.makeKeyFromBindingShortcut(shortcut);
if (!key)
return;
- if (WebInspector.KeyboardShortcut._keysToActionExtensions[key])
- WebInspector.KeyboardShortcut._keysToActionExtensions[key].push(extension);
+ if (WebInspector.KeyboardShortcut._keyToAction[key])
+ WebInspector.KeyboardShortcut._keyToAction[key].push(extension);
else
- WebInspector.KeyboardShortcut._keysToActionExtensions[key] = [extension];
+ WebInspector.KeyboardShortcut._keyToAction[key] = [extension];
}
/**

Powered by Google App Engine
This is Rietveld 408576698