#include "libcef_dll/cpptoc/media_sink_cpptoc.h"
#include "libcef_dll/cpptoc/media_source_cpptoc.h"
#include "libcef_dll/ctocpp/media_sink_device_info_callback_ctocpp.h"
#include "libcef_dll/shutdown_checker.h"
namespace {
cef_string_userfree_t CEF_CALLBACK
media_sink_get_id(struct _cef_media_sink_t* self) {
shutdown_checker::AssertNotShutdown();
DCHECK(self);
if (!self)
return NULL;
CefString _retval = CefMediaSinkCppToC::Get(self)->GetId();
return _retval.DetachToUserFree();
}
cef_string_userfree_t CEF_CALLBACK
media_sink_get_name(struct _cef_media_sink_t* self) {
shutdown_checker::AssertNotShutdown();
DCHECK(self);
if (!self)
return NULL;
CefString _retval = CefMediaSinkCppToC::Get(self)->GetName();
return _retval.DetachToUserFree();
}
cef_string_userfree_t CEF_CALLBACK
media_sink_get_description(struct _cef_media_sink_t* self) {
shutdown_checker::AssertNotShutdown();
DCHECK(self);
if (!self)
return NULL;
CefString _retval = CefMediaSinkCppToC::Get(self)->GetDescription();
return _retval.DetachToUserFree();
}
cef_media_sink_icon_type_t CEF_CALLBACK
media_sink_get_icon_type(struct _cef_media_sink_t* self) {
shutdown_checker::AssertNotShutdown();
DCHECK(self);
if (!self)
return CEF_MSIT_GENERIC;
cef_media_sink_icon_type_t _retval =
CefMediaSinkCppToC::Get(self)->GetIconType();
return _retval;
}
void CEF_CALLBACK media_sink_get_device_info(
struct _cef_media_sink_t* self,
struct _cef_media_sink_device_info_callback_t* callback) {
shutdown_checker::AssertNotShutdown();
DCHECK(self);
if (!self)
return;
DCHECK(callback);
if (!callback)
return;
CefMediaSinkCppToC::Get(self)->GetDeviceInfo(
CefMediaSinkDeviceInfoCallbackCToCpp::Wrap(callback));
}
int CEF_CALLBACK media_sink_is_cast_sink(struct _cef_media_sink_t* self) {
shutdown_checker::AssertNotShutdown();
DCHECK(self);
if (!self)
return 0;
bool _retval = CefMediaSinkCppToC::Get(self)->IsCastSink();
return _retval;
}
int CEF_CALLBACK media_sink_is_dial_sink(struct _cef_media_sink_t* self) {
shutdown_checker::AssertNotShutdown();
DCHECK(self);
if (!self)
return 0;
bool _retval = CefMediaSinkCppToC::Get(self)->IsDialSink();
return _retval;
}
int CEF_CALLBACK
media_sink_is_compatible_with(struct _cef_media_sink_t* self,
struct _cef_media_source_t* source) {
shutdown_checker::AssertNotShutdown();
DCHECK(self);
if (!self)
return 0;
DCHECK(source);
if (!source)
return 0;
bool _retval = CefMediaSinkCppToC::Get(self)->IsCompatibleWith(
CefMediaSourceCppToC::Unwrap(source));
return _retval;
}
}
CefMediaSinkCppToC::CefMediaSinkCppToC() {
GetStruct()->get_id = media_sink_get_id;
GetStruct()->get_name = media_sink_get_name;
GetStruct()->get_description = media_sink_get_description;
GetStruct()->get_icon_type = media_sink_get_icon_type;
GetStruct()->get_device_info = media_sink_get_device_info;
GetStruct()->is_cast_sink = media_sink_is_cast_sink;
GetStruct()->is_dial_sink = media_sink_is_dial_sink;
GetStruct()->is_compatible_with = media_sink_is_compatible_with;
}
CefMediaSinkCppToC::~CefMediaSinkCppToC() {
shutdown_checker::AssertNotShutdown();
}
template <>
CefRefPtr<CefMediaSink>
CefCppToCRefCounted<CefMediaSinkCppToC, CefMediaSink, cef_media_sink_t>::
UnwrapDerived(CefWrapperType type, cef_media_sink_t* s) {
NOTREACHED() << "Unexpected class type: " << type;
return nullptr;
}
template <>
CefWrapperType CefCppToCRefCounted<CefMediaSinkCppToC,
CefMediaSink,
cef_media_sink_t>::kWrapperType =
WT_MEDIA_SINK;