#include "libcef_dll/ctocpp/download_handler_ctocpp.h"
#include "libcef_dll/cpptoc/before_download_callback_cpptoc.h"
#include "libcef_dll/cpptoc/browser_cpptoc.h"
#include "libcef_dll/cpptoc/download_item_callback_cpptoc.h"
#include "libcef_dll/cpptoc/download_item_cpptoc.h"
#include "libcef_dll/shutdown_checker.h"
NO_SANITIZE("cfi-icall")
void CefDownloadHandlerCToCpp::OnBeforeDownload(
CefRefPtr<CefBrowser> browser,
CefRefPtr<CefDownloadItem> download_item,
const CefString& suggested_name,
CefRefPtr<CefBeforeDownloadCallback> callback) {
shutdown_checker::AssertNotShutdown();
cef_download_handler_t* _struct = GetStruct();
if (CEF_MEMBER_MISSING(_struct, on_before_download))
return;
DCHECK(browser.get());
if (!browser.get())
return;
DCHECK(download_item.get());
if (!download_item.get())
return;
DCHECK(!suggested_name.empty());
if (suggested_name.empty())
return;
DCHECK(callback.get());
if (!callback.get())
return;
_struct->on_before_download(_struct, CefBrowserCppToC::Wrap(browser),
CefDownloadItemCppToC::Wrap(download_item),
suggested_name.GetStruct(),
CefBeforeDownloadCallbackCppToC::Wrap(callback));
}
NO_SANITIZE("cfi-icall")
void CefDownloadHandlerCToCpp::OnDownloadUpdated(
CefRefPtr<CefBrowser> browser,
CefRefPtr<CefDownloadItem> download_item,
CefRefPtr<CefDownloadItemCallback> callback) {
shutdown_checker::AssertNotShutdown();
cef_download_handler_t* _struct = GetStruct();
if (CEF_MEMBER_MISSING(_struct, on_download_updated))
return;
DCHECK(browser.get());
if (!browser.get())
return;
DCHECK(download_item.get());
if (!download_item.get())
return;
DCHECK(callback.get());
if (!callback.get())
return;
_struct->on_download_updated(_struct, CefBrowserCppToC::Wrap(browser),
CefDownloadItemCppToC::Wrap(download_item),
CefDownloadItemCallbackCppToC::Wrap(callback));
}
CefDownloadHandlerCToCpp::CefDownloadHandlerCToCpp() {}
CefDownloadHandlerCToCpp::~CefDownloadHandlerCToCpp() {
shutdown_checker::AssertNotShutdown();
}
template <>
cef_download_handler_t* CefCToCppRefCounted<
CefDownloadHandlerCToCpp,
CefDownloadHandler,
cef_download_handler_t>::UnwrapDerived(CefWrapperType type,
CefDownloadHandler* c) {
NOTREACHED() << "Unexpected class type: " << type;
return nullptr;
}
template <>
CefWrapperType CefCToCppRefCounted<CefDownloadHandlerCToCpp,
CefDownloadHandler,
cef_download_handler_t>::kWrapperType =
WT_DOWNLOAD_HANDLER;