#include "libcef_dll/cpptoc/resource_request_handler_cpptoc.h"
#include "libcef_dll/cpptoc/cookie_access_filter_cpptoc.h"
#include "libcef_dll/cpptoc/resource_handler_cpptoc.h"
#include "libcef_dll/cpptoc/response_filter_cpptoc.h"
#include "libcef_dll/ctocpp/browser_ctocpp.h"
#include "libcef_dll/ctocpp/callback_ctocpp.h"
#include "libcef_dll/ctocpp/frame_ctocpp.h"
#include "libcef_dll/ctocpp/request_ctocpp.h"
#include "libcef_dll/ctocpp/response_ctocpp.h"
namespace {
struct _cef_cookie_access_filter_t* CEF_CALLBACK
resource_request_handler_get_cookie_access_filter(
struct _cef_resource_request_handler_t* self,
cef_browser_t* browser,
cef_frame_t* frame,
cef_request_t* request) {
DCHECK(self);
if (!self)
return NULL;
DCHECK(request);
if (!request)
return NULL;
CefRefPtr<CefCookieAccessFilter> _retval =
CefResourceRequestHandlerCppToC::Get(self)->GetCookieAccessFilter(
CefBrowserCToCpp::Wrap(browser), CefFrameCToCpp::Wrap(frame),
CefRequestCToCpp::Wrap(request));
return CefCookieAccessFilterCppToC::Wrap(_retval);
}
cef_return_value_t CEF_CALLBACK
resource_request_handler_on_before_resource_load(
struct _cef_resource_request_handler_t* self,
cef_browser_t* browser,
cef_frame_t* frame,
cef_request_t* request,
cef_callback_t* callback) {
DCHECK(self);
if (!self)
return RV_CONTINUE;
DCHECK(request);
if (!request)
return RV_CONTINUE;
DCHECK(callback);
if (!callback)
return RV_CONTINUE;
cef_return_value_t _retval =
CefResourceRequestHandlerCppToC::Get(self)->OnBeforeResourceLoad(
CefBrowserCToCpp::Wrap(browser), CefFrameCToCpp::Wrap(frame),
CefRequestCToCpp::Wrap(request), CefCallbackCToCpp::Wrap(callback));
return _retval;
}
cef_resource_handler_t* CEF_CALLBACK
resource_request_handler_get_resource_handler(
struct _cef_resource_request_handler_t* self,
cef_browser_t* browser,
cef_frame_t* frame,
cef_request_t* request) {
DCHECK(self);
if (!self)
return NULL;
DCHECK(request);
if (!request)
return NULL;
CefRefPtr<CefResourceHandler> _retval =
CefResourceRequestHandlerCppToC::Get(self)->GetResourceHandler(
CefBrowserCToCpp::Wrap(browser), CefFrameCToCpp::Wrap(frame),
CefRequestCToCpp::Wrap(request));
return CefResourceHandlerCppToC::Wrap(_retval);
}
void CEF_CALLBACK resource_request_handler_on_resource_redirect(
struct _cef_resource_request_handler_t* self,
cef_browser_t* browser,
cef_frame_t* frame,
cef_request_t* request,
struct _cef_response_t* response,
cef_string_t* new_url) {
DCHECK(self);
if (!self)
return;
DCHECK(request);
if (!request)
return;
DCHECK(response);
if (!response)
return;
DCHECK(new_url);
if (!new_url)
return;
CefString new_urlStr(new_url);
CefResourceRequestHandlerCppToC::Get(self)->OnResourceRedirect(
CefBrowserCToCpp::Wrap(browser), CefFrameCToCpp::Wrap(frame),
CefRequestCToCpp::Wrap(request), CefResponseCToCpp::Wrap(response),
new_urlStr);
}
int CEF_CALLBACK resource_request_handler_on_resource_response(
struct _cef_resource_request_handler_t* self,
cef_browser_t* browser,
cef_frame_t* frame,
cef_request_t* request,
struct _cef_response_t* response) {
DCHECK(self);
if (!self)
return 0;
DCHECK(request);
if (!request)
return 0;
DCHECK(response);
if (!response)
return 0;
bool _retval = CefResourceRequestHandlerCppToC::Get(self)->OnResourceResponse(
CefBrowserCToCpp::Wrap(browser), CefFrameCToCpp::Wrap(frame),
CefRequestCToCpp::Wrap(request), CefResponseCToCpp::Wrap(response));
return _retval;
}
struct _cef_response_filter_t* CEF_CALLBACK
resource_request_handler_get_resource_response_filter(
struct _cef_resource_request_handler_t* self,
cef_browser_t* browser,
cef_frame_t* frame,
cef_request_t* request,
struct _cef_response_t* response) {
DCHECK(self);
if (!self)
return NULL;
DCHECK(request);
if (!request)
return NULL;
DCHECK(response);
if (!response)
return NULL;
CefRefPtr<CefResponseFilter> _retval =
CefResourceRequestHandlerCppToC::Get(self)->GetResourceResponseFilter(
CefBrowserCToCpp::Wrap(browser), CefFrameCToCpp::Wrap(frame),
CefRequestCToCpp::Wrap(request), CefResponseCToCpp::Wrap(response));
return CefResponseFilterCppToC::Wrap(_retval);
}
void CEF_CALLBACK resource_request_handler_on_resource_load_complete(
struct _cef_resource_request_handler_t* self,
cef_browser_t* browser,
cef_frame_t* frame,
cef_request_t* request,
struct _cef_response_t* response,
cef_urlrequest_status_t status,
int64 received_content_length) {
DCHECK(self);
if (!self)
return;
DCHECK(request);
if (!request)
return;
DCHECK(response);
if (!response)
return;
CefResourceRequestHandlerCppToC::Get(self)->OnResourceLoadComplete(
CefBrowserCToCpp::Wrap(browser), CefFrameCToCpp::Wrap(frame),
CefRequestCToCpp::Wrap(request), CefResponseCToCpp::Wrap(response),
status, received_content_length);
}
void CEF_CALLBACK resource_request_handler_on_protocol_execution(
struct _cef_resource_request_handler_t* self,
cef_browser_t* browser,
cef_frame_t* frame,
cef_request_t* request,
int* allow_os_execution) {
DCHECK(self);
if (!self)
return;
DCHECK(request);
if (!request)
return;
DCHECK(allow_os_execution);
if (!allow_os_execution)
return;
bool allow_os_executionBool =
(allow_os_execution && *allow_os_execution) ? true : false;
CefResourceRequestHandlerCppToC::Get(self)->OnProtocolExecution(
CefBrowserCToCpp::Wrap(browser), CefFrameCToCpp::Wrap(frame),
CefRequestCToCpp::Wrap(request), allow_os_executionBool);
if (allow_os_execution)
*allow_os_execution = allow_os_executionBool ? true : false;
}
}
CefResourceRequestHandlerCppToC::CefResourceRequestHandlerCppToC() {
GetStruct()->get_cookie_access_filter =
resource_request_handler_get_cookie_access_filter;
GetStruct()->on_before_resource_load =
resource_request_handler_on_before_resource_load;
GetStruct()->get_resource_handler =
resource_request_handler_get_resource_handler;
GetStruct()->on_resource_redirect =
resource_request_handler_on_resource_redirect;
GetStruct()->on_resource_response =
resource_request_handler_on_resource_response;
GetStruct()->get_resource_response_filter =
resource_request_handler_get_resource_response_filter;
GetStruct()->on_resource_load_complete =
resource_request_handler_on_resource_load_complete;
GetStruct()->on_protocol_execution =
resource_request_handler_on_protocol_execution;
}
CefResourceRequestHandlerCppToC::~CefResourceRequestHandlerCppToC() {}
template <>
CefRefPtr<CefResourceRequestHandler>
CefCppToCRefCounted<CefResourceRequestHandlerCppToC,
CefResourceRequestHandler,
cef_resource_request_handler_t>::
UnwrapDerived(CefWrapperType type, cef_resource_request_handler_t* s) {
NOTREACHED() << "Unexpected class type: " << type;
return nullptr;
}
template <>
CefWrapperType
CefCppToCRefCounted<CefResourceRequestHandlerCppToC,
CefResourceRequestHandler,
cef_resource_request_handler_t>::kWrapperType =
WT_RESOURCE_REQUEST_HANDLER;