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

Unified Diff: chrome/browser/ui/gtk/extensions/extension_keybinding_registry_gtk.cc

Issue 64273008: [Windows] Finish global and non-global media keys support on Windows. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Address comments. Created 7 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/ui/gtk/extensions/extension_keybinding_registry_gtk.cc
diff --git a/chrome/browser/ui/gtk/extensions/extension_keybinding_registry_gtk.cc b/chrome/browser/ui/gtk/extensions/extension_keybinding_registry_gtk.cc
index 4637dd0edc3491567730a7b296f65e4a79ad1631..cc758e475cd80689ef1c4d6ed228fc697a3f27b5 100644
--- a/chrome/browser/ui/gtk/extensions/extension_keybinding_registry_gtk.cc
+++ b/chrome/browser/ui/gtk/extensions/extension_keybinding_registry_gtk.cc
@@ -72,9 +72,12 @@ void ExtensionKeybindingRegistryGtk::AddExtensionKeybinding(
if (!command_name.empty() && (iter->second.command_name() != command_name))
continue;
- ui::Accelerator accelerator(iter->second.accelerator());
- event_targets_[accelerator] =
- std::make_pair(extension->id(), iter->second.command_name());
+ event_targets_[iter->second.accelerator()].push_back(
+ std::make_pair(extension->id(), iter->second.command_name()));
+ // Shortcuts except media keys have only one target in the list. See comment
+ // about |event_targets_|.
+ if (!extensions::CommandService::IsMediaKey(iter->second.accelerator()))
+ DCHECK(event_targets_[iter->second.accelerator()].size() == 1);
if (!accel_group_) {
accel_group_ = gtk_accel_group_new();
@@ -99,8 +102,10 @@ void ExtensionKeybindingRegistryGtk::AddExtensionKeybinding(
&browser_action,
NULL)) {
ui::Accelerator accelerator(browser_action.accelerator());
- event_targets_[accelerator] =
- std::make_pair(extension->id(), browser_action.command_name());
+ event_targets_[accelerator].push_back(
+ std::make_pair(extension->id(), browser_action.command_name()));
+ // We should have only one target. See comment about |event_targets_|.
+ DCHECK(event_targets_[Accelerator].size() == 1);
}
// Add the Page Action (if any).
@@ -111,8 +116,9 @@ void ExtensionKeybindingRegistryGtk::AddExtensionKeybinding(
&page_action,
NULL)) {
ui::Accelerator accelerator(page_action.accelerator());
- event_targets_[accelerator] =
- std::make_pair(extension->id(), page_action.command_name());
+ event_targets_[accelerator].push_back(
+ std::make_pair(extension->id(), page_action.command_name()));
+ DCHECK(event_targets_[Accelerator].size() == 1); // Ditto.
}
// Add the Script Badge (if any).
@@ -123,8 +129,9 @@ void ExtensionKeybindingRegistryGtk::AddExtensionKeybinding(
&script_badge,
NULL)) {
ui::Accelerator accelerator(script_badge.accelerator());
- event_targets_[accelerator] =
- std::make_pair(extension->id(), script_badge.command_name());
+ event_targets_[accelerator].push_back(
+ std::make_pair(extension->id(), script_badge.command_name()));
+ DCHECK(event_targets_[Accelerator].size() == 1); // Ditto.
}
}
@@ -148,13 +155,6 @@ gboolean ExtensionKeybindingRegistryGtk::OnGtkAccelerator(
GdkModifierType modifier) {
ui::Accelerator accelerator = ui::AcceleratorForGdkKeyCodeAndModifier(
keyval, modifier);
-
- EventTargets::iterator it = event_targets_.find(accelerator);
- if (it == event_targets_.end()) {
- NOTREACHED(); // Shouldn't get this event for something not registered.
- return FALSE;
- }
-
- CommandExecuted(it->second.first, it->second.second);
- return TRUE;
+ return ExtensionKeybindingRegistry::NotifyEventTargetsByAccelerator(
+ accelerator);
}

Powered by Google App Engine
This is Rietveld 408576698