Index: chrome/browser/extensions/extension_keybinding_registry.cc |
diff --git a/chrome/browser/extensions/extension_keybinding_registry.cc b/chrome/browser/extensions/extension_keybinding_registry.cc |
index dae15fd8b0561f973cf6181f7880a041c2bd3566..2ba2e94f4f36e1b64d031448591b5326511776a1 100644 |
--- a/chrome/browser/extensions/extension_keybinding_registry.cc |
+++ b/chrome/browser/extensions/extension_keybinding_registry.cc |
@@ -130,12 +130,23 @@ void ExtensionKeybindingRegistry::AddEventTarget( |
const ui::Accelerator& accelerator, |
const std::string& extension_id, |
const std::string& command_name) { |
- event_targets_[accelerator].push_back( |
- std::make_pair(extension_id, command_name)); |
// Shortcuts except media keys have only one target in the list. See comment |
// about |event_targets_|. |
- if (!extensions::Command::IsMediaKey(accelerator)) |
- DCHECK_EQ(1u, event_targets_[accelerator].size()); |
+ if (!extensions::Command::IsMediaKey(accelerator) && |
+ ((event_targets_[accelerator].size() == 1 && |
+ !event_targets_[accelerator].begin()->second.empty() && |
+ event_targets_[accelerator].begin()->second != command_name) || |
+ event_targets_[accelerator].size() > 1)) |
+ NOTREACHED(); |
+ |
+ // No need to add the same command again if not a media key. |
+ if (!extensions::Command::IsMediaKey(accelerator) && |
+ event_targets_[accelerator].size() > 0 && |
+ event_targets_[accelerator].begin()->second == command_name) |
+ return; |
Finnur
2014/12/19 15:26:52
Hmm... I'm not sure I like all this. I'm sure it g
David Tseng
2014/12/19 19:41:01
I was seeing multiple event targets getting added,
Finnur
2014/12/22 15:20:08
My recommendation would be to revert back to the s
|
+ |
+ event_targets_[accelerator].push_back( |
+ std::make_pair(extension_id, command_name)); |
} |
bool ExtensionKeybindingRegistry::GetFirstTarget( |