#include "libcef_dll/cpptoc/request_context_handler_cpptoc.h"
#include "libcef_dll/cpptoc/resource_request_handler_cpptoc.h"
#include "libcef_dll/ctocpp/browser_ctocpp.h"
#include "libcef_dll/ctocpp/frame_ctocpp.h"
#include "libcef_dll/ctocpp/request_context_ctocpp.h"
#include "libcef_dll/ctocpp/request_ctocpp.h"
namespace {
void CEF_CALLBACK request_context_handler_on_request_context_initialized(
struct _cef_request_context_handler_t* self,
cef_request_context_t* request_context) {
DCHECK(self);
if (!self)
return;
DCHECK(request_context);
if (!request_context)
return;
CefRequestContextHandlerCppToC::Get(self)->OnRequestContextInitialized(
CefRequestContextCToCpp::Wrap(request_context));
}
struct _cef_resource_request_handler_t* CEF_CALLBACK
request_context_handler_get_resource_request_handler(
struct _cef_request_context_handler_t* self,
cef_browser_t* browser,
cef_frame_t* frame,
cef_request_t* request,
int is_navigation,
int is_download,
const cef_string_t* request_initiator,
int* disable_default_handling) {
DCHECK(self);
if (!self)
return NULL;
DCHECK(request);
if (!request)
return NULL;
DCHECK(disable_default_handling);
if (!disable_default_handling)
return NULL;
bool disable_default_handlingBool =
(disable_default_handling && *disable_default_handling) ? true : false;
CefRefPtr<CefResourceRequestHandler> _retval =
CefRequestContextHandlerCppToC::Get(self)->GetResourceRequestHandler(
CefBrowserCToCpp::Wrap(browser), CefFrameCToCpp::Wrap(frame),
CefRequestCToCpp::Wrap(request), is_navigation ? true : false,
is_download ? true : false, CefString(request_initiator),
disable_default_handlingBool);
if (disable_default_handling)
*disable_default_handling = disable_default_handlingBool ? true : false;
return CefResourceRequestHandlerCppToC::Wrap(_retval);
}
}
CefRequestContextHandlerCppToC::CefRequestContextHandlerCppToC() {
GetStruct()->on_request_context_initialized =
request_context_handler_on_request_context_initialized;
GetStruct()->get_resource_request_handler =
request_context_handler_get_resource_request_handler;
}
CefRequestContextHandlerCppToC::~CefRequestContextHandlerCppToC() {}
template <>
CefRefPtr<CefRequestContextHandler> CefCppToCRefCounted<
CefRequestContextHandlerCppToC,
CefRequestContextHandler,
cef_request_context_handler_t>::UnwrapDerived(CefWrapperType type,
cef_request_context_handler_t*
s) {
NOTREACHED() << "Unexpected class type: " << type;
return nullptr;
}
template <>
CefWrapperType
CefCppToCRefCounted<CefRequestContextHandlerCppToC,
CefRequestContextHandler,
cef_request_context_handler_t>::kWrapperType =
WT_REQUEST_CONTEXT_HANDLER;