diff options
author | zhchbin@gmail.com <zhchbin@gmail.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-11-22 07:20:01 +0000 |
---|---|---|
committer | zhchbin@gmail.com <zhchbin@gmail.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-11-22 07:20:01 +0000 |
commit | 1c8df89b0b6dfaaf6bc70291566853e5911e42ff (patch) | |
tree | df870b613a111fae618b9cf4aa760db53572a682 /chrome/browser/extensions/extension_commands_global_registry.cc | |
parent | 446ea632b9674429c83aacb480071a8d5cee20c5 (diff) | |
download | chromium_src-1c8df89b0b6dfaaf6bc70291566853e5911e42ff.zip chromium_src-1c8df89b0b6dfaaf6bc70291566853e5911e42ff.tar.gz chromium_src-1c8df89b0b6dfaaf6bc70291566853e5911e42ff.tar.bz2 |
[Windows] Finish global and non-global media keys support on Windows.
This patch make sure that Media keys go to all apps/extensions that register for
them.
BUG=131612, 302437
TEST=interactive_ui_tests --gtest_filter=CommandsApiTest.AllowDuplicatedMediaKeys
TEST=interactive_ui_tests --gtest_filter=GlobalCommandsApiTest.GlobalDuplicatedMediaKey
Review URL: https://codereview.chromium.org/64273008
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@236707 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/extensions/extension_commands_global_registry.cc')
-rw-r--r-- | chrome/browser/extensions/extension_commands_global_registry.cc | 20 |
1 files changed, 9 insertions, 11 deletions
diff --git a/chrome/browser/extensions/extension_commands_global_registry.cc b/chrome/browser/extensions/extension_commands_global_registry.cc index 893924a..aa11b9c 100644 --- a/chrome/browser/extensions/extension_commands_global_registry.cc +++ b/chrome/browser/extensions/extension_commands_global_registry.cc @@ -24,8 +24,8 @@ 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); } @@ -76,8 +76,12 @@ 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()); + 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); GlobalShortcutListener::GetInstance()->RegisterAccelerator( iter->second.accelerator(), this); @@ -95,13 +99,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::NotifyEventTargets(accelerator); } } // namespace extensions |