mirror of
https://bitbucket.org/chromiumembedded/cef
synced 2025-02-09 00:28:59 +01:00
Add CefMediaSink::GetIconType (see issue #2900)
This attribute is useful for identifying different classes of cast devices without first requiring a connection (CAST, CAST_AUDIO, CAST_AUDIO_GROUP, etc).
This commit is contained in:
parent
dafce45e49
commit
ff0c36b465
@ -33,7 +33,7 @@
|
|||||||
// by hand. See the translator.README.txt file in the tools directory for
|
// by hand. See the translator.README.txt file in the tools directory for
|
||||||
// more information.
|
// more information.
|
||||||
//
|
//
|
||||||
// $hash=a7070419332ec8f6d6e4df898c8eb666b988970a$
|
// $hash=aa1310919932145744d5347d449d6ee10a3a0813$
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifndef CEF_INCLUDE_CAPI_CEF_MEDIA_ROUTER_CAPI_H_
|
#ifndef CEF_INCLUDE_CAPI_CEF_MEDIA_ROUTER_CAPI_H_
|
||||||
@ -264,6 +264,12 @@ typedef struct _cef_media_sink_t {
|
|||||||
cef_string_userfree_t(CEF_CALLBACK* get_description)(
|
cef_string_userfree_t(CEF_CALLBACK* get_description)(
|
||||||
struct _cef_media_sink_t* self);
|
struct _cef_media_sink_t* self);
|
||||||
|
|
||||||
|
///
|
||||||
|
// Returns the icon type for this sink.
|
||||||
|
///
|
||||||
|
cef_media_sink_icon_type_t(CEF_CALLBACK* get_icon_type)(
|
||||||
|
struct _cef_media_sink_t* self);
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns true (1) if this sink accepts content via Cast.
|
// Returns true (1) if this sink accepts content via Cast.
|
||||||
///
|
///
|
||||||
|
@ -34,7 +34,7 @@
|
|||||||
// implementations. See the translator.README.txt file in the tools directory
|
// implementations. See the translator.README.txt file in the tools directory
|
||||||
// for more information.
|
// for more information.
|
||||||
//
|
//
|
||||||
// $hash=af15b08731cc133c3974ceb18002b146a53b9c9e$
|
// $hash=fd013f5bdcf2333b1f0fb452442d300dffe598e5$
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifndef CEF_INCLUDE_API_HASH_H_
|
#ifndef CEF_INCLUDE_API_HASH_H_
|
||||||
@ -47,13 +47,13 @@
|
|||||||
// way that may cause binary incompatibility with other builds. The universal
|
// way that may cause binary incompatibility with other builds. The universal
|
||||||
// hash value will change if any platform is affected whereas the platform hash
|
// hash value will change if any platform is affected whereas the platform hash
|
||||||
// values will change only if that particular platform is affected.
|
// values will change only if that particular platform is affected.
|
||||||
#define CEF_API_HASH_UNIVERSAL "f76dc8c40e454ef26318d0f83312dadaf909e4c5"
|
#define CEF_API_HASH_UNIVERSAL "c80d4c5f1dc72279ac7a44d7b174fb80cf728abc"
|
||||||
#if defined(OS_WIN)
|
#if defined(OS_WIN)
|
||||||
#define CEF_API_HASH_PLATFORM "831ef33853bb8575bcd097ba65851d4d98a08db8"
|
#define CEF_API_HASH_PLATFORM "bde71fdc88914ed7353ee7308d060cd6b4f8c8af"
|
||||||
#elif defined(OS_MACOSX)
|
#elif defined(OS_MACOSX)
|
||||||
#define CEF_API_HASH_PLATFORM "0944363458590a23d84e99eb1b81372be6784b97"
|
#define CEF_API_HASH_PLATFORM "2fb3e42a6d2e594aa55792b5852d7f57524ab011"
|
||||||
#elif defined(OS_LINUX)
|
#elif defined(OS_LINUX)
|
||||||
#define CEF_API_HASH_PLATFORM "dfd012193a93782cd4b041f4cd71e1e8f2ca401e"
|
#define CEF_API_HASH_PLATFORM "222824f83536a111c6480dba64833251c01cd6fd"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
@ -221,6 +221,8 @@ class CefMediaRouteCreateCallback : public virtual CefBaseRefCounted {
|
|||||||
/*--cef(source=library)--*/
|
/*--cef(source=library)--*/
|
||||||
class CefMediaSink : public virtual CefBaseRefCounted {
|
class CefMediaSink : public virtual CefBaseRefCounted {
|
||||||
public:
|
public:
|
||||||
|
typedef cef_media_sink_icon_type_t IconType;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns the ID for this sink.
|
// Returns the ID for this sink.
|
||||||
///
|
///
|
||||||
@ -245,6 +247,12 @@ class CefMediaSink : public virtual CefBaseRefCounted {
|
|||||||
/*--cef()--*/
|
/*--cef()--*/
|
||||||
virtual CefString GetDescription() = 0;
|
virtual CefString GetDescription() = 0;
|
||||||
|
|
||||||
|
///
|
||||||
|
// Returns the icon type for this sink.
|
||||||
|
///
|
||||||
|
/*--cef(default_retval=CEF_MSIT_GENERIC)--*/
|
||||||
|
virtual IconType GetIconType() = 0;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Returns true if this sink accepts content via Cast.
|
// Returns true if this sink accepts content via Cast.
|
||||||
///
|
///
|
||||||
|
@ -3004,9 +3004,8 @@ typedef struct _cef_composition_underline_t {
|
|||||||
} cef_composition_underline_t;
|
} cef_composition_underline_t;
|
||||||
|
|
||||||
///
|
///
|
||||||
// Result codes for CefMediaRouter::CreateRoute. These constants match
|
// Result codes for CefMediaRouter::CreateRoute. Should be kept in sync with
|
||||||
// their equivalents in Chromium's route_request_result.h and should not be
|
// Chromium's media_router::RouteRequestResult::ResultCode type.
|
||||||
// renumbered.
|
|
||||||
///
|
///
|
||||||
typedef enum {
|
typedef enum {
|
||||||
CEF_MRCR_UNKNOWN_ERROR = 0,
|
CEF_MRCR_UNKNOWN_ERROR = 0,
|
||||||
@ -3033,6 +3032,23 @@ typedef enum {
|
|||||||
CEF_MRCS_TERMINATED,
|
CEF_MRCS_TERMINATED,
|
||||||
} cef_media_route_connection_state_t;
|
} cef_media_route_connection_state_t;
|
||||||
|
|
||||||
|
///
|
||||||
|
// Icon types for a MediaSink object. Should be kept in sync with Chromium's
|
||||||
|
// media_router::SinkIconType type.
|
||||||
|
///
|
||||||
|
typedef enum {
|
||||||
|
CEF_MSIT_CAST,
|
||||||
|
CEF_MSIT_CAST_AUDIO_GROUP,
|
||||||
|
CEF_MSIT_CAST_AUDIO,
|
||||||
|
CEF_MSIT_MEETING,
|
||||||
|
CEF_MSIT_HANGOUT,
|
||||||
|
CEF_MSIT_EDUCATION,
|
||||||
|
CEF_MSIT_WIRED_DISPLAY,
|
||||||
|
CEF_MSIT_GENERIC,
|
||||||
|
|
||||||
|
CEF_MSIT_TOTAL_COUNT, // The total number of values.
|
||||||
|
} cef_media_sink_icon_type_t;
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -27,6 +27,15 @@ CefString CefMediaSinkImpl::GetDescription() {
|
|||||||
return sink_.description().value_or("");
|
return sink_.description().value_or("");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
CefMediaSink::IconType CefMediaSinkImpl::GetIconType() {
|
||||||
|
// Verify that our enum matches Chromium's values.
|
||||||
|
static_assert(static_cast<int>(CEF_MSIT_TOTAL_COUNT) ==
|
||||||
|
static_cast<int>(media_router::SinkIconType::TOTAL_COUNT),
|
||||||
|
"enum mismatch");
|
||||||
|
|
||||||
|
return static_cast<CefMediaSink::IconType>(sink_.icon_type());
|
||||||
|
}
|
||||||
|
|
||||||
bool CefMediaSinkImpl::IsCastSink() {
|
bool CefMediaSinkImpl::IsCastSink() {
|
||||||
return sink_.provider_id() == media_router::CAST;
|
return sink_.provider_id() == media_router::CAST;
|
||||||
}
|
}
|
||||||
|
@ -22,6 +22,7 @@ class CefMediaSinkImpl : public CefMediaSink {
|
|||||||
bool IsValid() override;
|
bool IsValid() override;
|
||||||
CefString GetName() override;
|
CefString GetName() override;
|
||||||
CefString GetDescription() override;
|
CefString GetDescription() override;
|
||||||
|
IconType GetIconType() override;
|
||||||
bool IsCastSink() override;
|
bool IsCastSink() override;
|
||||||
bool IsDialSink() override;
|
bool IsDialSink() override;
|
||||||
bool IsCompatibleWith(CefRefPtr<CefMediaSource> source) override;
|
bool IsCompatibleWith(CefRefPtr<CefMediaSource> source) override;
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
// implementations. See the translator.README.txt file in the tools directory
|
// implementations. See the translator.README.txt file in the tools directory
|
||||||
// for more information.
|
// for more information.
|
||||||
//
|
//
|
||||||
// $hash=cbbac244f39cc1d644b0db80a3f7234399286368$
|
// $hash=3a295e7d6703e2e8effd94da8e97d8b7f451dc32$
|
||||||
//
|
//
|
||||||
|
|
||||||
#include "libcef_dll/cpptoc/media_sink_cpptoc.h"
|
#include "libcef_dll/cpptoc/media_sink_cpptoc.h"
|
||||||
@ -87,6 +87,24 @@ media_sink_get_description(struct _cef_media_sink_t* self) {
|
|||||||
return _retval.DetachToUserFree();
|
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();
|
||||||
|
|
||||||
|
// AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
|
||||||
|
|
||||||
|
DCHECK(self);
|
||||||
|
if (!self)
|
||||||
|
return CEF_MSIT_GENERIC;
|
||||||
|
|
||||||
|
// Execute
|
||||||
|
cef_media_sink_icon_type_t _retval =
|
||||||
|
CefMediaSinkCppToC::Get(self)->GetIconType();
|
||||||
|
|
||||||
|
// Return type: simple
|
||||||
|
return _retval;
|
||||||
|
}
|
||||||
|
|
||||||
int CEF_CALLBACK media_sink_is_cast_sink(struct _cef_media_sink_t* self) {
|
int CEF_CALLBACK media_sink_is_cast_sink(struct _cef_media_sink_t* self) {
|
||||||
shutdown_checker::AssertNotShutdown();
|
shutdown_checker::AssertNotShutdown();
|
||||||
|
|
||||||
@ -151,6 +169,7 @@ CefMediaSinkCppToC::CefMediaSinkCppToC() {
|
|||||||
GetStruct()->is_valid = media_sink_is_valid;
|
GetStruct()->is_valid = media_sink_is_valid;
|
||||||
GetStruct()->get_name = media_sink_get_name;
|
GetStruct()->get_name = media_sink_get_name;
|
||||||
GetStruct()->get_description = media_sink_get_description;
|
GetStruct()->get_description = media_sink_get_description;
|
||||||
|
GetStruct()->get_icon_type = media_sink_get_icon_type;
|
||||||
GetStruct()->is_cast_sink = media_sink_is_cast_sink;
|
GetStruct()->is_cast_sink = media_sink_is_cast_sink;
|
||||||
GetStruct()->is_dial_sink = media_sink_is_dial_sink;
|
GetStruct()->is_dial_sink = media_sink_is_dial_sink;
|
||||||
GetStruct()->is_compatible_with = media_sink_is_compatible_with;
|
GetStruct()->is_compatible_with = media_sink_is_compatible_with;
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
// implementations. See the translator.README.txt file in the tools directory
|
// implementations. See the translator.README.txt file in the tools directory
|
||||||
// for more information.
|
// for more information.
|
||||||
//
|
//
|
||||||
// $hash=bb39ec5e546482b707c1e01a83fc1b064d96a4e6$
|
// $hash=63071af2d949b451ad0e7273ca0f5d7bfec425db$
|
||||||
//
|
//
|
||||||
|
|
||||||
#include "libcef_dll/ctocpp/media_sink_ctocpp.h"
|
#include "libcef_dll/ctocpp/media_sink_ctocpp.h"
|
||||||
@ -88,6 +88,23 @@ NO_SANITIZE("cfi-icall") CefString CefMediaSinkCToCpp::GetDescription() {
|
|||||||
return _retvalStr;
|
return _retvalStr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
NO_SANITIZE("cfi-icall")
|
||||||
|
CefMediaSink::IconType CefMediaSinkCToCpp::GetIconType() {
|
||||||
|
shutdown_checker::AssertNotShutdown();
|
||||||
|
|
||||||
|
cef_media_sink_t* _struct = GetStruct();
|
||||||
|
if (CEF_MEMBER_MISSING(_struct, get_icon_type))
|
||||||
|
return CEF_MSIT_GENERIC;
|
||||||
|
|
||||||
|
// AUTO-GENERATED CONTENT - DELETE THIS COMMENT BEFORE MODIFYING
|
||||||
|
|
||||||
|
// Execute
|
||||||
|
cef_media_sink_icon_type_t _retval = _struct->get_icon_type(_struct);
|
||||||
|
|
||||||
|
// Return type: simple
|
||||||
|
return _retval;
|
||||||
|
}
|
||||||
|
|
||||||
NO_SANITIZE("cfi-icall") bool CefMediaSinkCToCpp::IsCastSink() {
|
NO_SANITIZE("cfi-icall") bool CefMediaSinkCToCpp::IsCastSink() {
|
||||||
shutdown_checker::AssertNotShutdown();
|
shutdown_checker::AssertNotShutdown();
|
||||||
|
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
// implementations. See the translator.README.txt file in the tools directory
|
// implementations. See the translator.README.txt file in the tools directory
|
||||||
// for more information.
|
// for more information.
|
||||||
//
|
//
|
||||||
// $hash=d69c0bdadc802bc7cb970c316f3a0ed8529c5f9c$
|
// $hash=c57a82e66fdcd26f70a69fbd92554ca8aa38495c$
|
||||||
//
|
//
|
||||||
|
|
||||||
#ifndef CEF_LIBCEF_DLL_CTOCPP_MEDIA_SINK_CTOCPP_H_
|
#ifndef CEF_LIBCEF_DLL_CTOCPP_MEDIA_SINK_CTOCPP_H_
|
||||||
@ -38,6 +38,7 @@ class CefMediaSinkCToCpp : public CefCToCppRefCounted<CefMediaSinkCToCpp,
|
|||||||
bool IsValid() OVERRIDE;
|
bool IsValid() OVERRIDE;
|
||||||
CefString GetName() OVERRIDE;
|
CefString GetName() OVERRIDE;
|
||||||
CefString GetDescription() OVERRIDE;
|
CefString GetDescription() OVERRIDE;
|
||||||
|
IconType GetIconType() OVERRIDE;
|
||||||
bool IsCastSink() OVERRIDE;
|
bool IsCastSink() OVERRIDE;
|
||||||
bool IsDialSink() OVERRIDE;
|
bool IsDialSink() OVERRIDE;
|
||||||
bool IsCompatibleWith(CefRefPtr<CefMediaSource> source) OVERRIDE;
|
bool IsCompatibleWith(CefRefPtr<CefMediaSource> source) OVERRIDE;
|
||||||
|
@ -161,6 +161,7 @@ class MediaObserver : public CefMediaObserver {
|
|||||||
sink_dict->SetString("id", sink_id);
|
sink_dict->SetString("id", sink_id);
|
||||||
sink_dict->SetString("name", sink->GetName());
|
sink_dict->SetString("name", sink->GetName());
|
||||||
sink_dict->SetString("desc", sink->GetDescription());
|
sink_dict->SetString("desc", sink->GetDescription());
|
||||||
|
sink_dict->SetInt("icon", sink->GetIconType());
|
||||||
sink_dict->SetString(
|
sink_dict->SetString(
|
||||||
"type", sink->IsCastSink() ? "cast"
|
"type", sink->IsCastSink() ? "cast"
|
||||||
: sink->IsDialSink() ? "dial" : "unknown");
|
: sink->IsDialSink() ? "dial" : "unknown");
|
||||||
|
@ -112,6 +112,32 @@ function getStateLabel(state) {
|
|||||||
return "UNKNOWN";
|
return "UNKNOWN";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Values from cef_media_sink_icon_type_t.
|
||||||
|
var CEF_MSIT_CAST = 0;
|
||||||
|
var CEF_MSIT_CAST_AUDIO_GROUP = 1;
|
||||||
|
var CEF_MSIT_CAST_AUDIO = 2;
|
||||||
|
var CEF_MSIT_MEETING = 3;
|
||||||
|
var CEF_MSIT_HANGOUT = 4;
|
||||||
|
var CEF_MSIT_EDUCATION = 5;
|
||||||
|
var CEF_MSIT_WIRED_DISPLAY = 6;
|
||||||
|
var CEF_MSIT_GENERIC = 7;
|
||||||
|
|
||||||
|
function getIconTypeLabel(type) {
|
||||||
|
switch (type) {
|
||||||
|
case CEF_MSIT_CAST: return "CAST";
|
||||||
|
case CEF_MSIT_CAST_AUDIO_GROUP: return "CAST_AUDIO_GROUP";
|
||||||
|
case CEF_MSIT_CAST_AUDIO: return "CAST_AUDIO";
|
||||||
|
case CEF_MSIT_MEETING: return "MEETING";
|
||||||
|
case CEF_MSIT_HANGOUT: return "HANGOUT";
|
||||||
|
case CEF_MSIT_EDUCATION: return "EDUCATION";
|
||||||
|
case CEF_MSIT_WIRED_DISPLAY: return "WIRED_DISPLAY";
|
||||||
|
case CEF_MSIT_GENERIC: return "GENERIC";
|
||||||
|
default: break;
|
||||||
|
}
|
||||||
|
return "UNKNOWN";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
///
|
///
|
||||||
// Manage show/hide of default text for form elements.
|
// Manage show/hide of default text for form elements.
|
||||||
///
|
///
|
||||||
@ -213,7 +239,9 @@ Expected format for |sinks| is:
|
|||||||
{
|
{
|
||||||
name: string,
|
name: string,
|
||||||
type: string ('cast' or 'dial'),
|
type: string ('cast' or 'dial'),
|
||||||
id: string
|
id: string,
|
||||||
|
desc: string,
|
||||||
|
icon: int
|
||||||
}, ...
|
}, ...
|
||||||
]
|
]
|
||||||
*/
|
*/
|
||||||
@ -248,7 +276,7 @@ function updateSinks(sinks) {
|
|||||||
if (oldValues.includes(sink.id))
|
if (oldValues.includes(sink.id))
|
||||||
continue;
|
continue;
|
||||||
var opt = document.createElement('option');
|
var opt = document.createElement('option');
|
||||||
opt.innerHTML = sink.name + ' (' + sink.type + ')';
|
opt.innerHTML = sink.name + ' (' + sink.type + ', ' + getIconTypeLabel(sink.icon) + ')';
|
||||||
opt.value = sink.id;
|
opt.value = sink.id;
|
||||||
sinksSelect.appendChild(opt);
|
sinksSelect.appendChild(opt);
|
||||||
}
|
}
|
||||||
@ -476,12 +504,16 @@ function initDemoMode() {
|
|||||||
{
|
{
|
||||||
name: 'Sink 1',
|
name: 'Sink 1',
|
||||||
type: 'cast',
|
type: 'cast',
|
||||||
id: 'sink1'
|
id: 'sink1',
|
||||||
|
desc: 'My cast device',
|
||||||
|
icon: CEF_MSIT_CAST
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'Sink 2',
|
name: 'Sink 2',
|
||||||
type: 'dial',
|
type: 'dial',
|
||||||
id: 'sink2'
|
id: 'sink2',
|
||||||
|
desc: 'My dial device',
|
||||||
|
icon: CEF_MSIT_GENERIC
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
updateSinks(sinks);
|
updateSinks(sinks);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user