Chromium Code Reviews| Index: chrome/browser/extensions/global_shortcut_listener_mac.mm |
| diff --git a/chrome/browser/extensions/global_shortcut_listener_mac.mm b/chrome/browser/extensions/global_shortcut_listener_mac.mm |
| index 4afcffad81c8c51aa10a225745dabeae67bf7931..4e949b1f7adc8a0d98b8f20e2075323fa6aedddc 100644 |
| --- a/chrome/browser/extensions/global_shortcut_listener_mac.mm |
| +++ b/chrome/browser/extensions/global_shortcut_listener_mac.mm |
| @@ -120,16 +120,10 @@ bool GlobalShortcutListenerMac::OnMediaKeyEvent(int media_key_code) { |
| return false; |
| } |
| -void GlobalShortcutListenerMac::RegisterAccelerator( |
| - const ui::Accelerator& accelerator, |
| - GlobalShortcutListener::Observer* observer) { |
| +bool GlobalShortcutListenerMac::RegisterAcceleratorImpl( |
| + const ui::Accelerator& accelerator) { |
| CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| - if (accelerator_ids_.find(accelerator) != accelerator_ids_.end()) { |
| - // The shortcut has already been registered. Some shortcuts, such as |
| - // MediaKeys can have multiple targets, all keyed off of the same |
| - // accelerator. |
| - return; |
| - } |
| + DCHECK(accelerator_ids_.find(accelerator) == accelerator_ids_.end()); |
| if (CommandService::IsMediaKey(accelerator)) { |
| if (!IsAnyMediaKeyRegistered()) { |
| @@ -138,7 +132,11 @@ void GlobalShortcutListenerMac::RegisterAccelerator( |
| } |
| } else { |
| // Register hot_key if they are non-media keyboard shortcuts. |
| - RegisterHotKey(accelerator, hot_key_id_); |
| + if (!RegisterHotKey(accelerator, hot_key_id_)) { |
| + LOG(ERROR) << "RegisterHotKey failed."; |
|
Mark Mentovai
2013/12/20 17:54:47
This message is not terribly useful. There’s nothi
zhchbin
2013/12/21 09:10:25
Done with remove the requirement.
|
| + return false; |
| + } |
| + |
| if (!IsAnyHotKeyRegistered()) { |
| StartWatchingHotKeys(); |
| } |
| @@ -148,20 +146,13 @@ void GlobalShortcutListenerMac::RegisterAccelerator( |
| id_accelerators_[hot_key_id_] = accelerator; |
| accelerator_ids_[accelerator] = hot_key_id_; |
| ++hot_key_id_; |
| - GlobalShortcutListener::RegisterAccelerator(accelerator, observer); |
| + return true; |
| } |
| -void GlobalShortcutListenerMac::UnregisterAccelerator( |
| - const ui::Accelerator& accelerator, |
| - GlobalShortcutListener::Observer* observer) { |
| +void GlobalShortcutListenerMac::UnregisterAcceleratorImpl( |
| + const ui::Accelerator& accelerator) { |
| CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
| - |
| - // We may get asked to unregister something that we couldn't register (for |
| - // example if the shortcut was already taken by another app), so we |
| - // need to handle that gracefully. |
| - AcceleratorIdMap::iterator it = accelerator_ids_.find(accelerator); |
| - if (it == accelerator_ids_.end()) |
| - return; |
| + DCHECK(accelerator_ids_.find(accelerator) != accelerator_ids_.end()); |
| // Unregister the hot_key if it's a keyboard shortcut. |
| if (!CommandService::IsMediaKey(accelerator)) |
| @@ -171,7 +162,6 @@ void GlobalShortcutListenerMac::UnregisterAccelerator( |
| KeyId key_id = accelerator_ids_[accelerator]; |
| id_accelerators_.erase(key_id); |
| accelerator_ids_.erase(accelerator); |
| - GlobalShortcutListener::UnregisterAccelerator(accelerator, observer); |
| if (CommandService::IsMediaKey(accelerator)) { |
| // If we unregistered a media key, and now no media keys are registered, |
| @@ -187,7 +177,7 @@ void GlobalShortcutListenerMac::UnregisterAccelerator( |
| } |
| } |
| -void GlobalShortcutListenerMac::RegisterHotKey( |
| +bool GlobalShortcutListenerMac::RegisterHotKey( |
| const ui::Accelerator& accelerator, KeyId hot_key_id) { |
| EventHotKeyID event_hot_key_id; |
| @@ -207,10 +197,13 @@ void GlobalShortcutListenerMac::RegisterHotKey( |
| // Register the event hot key. |
| EventHotKeyRef hot_key_ref; |
| - RegisterEventHotKey(key_code, modifiers, event_hot_key_id, |
| + OSStatus status = RegisterEventHotKey(key_code, modifiers, event_hot_key_id, |
| GetApplicationEventTarget(), 0, &hot_key_ref); |
| + if (status != noErr) |
| + return false; |
| id_hot_key_refs_[hot_key_id] = hot_key_ref; |
| + return true; |
| } |
| void GlobalShortcutListenerMac::UnregisterHotKey( |