| 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..9be5f3e7d61376061d7e4c956c38300d2035f5de 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_EQ(1u, event_targets_[accelerator].size());
|
|
|
| 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_EQ(1u, event_targets_[accelerator].size());
|
| }
|
|
|
| // Add the Page Action (if any).
|
| @@ -111,8 +118,10 @@ 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()));
|
| + // We should have only one target. See comment about |event_targets_|.
|
| + DCHECK_EQ(1u, event_targets_[accelerator].size());
|
| }
|
|
|
| // Add the Script Badge (if any).
|
| @@ -123,8 +132,10 @@ 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()));
|
| + // We should have only one target. See comment about |event_targets_|.
|
| + DCHECK_EQ(1u, event_targets_[accelerator].size());
|
| }
|
| }
|
|
|
| @@ -149,12 +160,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);
|
| }
|
|
|