// Copyright (c) 2013 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef CHROME_BROWSER_EXTENSIONS_GLOBAL_SHORTCUT_LISTENER_WIN_H_ #define CHROME_BROWSER_EXTENSIONS_GLOBAL_SHORTCUT_LISTENER_WIN_H_ #include #include "base/memory/scoped_ptr.h" #include "chrome/browser/extensions/global_shortcut_listener.h" #include "ui/gfx/win/singleton_hwnd_observer.h" namespace extensions { // Windows-specific implementation of the GlobalShortcutListener class that // listens for global shortcuts. Handles setting up a keyboard hook and // forwarding its output to the base class for processing. class GlobalShortcutListenerWin : public GlobalShortcutListener { public: GlobalShortcutListenerWin(); ~GlobalShortcutListenerWin() override; private: // The implementation of our Window Proc, called by SingletonHwndObserver. void OnWndProc(HWND hwnd, UINT message, WPARAM wparam, LPARAM lparam); // GlobalShortcutListener implementation. void StartListening() override; void StopListening() override; bool RegisterAcceleratorImpl(const ui::Accelerator& accelerator) override; void UnregisterAcceleratorImpl(const ui::Accelerator& accelerator) override; // Whether this object is listening for global shortcuts. bool is_listening_; // A map of registered accelerators and their registration ids. typedef std::map HotkeyIdMap; HotkeyIdMap hotkey_ids_; scoped_ptr singleton_hwnd_observer_; DISALLOW_COPY_AND_ASSIGN(GlobalShortcutListenerWin); }; } // namespace extensions #endif // CHROME_BROWSER_EXTENSIONS_GLOBAL_SHORTCUT_LISTENER_WIN_H_