#include "libcef_dll/ctocpp/drag_handler_ctocpp.h"
#include "libcef_dll/cpptoc/browser_cpptoc.h"
#include "libcef_dll/cpptoc/drag_data_cpptoc.h"
#include "libcef_dll/cpptoc/frame_cpptoc.h"
#include "libcef_dll/shutdown_checker.h"
NO_SANITIZE("cfi-icall")
bool CefDragHandlerCToCpp::OnDragEnter(CefRefPtr<CefBrowser> browser,
CefRefPtr<CefDragData> dragData,
DragOperationsMask mask) {
shutdown_checker::AssertNotShutdown();
cef_drag_handler_t* _struct = GetStruct();
if (CEF_MEMBER_MISSING(_struct, on_drag_enter))
return false;
DCHECK(browser.get());
if (!browser.get())
return false;
DCHECK(dragData.get());
if (!dragData.get())
return false;
int _retval = _struct->on_drag_enter(_struct, CefBrowserCppToC::Wrap(browser),
CefDragDataCppToC::Wrap(dragData), mask);
return _retval ? true : false;
}
NO_SANITIZE("cfi-icall")
void CefDragHandlerCToCpp::OnDraggableRegionsChanged(
CefRefPtr<CefBrowser> browser,
CefRefPtr<CefFrame> frame,
const std::vector<CefDraggableRegion>& regions) {
shutdown_checker::AssertNotShutdown();
cef_drag_handler_t* _struct = GetStruct();
if (CEF_MEMBER_MISSING(_struct, on_draggable_regions_changed))
return;
DCHECK(browser.get());
if (!browser.get())
return;
DCHECK(frame.get());
if (!frame.get())
return;
const size_t regionsCount = regions.size();
cef_draggable_region_t* regionsList = NULL;
if (regionsCount > 0) {
regionsList = new cef_draggable_region_t[regionsCount];
DCHECK(regionsList);
if (regionsList) {
for (size_t i = 0; i < regionsCount; ++i) {
regionsList[i] = regions[i];
}
}
}
_struct->on_draggable_regions_changed(
_struct, CefBrowserCppToC::Wrap(browser), CefFrameCppToC::Wrap(frame),
regionsCount, regionsList);
if (regionsList)
delete[] regionsList;
}
CefDragHandlerCToCpp::CefDragHandlerCToCpp() {}
CefDragHandlerCToCpp::~CefDragHandlerCToCpp() {
shutdown_checker::AssertNotShutdown();
}
template <>
cef_drag_handler_t*
CefCToCppRefCounted<CefDragHandlerCToCpp, CefDragHandler, cef_drag_handler_t>::
UnwrapDerived(CefWrapperType type, CefDragHandler* c) {
NOTREACHED() << "Unexpected class type: " << type;
return nullptr;
}
template <>
CefWrapperType CefCToCppRefCounted<CefDragHandlerCToCpp,
CefDragHandler,
cef_drag_handler_t>::kWrapperType =
WT_DRAG_HANDLER;