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 10c7f5d341abb09accaee3c3922c79bd5eb89309..5988230f31139d0e1023c6c3e2f00ab1c7f6f9ad 100644 |
--- a/chrome/browser/ui/gtk/extensions/extension_keybinding_registry_gtk.cc |
+++ b/chrome/browser/ui/gtk/extensions/extension_keybinding_registry_gtk.cc |
@@ -73,8 +73,13 @@ void ExtensionKeybindingRegistryGtk::AddExtensionKeybinding( |
continue; |
ui::Accelerator accelerator(iter->second.accelerator()); |
- event_targets_[accelerator] = |
- std::make_pair(extension->id(), iter->second.command_name()); |
+ event_targets_[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_[accelerator].size() == 1); |
if (!accel_group_) { |
accel_group_ = gtk_accel_group_new(); |
@@ -99,8 +104,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 +118,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 +131,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. |
} |
} |
@@ -149,12 +158,5 @@ gboolean ExtensionKeybindingRegistryGtk::OnGtkAccelerator( |
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::NotifyEventTargets(accelerator); |
} |