Index: chrome/browser/extensions/extension_commands_global_registry.cc |
diff --git a/chrome/browser/extensions/extension_commands_global_registry.cc b/chrome/browser/extensions/extension_commands_global_registry.cc |
index a7ebd898adb45e492f0a174f1b4526de787b1573..5c7d71c999c7bd36060d3aad8ce6edfd5ca3a72b 100644 |
--- a/chrome/browser/extensions/extension_commands_global_registry.cc |
+++ b/chrome/browser/extensions/extension_commands_global_registry.cc |
@@ -24,8 +24,15 @@ ExtensionCommandsGlobalRegistry::ExtensionCommandsGlobalRegistry( |
} |
ExtensionCommandsGlobalRegistry::~ExtensionCommandsGlobalRegistry() { |
- 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) { |
+ GlobalShortcutListener::GetInstance()->UnregisterAccelerator( |
+ iter->first, this); |
+ } |
+ |
+ for (MediaKeysEventTargets::const_iterator iter = |
+ media_keys_event_targets_.begin(); |
+ iter != media_keys_event_targets_.end(); ++iter) { |
GlobalShortcutListener::GetInstance()->UnregisterAccelerator( |
iter->first, this); |
} |
@@ -76,8 +83,14 @@ void ExtensionCommandsGlobalRegistry::AddExtensionKeybinding( |
<< " " << command_name.c_str() |
<< " key: " << iter->second.accelerator().GetShortcutText(); |
- event_targets_[iter->second.accelerator()] = |
- std::make_pair(extension->id(), iter->second.command_name()); |
+ if (extensions::CommandService::IsMediaKey(iter->second.accelerator())) { |
+ std::pair<std::string, std::string> target = |
+ std::make_pair(extension->id(), iter->second.command_name()); |
+ media_keys_event_targets_[iter->second.accelerator()].push_back(target); |
+ } else { |
+ event_targets_[iter->second.accelerator()] = |
+ std::make_pair(extension->id(), iter->second.command_name()); |
+ } |
GlobalShortcutListener::GetInstance()->RegisterAccelerator( |
iter->second.accelerator(), this); |
@@ -95,13 +108,7 @@ void ExtensionCommandsGlobalRegistry::RemoveExtensionKeybindingImpl( |
void ExtensionCommandsGlobalRegistry::OnKeyPressed( |
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; |
- } |
- |
- CommandExecuted(it->second.first, it->second.second); |
+ ExtensionKeybindingRegistry::NotifyEventTargetsByAccelerator(accelerator); |
} |
} // namespace extensions |