core里面的通知probe是从content层调用的
1, D:\dev\electron9\src\content\renderer\media\inspector_media_event_handler.cc
构造入参有个agent
InspectorMediaEventHandler::InspectorMediaEventHandler( blink::MediaInspectorContext* inspector_context) : inspector_context_(inspector_context), player_id_(inspector_context_->CreatePlayer()) {}
里面调用:inspector_context_->NotifyPlayerEvents(player_id_, events);
2,上面函数实现在:D:\dev\electron9\src\third_party\blink\renderer\core\inspector\inspector_media_context_impl.cc
// Convert public version of event to protocol version, and send it. void MediaInspectorContextImpl::NotifyPlayerEvents( WebString playerId, InspectorPlayerEvents events) { const auto& player_search = players_.find(playerId); if (player_search == players_.end()) DCHECK(false); Vector<InspectorPlayerEvent> to_send; to_send.ReserveCapacity(events.size()); for (const auto& event : events) { player_search->value->events.emplace_back(event); to_send.push_back(event); } probe::PlayerEventsAdded(GetSupplementable(), playerId, to_send); }
3,发送通知:SendQueuedMediaEvents
0,这个最初初始化在D:\dev\electron9\src\third_party\blink\renderer\modules\modules_initializer.cc
html 的element元素构建而来
std::unique_ptr<WebMediaPlayer> ModulesInitializer::CreateWebMediaPlayer( WebLocalFrameClient* web_frame_client, HTMLMediaElement& html_media_element, const WebMediaPlayerSource& source, WebMediaPlayerClient* media_player_client) const { HTMLMediaElementEncryptedMedia& encrypted_media = HTMLMediaElementEncryptedMedia::From(html_media_element); WebString sink_id( HTMLMediaElementAudioOutputDevice::sinkId(html_media_element)); MediaInspectorContextImpl* context_impl = MediaInspectorContextImpl::FromHtmlMediaElement(html_media_element); return base::WrapUnique(web_frame_client->CreateMediaPlayer( source, media_player_client, context_impl, &encrypted_media, encrypted_media.ContentDecryptionModule(), sink_id)); }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
2020-04-01 qt打包发布问题 缺失qt动态库
2014-04-01 游戏引擎剖析