#include "include/capi/cef_app_capi.h"
#include "include/capi/cef_crash_util_capi.h"
#include "include/capi/cef_file_util_capi.h"
#include "include/capi/cef_i18n_util_capi.h"
#include "include/capi/cef_origin_whitelist_capi.h"
#include "include/capi/cef_parser_capi.h"
#include "include/capi/cef_path_util_capi.h"
#include "include/capi/cef_process_util_capi.h"
#include "include/capi/cef_scheme_capi.h"
#include "include/capi/cef_ssl_info_capi.h"
#include "include/capi/cef_task_capi.h"
#include "include/capi/cef_trace_capi.h"
#include "include/capi/cef_v8_capi.h"
#include "include/capi/cef_web_plugin_capi.h"
#include "include/capi/test/cef_test_helpers_capi.h"
#include "include/cef_api_hash.h"
#include "include/cef_app.h"
#include "include/cef_crash_util.h"
#include "include/cef_file_util.h"
#include "include/cef_i18n_util.h"
#include "include/cef_origin_whitelist.h"
#include "include/cef_parser.h"
#include "include/cef_path_util.h"
#include "include/cef_process_util.h"
#include "include/cef_scheme.h"
#include "include/cef_ssl_info.h"
#include "include/cef_task.h"
#include "include/cef_trace.h"
#include "include/cef_v8.h"
#include "include/cef_web_plugin.h"
#include "include/test/cef_test_helpers.h"
#include "libcef_dll/cpptoc/app_cpptoc.h"
#include "libcef_dll/cpptoc/completion_callback_cpptoc.h"
#include "libcef_dll/cpptoc/end_tracing_callback_cpptoc.h"
#include "libcef_dll/cpptoc/scheme_handler_factory_cpptoc.h"
#include "libcef_dll/cpptoc/task_cpptoc.h"
#include "libcef_dll/cpptoc/v8handler_cpptoc.h"
#include "libcef_dll/cpptoc/web_plugin_info_visitor_cpptoc.h"
#include "libcef_dll/cpptoc/web_plugin_unstable_callback_cpptoc.h"
#include "libcef_dll/ctocpp/binary_value_ctocpp.h"
#include "libcef_dll/ctocpp/command_line_ctocpp.h"
#include "libcef_dll/ctocpp/frame_ctocpp.h"
#include "libcef_dll/ctocpp/value_ctocpp.h"
#include "libcef_dll/shutdown_checker.h"
#include "libcef_dll/transfer_util.h"
#define CEF_GLOBAL
NO_SANITIZE("cfi-icall")
CEF_GLOBAL int CefExecuteProcess(const CefMainArgs& args,
CefRefPtr<CefApp> application,
void* windows_sandbox_info) {
const char* api_hash = cef_api_hash(0);
if (strcmp(api_hash, CEF_API_HASH_PLATFORM)) {
NOTREACHED();
return 0;
}
int _retval = cef_execute_process(&args, CefAppCppToC::Wrap(application),
windows_sandbox_info);
return _retval;
}
NO_SANITIZE("cfi-icall")
CEF_GLOBAL bool CefInitialize(const CefMainArgs& args,
const CefSettings& settings,
CefRefPtr<CefApp> application,
void* windows_sandbox_info) {
const char* api_hash = cef_api_hash(0);
if (strcmp(api_hash, CEF_API_HASH_PLATFORM)) {
NOTREACHED();
return false;
}
int _retval = cef_initialize(
&args, &settings, CefAppCppToC::Wrap(application), windows_sandbox_info);
return _retval ? true : false;
}
NO_SANITIZE("cfi-icall") CEF_GLOBAL void CefShutdown() {
#if DCHECK_IS_ON()
shutdown_checker::SetIsShutdown();
#endif
cef_shutdown();
}
NO_SANITIZE("cfi-icall") CEF_GLOBAL void CefDoMessageLoopWork() {
cef_do_message_loop_work();
}
NO_SANITIZE("cfi-icall") CEF_GLOBAL void CefRunMessageLoop() {
cef_run_message_loop();
}
NO_SANITIZE("cfi-icall") CEF_GLOBAL void CefQuitMessageLoop() {
cef_quit_message_loop();
}
NO_SANITIZE("cfi-icall") CEF_GLOBAL void CefSetOSModalLoop(bool osModalLoop) {
cef_set_osmodal_loop(osModalLoop);
}
NO_SANITIZE("cfi-icall") CEF_GLOBAL void CefEnableHighDPISupport() {
cef_enable_highdpi_support();
}
NO_SANITIZE("cfi-icall") CEF_GLOBAL bool CefCrashReportingEnabled() {
int _retval = cef_crash_reporting_enabled();
return _retval ? true : false;
}
NO_SANITIZE("cfi-icall")
CEF_GLOBAL
void CefSetCrashKeyValue(const CefString& key, const CefString& value) {
DCHECK(!key.empty());
if (key.empty())
return;
cef_set_crash_key_value(key.GetStruct(), value.GetStruct());
}
NO_SANITIZE("cfi-icall")
CEF_GLOBAL bool CefCreateDirectory(const CefString& full_path) {
DCHECK(!full_path.empty());
if (full_path.empty())
return false;
int _retval = cef_create_directory(full_path.GetStruct());
return _retval ? true : false;
}
NO_SANITIZE("cfi-icall")
CEF_GLOBAL bool CefGetTempDirectory(CefString& temp_dir) {
int _retval = cef_get_temp_directory(temp_dir.GetWritableStruct());
return _retval ? true : false;
}
NO_SANITIZE("cfi-icall")
CEF_GLOBAL bool CefCreateNewTempDirectory(const CefString& prefix,
CefString& new_temp_path) {
int _retval = cef_create_new_temp_directory(
prefix.GetStruct(), new_temp_path.GetWritableStruct());
return _retval ? true : false;
}
NO_SANITIZE("cfi-icall")
CEF_GLOBAL bool CefCreateTempDirectoryInDirectory(const CefString& base_dir,
const CefString& prefix,
CefString& new_dir) {
DCHECK(!base_dir.empty());
if (base_dir.empty())
return false;
int _retval = cef_create_temp_directory_in_directory(
base_dir.GetStruct(), prefix.GetStruct(), new_dir.GetWritableStruct());
return _retval ? true : false;
}
NO_SANITIZE("cfi-icall")
CEF_GLOBAL bool CefDirectoryExists(const CefString& path) {
DCHECK(!path.empty());
if (path.empty())
return false;
int _retval = cef_directory_exists(path.GetStruct());
return _retval ? true : false;
}
NO_SANITIZE("cfi-icall")
CEF_GLOBAL bool CefDeleteFile(const CefString& path, bool recursive) {
DCHECK(!path.empty());
if (path.empty())
return false;
int _retval = cef_delete_file(path.GetStruct(), recursive);
return _retval ? true : false;
}
NO_SANITIZE("cfi-icall")
CEF_GLOBAL bool CefZipDirectory(const CefString& src_dir,
const CefString& dest_file,
bool include_hidden_files) {
DCHECK(!src_dir.empty());
if (src_dir.empty())
return false;
DCHECK(!dest_file.empty());
if (dest_file.empty())
return false;
int _retval = cef_zip_directory(src_dir.GetStruct(), dest_file.GetStruct(),
include_hidden_files);
return _retval ? true : false;
}
NO_SANITIZE("cfi-icall")
CEF_GLOBAL void CefLoadCRLSetsFile(const CefString& path) {
DCHECK(!path.empty());
if (path.empty())
return;
cef_load_crlsets_file(path.GetStruct());
}
NO_SANITIZE("cfi-icall") CEF_GLOBAL bool CefIsRTL() {
int _retval = cef_is_rtl();
return _retval ? true : false;
}
NO_SANITIZE("cfi-icall")
CEF_GLOBAL
bool CefAddCrossOriginWhitelistEntry(const CefString& source_origin,
const CefString& target_protocol,
const CefString& target_domain,
bool allow_target_subdomains) {
DCHECK(!source_origin.empty());
if (source_origin.empty())
return false;
DCHECK(!target_protocol.empty());
if (target_protocol.empty())
return false;
int _retval = cef_add_cross_origin_whitelist_entry(
source_origin.GetStruct(), target_protocol.GetStruct(),
target_domain.GetStruct(), allow_target_subdomains);
return _retval ? true : false;
}
NO_SANITIZE("cfi-icall")
CEF_GLOBAL
bool CefRemoveCrossOriginWhitelistEntry(const CefString& source_origin,
const CefString& target_protocol,
const CefString& target_domain,
bool allow_target_subdomains) {
DCHECK(!source_origin.empty());
if (source_origin.empty())
return false;
DCHECK(!target_protocol.empty());
if (target_protocol.empty())
return false;
int _retval = cef_remove_cross_origin_whitelist_entry(
source_origin.GetStruct(), target_protocol.GetStruct(),
target_domain.GetStruct(), allow_target_subdomains);
return _retval ? true : false;
}
NO_SANITIZE("cfi-icall") CEF_GLOBAL bool CefClearCrossOriginWhitelist() {
int _retval = cef_clear_cross_origin_whitelist();
return _retval ? true : false;
}
NO_SANITIZE("cfi-icall")
CEF_GLOBAL bool CefParseURL(const CefString& url, CefURLParts& parts) {
DCHECK(!url.empty());
if (url.empty())
return false;
int _retval = cef_parse_url(url.GetStruct(), &parts);
return _retval ? true : false;
}
NO_SANITIZE("cfi-icall")
CEF_GLOBAL bool CefCreateURL(const CefURLParts& parts, CefString& url) {
int _retval = cef_create_url(&parts, url.GetWritableStruct());
return _retval ? true : false;
}
NO_SANITIZE("cfi-icall")
CEF_GLOBAL CefString
CefFormatUrlForSecurityDisplay(const CefString& origin_url) {
DCHECK(!origin_url.empty());
if (origin_url.empty())
return CefString();
cef_string_userfree_t _retval =
cef_format_url_for_security_display(origin_url.GetStruct());
CefString _retvalStr;
_retvalStr.AttachToUserFree(_retval);
return _retvalStr;
}
NO_SANITIZE("cfi-icall")
CEF_GLOBAL CefString CefGetMimeType(const CefString& extension) {
DCHECK(!extension.empty());
if (extension.empty())
return CefString();
cef_string_userfree_t _retval = cef_get_mime_type(extension.GetStruct());
CefString _retvalStr;
_retvalStr.AttachToUserFree(_retval);
return _retvalStr;
}
NO_SANITIZE("cfi-icall")
CEF_GLOBAL
void CefGetExtensionsForMimeType(const CefString& mime_type,
std::vector<CefString>& extensions) {
DCHECK(!mime_type.empty());
if (mime_type.empty())
return;
cef_string_list_t extensionsList = cef_string_list_alloc();
DCHECK(extensionsList);
if (extensionsList)
transfer_string_list_contents(extensions, extensionsList);
cef_get_extensions_for_mime_type(mime_type.GetStruct(), extensionsList);
if (extensionsList) {
extensions.clear();
transfer_string_list_contents(extensionsList, extensions);
cef_string_list_free(extensionsList);
}
}
NO_SANITIZE("cfi-icall")
CEF_GLOBAL CefString CefBase64Encode(const void* data, size_t data_size) {
DCHECK(data);
if (!data)
return CefString();
cef_string_userfree_t _retval = cef_base64encode(data, data_size);
CefString _retvalStr;
_retvalStr.AttachToUserFree(_retval);
return _retvalStr;
}
NO_SANITIZE("cfi-icall")
CEF_GLOBAL CefRefPtr<CefBinaryValue> CefBase64Decode(const CefString& data) {
DCHECK(!data.empty());
if (data.empty())
return nullptr;
cef_binary_value_t* _retval = cef_base64decode(data.GetStruct());
return CefBinaryValueCToCpp::Wrap(_retval);
}
NO_SANITIZE("cfi-icall")
CEF_GLOBAL CefString CefURIEncode(const CefString& text, bool use_plus) {
DCHECK(!text.empty());
if (text.empty())
return CefString();
cef_string_userfree_t _retval = cef_uriencode(text.GetStruct(), use_plus);
CefString _retvalStr;
_retvalStr.AttachToUserFree(_retval);
return _retvalStr;
}
NO_SANITIZE("cfi-icall")
CEF_GLOBAL CefString CefURIDecode(const CefString& text,
bool convert_to_utf8,
cef_uri_unescape_rule_t unescape_rule) {
DCHECK(!text.empty());
if (text.empty())
return CefString();
cef_string_userfree_t _retval =
cef_uridecode(text.GetStruct(), convert_to_utf8, unescape_rule);
CefString _retvalStr;
_retvalStr.AttachToUserFree(_retval);
return _retvalStr;
}
NO_SANITIZE("cfi-icall")
CEF_GLOBAL CefRefPtr<CefValue> CefParseJSON(const CefString& json_string,
cef_json_parser_options_t options) {
DCHECK(!json_string.empty());
if (json_string.empty())
return nullptr;
cef_value_t* _retval = cef_parse_json(json_string.GetStruct(), options);
return CefValueCToCpp::Wrap(_retval);
}
NO_SANITIZE("cfi-icall")
CEF_GLOBAL CefRefPtr<CefValue> CefParseJSON(const void* json,
size_t json_size,
cef_json_parser_options_t options) {
DCHECK(json);
if (!json)
return nullptr;
cef_value_t* _retval = cef_parse_json_buffer(json, json_size, options);
return CefValueCToCpp::Wrap(_retval);
}
NO_SANITIZE("cfi-icall")
CEF_GLOBAL CefRefPtr<CefValue> CefParseJSONAndReturnError(
const CefString& json_string,
cef_json_parser_options_t options,
CefString& error_msg_out) {
DCHECK(!json_string.empty());
if (json_string.empty())
return nullptr;
cef_value_t* _retval = cef_parse_jsonand_return_error(
json_string.GetStruct(), options, error_msg_out.GetWritableStruct());
return CefValueCToCpp::Wrap(_retval);
}
NO_SANITIZE("cfi-icall")
CEF_GLOBAL CefString CefWriteJSON(CefRefPtr<CefValue> node,
cef_json_writer_options_t options) {
DCHECK(node.get());
if (!node.get())
return CefString();
cef_string_userfree_t _retval =
cef_write_json(CefValueCToCpp::Unwrap(node), options);
CefString _retvalStr;
_retvalStr.AttachToUserFree(_retval);
return _retvalStr;
}
NO_SANITIZE("cfi-icall")
CEF_GLOBAL bool CefGetPath(PathKey key, CefString& path) {
int _retval = cef_get_path(key, path.GetWritableStruct());
return _retval ? true : false;
}
NO_SANITIZE("cfi-icall")
CEF_GLOBAL bool CefLaunchProcess(CefRefPtr<CefCommandLine> command_line) {
DCHECK(command_line.get());
if (!command_line.get())
return false;
int _retval = cef_launch_process(CefCommandLineCToCpp::Unwrap(command_line));
return _retval ? true : false;
}
NO_SANITIZE("cfi-icall")
CEF_GLOBAL bool CefRegisterSchemeHandlerFactory(
const CefString& scheme_name,
const CefString& domain_name,
CefRefPtr<CefSchemeHandlerFactory> factory) {
DCHECK(!scheme_name.empty());
if (scheme_name.empty())
return false;
int _retval = cef_register_scheme_handler_factory(
scheme_name.GetStruct(), domain_name.GetStruct(),
CefSchemeHandlerFactoryCppToC::Wrap(factory));
return _retval ? true : false;
}
NO_SANITIZE("cfi-icall") CEF_GLOBAL bool CefClearSchemeHandlerFactories() {
int _retval = cef_clear_scheme_handler_factories();
return _retval ? true : false;
}
NO_SANITIZE("cfi-icall")
CEF_GLOBAL bool CefIsCertStatusError(cef_cert_status_t status) {
int _retval = cef_is_cert_status_error(status);
return _retval ? true : false;
}
NO_SANITIZE("cfi-icall") CEF_GLOBAL bool CefCurrentlyOn(CefThreadId threadId) {
int _retval = cef_currently_on(threadId);
return _retval ? true : false;
}
NO_SANITIZE("cfi-icall")
CEF_GLOBAL bool CefPostTask(CefThreadId threadId, CefRefPtr<CefTask> task) {
DCHECK(task.get());
if (!task.get())
return false;
int _retval = cef_post_task(threadId, CefTaskCppToC::Wrap(task));
return _retval ? true : false;
}
NO_SANITIZE("cfi-icall")
CEF_GLOBAL bool CefPostDelayedTask(CefThreadId threadId,
CefRefPtr<CefTask> task,
int64 delay_ms) {
DCHECK(task.get());
if (!task.get())
return false;
int _retval =
cef_post_delayed_task(threadId, CefTaskCppToC::Wrap(task), delay_ms);
return _retval ? true : false;
}
NO_SANITIZE("cfi-icall")
CEF_GLOBAL bool CefBeginTracing(const CefString& categories,
CefRefPtr<CefCompletionCallback> callback) {
int _retval = cef_begin_tracing(categories.GetStruct(),
CefCompletionCallbackCppToC::Wrap(callback));
return _retval ? true : false;
}
NO_SANITIZE("cfi-icall")
CEF_GLOBAL bool CefEndTracing(const CefString& tracing_file,
CefRefPtr<CefEndTracingCallback> callback) {
int _retval = cef_end_tracing(tracing_file.GetStruct(),
CefEndTracingCallbackCppToC::Wrap(callback));
return _retval ? true : false;
}
NO_SANITIZE("cfi-icall") CEF_GLOBAL int64 CefNowFromSystemTraceTime() {
int64 _retval = cef_now_from_system_trace_time();
return _retval;
}
NO_SANITIZE("cfi-icall")
CEF_GLOBAL bool CefRegisterExtension(const CefString& extension_name,
const CefString& javascript_code,
CefRefPtr<CefV8Handler> handler) {
DCHECK(!extension_name.empty());
if (extension_name.empty())
return false;
DCHECK(!javascript_code.empty());
if (javascript_code.empty())
return false;
int _retval = cef_register_extension(extension_name.GetStruct(),
javascript_code.GetStruct(),
CefV8HandlerCppToC::Wrap(handler));
return _retval ? true : false;
}
NO_SANITIZE("cfi-icall")
CEF_GLOBAL
void CefVisitWebPluginInfo(CefRefPtr<CefWebPluginInfoVisitor> visitor) {
DCHECK(visitor.get());
if (!visitor.get())
return;
cef_visit_web_plugin_info(CefWebPluginInfoVisitorCppToC::Wrap(visitor));
}
NO_SANITIZE("cfi-icall") CEF_GLOBAL void CefRefreshWebPlugins() {
cef_refresh_web_plugins();
}
NO_SANITIZE("cfi-icall")
CEF_GLOBAL void CefUnregisterInternalWebPlugin(const CefString& path) {
DCHECK(!path.empty());
if (path.empty())
return;
cef_unregister_internal_web_plugin(path.GetStruct());
}
NO_SANITIZE("cfi-icall")
CEF_GLOBAL void CefRegisterWebPluginCrash(const CefString& path) {
DCHECK(!path.empty());
if (path.empty())
return;
cef_register_web_plugin_crash(path.GetStruct());
}
NO_SANITIZE("cfi-icall")
CEF_GLOBAL void CefIsWebPluginUnstable(
const CefString& path,
CefRefPtr<CefWebPluginUnstableCallback> callback) {
DCHECK(!path.empty());
if (path.empty())
return;
DCHECK(callback.get());
if (!callback.get())
return;
cef_is_web_plugin_unstable(
path.GetStruct(), CefWebPluginUnstableCallbackCppToC::Wrap(callback));
}
NO_SANITIZE("cfi-icall")
CEF_GLOBAL void CefExecuteJavaScriptWithUserGestureForTests(
CefRefPtr<CefFrame> frame,
const CefString& javascript) {
DCHECK(frame.get());
if (!frame.get())
return;
cef_execute_java_script_with_user_gesture_for_tests(
CefFrameCToCpp::Unwrap(frame), javascript.GetStruct());
}