#ifndef UI_EVENTS_KEYBOARD_HOOK_BASE_H_
#define UI_EVENTS_KEYBOARD_HOOK_BASE_H_
#include "ui/events/keyboard_hook.h"
namespace ui {
enum class DomCode;
class KeyEvent;
class KeyboardHookBase : public KeyboardHook {
public:
KeyboardHookBase(absl::optional<base::flat_set<DomCode>> dom_codes,
KeyEventCallback callback);
KeyboardHookBase(const KeyboardHookBase&) = delete;
KeyboardHookBase& operator=(const KeyboardHookBase&) = delete;
~KeyboardHookBase() override;
bool IsKeyLocked(DomCode dom_code) const override;
virtual bool RegisterHook();
protected:
bool ShouldCaptureKeyEvent(DomCode dom_code) const;
void ForwardCapturedKeyEvent(KeyEvent* event);
const absl::optional<base::flat_set<DomCode>>& dom_codes() {
return dom_codes_;
}
private:
KeyEventCallback key_event_callback_;
absl::optional<base::flat_set<DomCode>> dom_codes_;
};
}
#endif