Chromium Code Reviews| 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 61f49150a6a8c2eb98b361d113bac9fc83d68e27..afb533fbf94372b3518ee09f9c78c6118b8d804f 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; // We have register it to the focus manager. |
|
Finnur
2013/11/18 11:16:14
Comment-nit: It is already registered with the foc
zhchbin
2013/11/18 13:10:13
Done.
|
| + |
| focus_manager_->RegisterAccelerator( |
| iter->second.accelerator(), |
| ui::AcceleratorManager::kHighPriority, this); |
| @@ -73,15 +80,8 @@ 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::NotifyEventTargetsByAccelerator( |
| + accelerator); |
| } |
| bool ExtensionKeybindingRegistryViews::CanHandleAccelerators() const { |