Index: chrome/browser/ui/views/extensions/extension_keybinding_registry_views.cc |
diff --git a/chrome/browser/ui/views/extensions/extension_keybinding_registry_views.cc b/chrome/browser/ui/views/extensions/extension_keybinding_registry_views.cc |
index f0c941a87fec40a366abbdb503dff8c242035dbc..a64605b18b346fa3a0e75cc5d6c7996a2086f5a8 100644 |
--- a/chrome/browser/ui/views/extensions/extension_keybinding_registry_views.cc |
+++ b/chrome/browser/ui/views/extensions/extension_keybinding_registry_views.cc |
@@ -29,8 +29,8 @@ ExtensionKeybindingRegistryViews::ExtensionKeybindingRegistryViews( |
} |
ExtensionKeybindingRegistryViews::~ExtensionKeybindingRegistryViews() { |
- EventTargets::const_iterator iter; |
- for (iter = event_targets_.begin(); iter != event_targets_.end(); ++iter) |
+ for (EventTargets::const_iterator iter = event_targets_.begin(); |
+ iter != event_targets_.end(); ++iter) |
focus_manager_->UnregisterAccelerator(iter->first, this); |
} |
@@ -57,8 +57,15 @@ void ExtensionKeybindingRegistryViews::AddExtensionKeybinding( |
if (!command_name.empty() && (iter->second.command_name() != command_name)) |
continue; |
- event_targets_[iter->second.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 (event_targets_[iter->second.accelerator()].size() > 1) |
+ continue; // It is already registered with the focus manager. |
+ |
focus_manager_->RegisterAccelerator( |
iter->second.accelerator(), |
ui::AcceleratorManager::kHighPriority, this); |
@@ -73,15 +80,7 @@ void ExtensionKeybindingRegistryViews::RemoveExtensionKeybindingImpl( |
bool ExtensionKeybindingRegistryViews::AcceleratorPressed( |
const ui::Accelerator& accelerator) { |
- 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); |
} |
bool ExtensionKeybindingRegistryViews::CanHandleAccelerators() const { |