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

Unified Diff: chrome/browser/extensions/global_shortcut_listener_win.cc

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_win.cc
diff --git a/chrome/browser/extensions/global_shortcut_listener_win.cc b/chrome/browser/extensions/global_shortcut_listener_win.cc
index 318e06e11a3647f6d13c76995f0f104c3406a340..fe1c695077413c76b43522fa22c6e404159dc59b 100644
--- a/chrome/browser/extensions/global_shortcut_listener_win.cc
+++ b/chrome/browser/extensions/global_shortcut_listener_win.cc
@@ -12,19 +12,14 @@
using content::BrowserThread;
-namespace {
-
-static base::LazyInstance<extensions::GlobalShortcutListenerWin> instance =
- LAZY_INSTANCE_INITIALIZER;
-
-} // namespace
-
namespace extensions {
// static
GlobalShortcutListener* GlobalShortcutListener::GetInstance() {
CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
- return instance.Pointer();
+ static GlobalShortcutListenerWin *instance =
+ new GlobalShortcutListenerWin();
+ return instance;
}
GlobalShortcutListenerWin::GlobalShortcutListenerWin()
@@ -66,18 +61,12 @@ void GlobalShortcutListenerWin::OnWndProc(HWND hwnd,
ui::Accelerator accelerator(
ui::KeyboardCodeForWindowsKeyCode(key_code), modifiers);
- instance.Get().NotifyKeyPressed(accelerator);
+ NotifyKeyPressed(accelerator);
}
-void GlobalShortcutListenerWin::RegisterAccelerator(
- const ui::Accelerator& accelerator,
- GlobalShortcutListener::Observer* observer) {
- if (hotkey_ids_.find(accelerator) != hotkey_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;
- }
+bool GlobalShortcutListenerWin::RegisterAcceleratorImpl(
+ const ui::Accelerator& accelerator) {
+ DCHECK(hotkey_ids_.find(accelerator) == hotkey_ids_.end());
int modifiers = 0;
modifiers |= accelerator.IsShiftDown() ? MOD_SHIFT : 0;
@@ -93,22 +82,17 @@ void GlobalShortcutListenerWin::RegisterAccelerator(
if (!success) {
// Most likely error: 1409 (Hotkey already registered).
LOG(ERROR) << "RegisterHotKey failed, error: " << GetLastError();
- return;
+ return false;
}
hotkey_ids_[accelerator] = hotkey_id++;
- GlobalShortcutListener::RegisterAccelerator(accelerator, observer);
+ return true;
}
-void GlobalShortcutListenerWin::UnregisterAccelerator(
- const ui::Accelerator& accelerator,
- GlobalShortcutListener::Observer* observer) {
- // 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.
+void GlobalShortcutListenerWin::UnregisterAcceleratorImpl(
+ const ui::Accelerator& accelerator) {
HotkeyIdMap::iterator it = hotkey_ids_.find(accelerator);
- if (it == hotkey_ids_.end())
- return;
+ DCHECK(it != hotkey_ids_.end());
bool success = !!UnregisterHotKey(
gfx::SingletonHwnd::GetInstance()->hwnd(), it->second);
@@ -117,7 +101,6 @@ void GlobalShortcutListenerWin::UnregisterAccelerator(
DCHECK(success);
hotkey_ids_.erase(it);
- GlobalShortcutListener::UnregisterAccelerator(accelerator, observer);
}
} // namespace extensions

Powered by Google App Engine
This is Rietveld 408576698