#include "libcef_dll/cpptoc/x509cert_principal_cpptoc.h"
#include "libcef_dll/shutdown_checker.h"
#include "libcef_dll/transfer_util.h"
namespace {
cef_string_userfree_t CEF_CALLBACK
x509cert_principal_get_display_name(struct _cef_x509cert_principal_t* self) {
shutdown_checker::AssertNotShutdown();
DCHECK(self);
if (!self)
return NULL;
CefString _retval = CefX509CertPrincipalCppToC::Get(self)->GetDisplayName();
return _retval.DetachToUserFree();
}
cef_string_userfree_t CEF_CALLBACK
x509cert_principal_get_common_name(struct _cef_x509cert_principal_t* self) {
shutdown_checker::AssertNotShutdown();
DCHECK(self);
if (!self)
return NULL;
CefString _retval = CefX509CertPrincipalCppToC::Get(self)->GetCommonName();
return _retval.DetachToUserFree();
}
cef_string_userfree_t CEF_CALLBACK
x509cert_principal_get_locality_name(struct _cef_x509cert_principal_t* self) {
shutdown_checker::AssertNotShutdown();
DCHECK(self);
if (!self)
return NULL;
CefString _retval = CefX509CertPrincipalCppToC::Get(self)->GetLocalityName();
return _retval.DetachToUserFree();
}
cef_string_userfree_t CEF_CALLBACK
x509cert_principal_get_state_or_province_name(
struct _cef_x509cert_principal_t* self) {
shutdown_checker::AssertNotShutdown();
DCHECK(self);
if (!self)
return NULL;
CefString _retval =
CefX509CertPrincipalCppToC::Get(self)->GetStateOrProvinceName();
return _retval.DetachToUserFree();
}
cef_string_userfree_t CEF_CALLBACK
x509cert_principal_get_country_name(struct _cef_x509cert_principal_t* self) {
shutdown_checker::AssertNotShutdown();
DCHECK(self);
if (!self)
return NULL;
CefString _retval = CefX509CertPrincipalCppToC::Get(self)->GetCountryName();
return _retval.DetachToUserFree();
}
void CEF_CALLBACK
x509cert_principal_get_street_addresses(struct _cef_x509cert_principal_t* self,
cef_string_list_t addresses) {
shutdown_checker::AssertNotShutdown();
DCHECK(self);
if (!self)
return;
DCHECK(addresses);
if (!addresses)
return;
std::vector<CefString> addressesList;
transfer_string_list_contents(addresses, addressesList);
CefX509CertPrincipalCppToC::Get(self)->GetStreetAddresses(addressesList);
cef_string_list_clear(addresses);
transfer_string_list_contents(addressesList, addresses);
}
void CEF_CALLBACK x509cert_principal_get_organization_names(
struct _cef_x509cert_principal_t* self,
cef_string_list_t names) {
shutdown_checker::AssertNotShutdown();
DCHECK(self);
if (!self)
return;
DCHECK(names);
if (!names)
return;
std::vector<CefString> namesList;
transfer_string_list_contents(names, namesList);
CefX509CertPrincipalCppToC::Get(self)->GetOrganizationNames(namesList);
cef_string_list_clear(names);
transfer_string_list_contents(namesList, names);
}
void CEF_CALLBACK x509cert_principal_get_organization_unit_names(
struct _cef_x509cert_principal_t* self,
cef_string_list_t names) {
shutdown_checker::AssertNotShutdown();
DCHECK(self);
if (!self)
return;
DCHECK(names);
if (!names)
return;
std::vector<CefString> namesList;
transfer_string_list_contents(names, namesList);
CefX509CertPrincipalCppToC::Get(self)->GetOrganizationUnitNames(namesList);
cef_string_list_clear(names);
transfer_string_list_contents(namesList, names);
}
void CEF_CALLBACK
x509cert_principal_get_domain_components(struct _cef_x509cert_principal_t* self,
cef_string_list_t components) {
shutdown_checker::AssertNotShutdown();
DCHECK(self);
if (!self)
return;
DCHECK(components);
if (!components)
return;
std::vector<CefString> componentsList;
transfer_string_list_contents(components, componentsList);
CefX509CertPrincipalCppToC::Get(self)->GetDomainComponents(componentsList);
cef_string_list_clear(components);
transfer_string_list_contents(componentsList, components);
}
}
CefX509CertPrincipalCppToC::CefX509CertPrincipalCppToC() {
GetStruct()->get_display_name = x509cert_principal_get_display_name;
GetStruct()->get_common_name = x509cert_principal_get_common_name;
GetStruct()->get_locality_name = x509cert_principal_get_locality_name;
GetStruct()->get_state_or_province_name =
x509cert_principal_get_state_or_province_name;
GetStruct()->get_country_name = x509cert_principal_get_country_name;
GetStruct()->get_street_addresses = x509cert_principal_get_street_addresses;
GetStruct()->get_organization_names =
x509cert_principal_get_organization_names;
GetStruct()->get_organization_unit_names =
x509cert_principal_get_organization_unit_names;
GetStruct()->get_domain_components = x509cert_principal_get_domain_components;
}
CefX509CertPrincipalCppToC::~CefX509CertPrincipalCppToC() {
shutdown_checker::AssertNotShutdown();
}
template <>
CefRefPtr<CefX509CertPrincipal> CefCppToCRefCounted<
CefX509CertPrincipalCppToC,
CefX509CertPrincipal,
cef_x509cert_principal_t>::UnwrapDerived(CefWrapperType type,
cef_x509cert_principal_t* s) {
NOTREACHED() << "Unexpected class type: " << type;
return nullptr;
}
template <>
CefWrapperType CefCppToCRefCounted<CefX509CertPrincipalCppToC,
CefX509CertPrincipal,
cef_x509cert_principal_t>::kWrapperType =
WT_X509CERT_PRINCIPAL;