#include "libcef_dll/cpptoc/keyboard_handler_cpptoc.h"
#include "libcef_dll/ctocpp/browser_ctocpp.h"
#include "libcef_dll/shutdown_checker.h"
namespace {
int CEF_CALLBACK
keyboard_handler_on_pre_key_event(struct _cef_keyboard_handler_t* self,
cef_browser_t* browser,
const struct _cef_key_event_t* event,
cef_event_handle_t os_event,
int* is_keyboard_shortcut) {
shutdown_checker::AssertNotShutdown();
DCHECK(self);
if (!self)
return 0;
DCHECK(browser);
if (!browser)
return 0;
DCHECK(event);
if (!event)
return 0;
DCHECK(is_keyboard_shortcut);
if (!is_keyboard_shortcut)
return 0;
CefKeyEvent eventObj;
if (event)
eventObj.Set(*event, false);
bool is_keyboard_shortcutBool =
(is_keyboard_shortcut && *is_keyboard_shortcut) ? true : false;
bool _retval = CefKeyboardHandlerCppToC::Get(self)->OnPreKeyEvent(
CefBrowserCToCpp::Wrap(browser), eventObj, os_event,
&is_keyboard_shortcutBool);
if (is_keyboard_shortcut)
*is_keyboard_shortcut = is_keyboard_shortcutBool ? true : false;
return _retval;
}
int CEF_CALLBACK
keyboard_handler_on_key_event(struct _cef_keyboard_handler_t* self,
cef_browser_t* browser,
const struct _cef_key_event_t* event,
cef_event_handle_t os_event) {
shutdown_checker::AssertNotShutdown();
DCHECK(self);
if (!self)
return 0;
DCHECK(browser);
if (!browser)
return 0;
DCHECK(event);
if (!event)
return 0;
CefKeyEvent eventObj;
if (event)
eventObj.Set(*event, false);
bool _retval = CefKeyboardHandlerCppToC::Get(self)->OnKeyEvent(
CefBrowserCToCpp::Wrap(browser), eventObj, os_event);
return _retval;
}
}
CefKeyboardHandlerCppToC::CefKeyboardHandlerCppToC() {
GetStruct()->on_pre_key_event = keyboard_handler_on_pre_key_event;
GetStruct()->on_key_event = keyboard_handler_on_key_event;
}
CefKeyboardHandlerCppToC::~CefKeyboardHandlerCppToC() {
shutdown_checker::AssertNotShutdown();
}
template <>
CefRefPtr<CefKeyboardHandler> CefCppToCRefCounted<
CefKeyboardHandlerCppToC,
CefKeyboardHandler,
cef_keyboard_handler_t>::UnwrapDerived(CefWrapperType type,
cef_keyboard_handler_t* s) {
NOTREACHED() << "Unexpected class type: " << type;
return nullptr;
}
template <>
CefWrapperType CefCppToCRefCounted<CefKeyboardHandlerCppToC,
CefKeyboardHandler,
cef_keyboard_handler_t>::kWrapperType =
WT_KEYBOARD_HANDLER;