Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2000)

Unified Diff: chrome/browser/extensions/global_shortcut_listener_mac.mm

Issue 109413003: Refactor GlobalShortcutListener. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Address Mark's comments. Created 7 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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(

Powered by Google App Engine
This is Rietveld 408576698