[Cast Streaming] Change Fuchsia to use Remoting path
This CL updates Fuchsia to use the remoting infrastructure rather than the legacy non-remoting paths in `cast_streaming`. This both improves the playback delay for Fuchsia mirroring as well as takes a step closer to supporting remoting on Fuchsia NOTE: Remoting support will not be "turned on" for fuchsia until the initial config used to start cast_streaming is updated to state that remoting is supported Bug: 1370809, internal b/230897148 Change-Id: I2aff6e5b7a69881e7cb889100218d3ac73797edd Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4148222 Commit-Queue: Ryan Keane <rwkeane@google.com> Reviewed-by: Sergey Ulanov <sergeyu@chromium.org> Cr-Commit-Position: refs/heads/main@{#1096496}
This commit is contained in:

committed by
Chromium LUCI CQ

parent
721ba7e74f
commit
3c8a733b4e
fuchsia_web/webengine
@ -260,7 +260,11 @@ component("web_engine_core") {
|
||||
]
|
||||
|
||||
if (enable_cast_receiver) {
|
||||
deps += [ "//components/fuchsia_legacymetrics" ]
|
||||
deps += [
|
||||
"//components/cast_streaming/public",
|
||||
"//components/cast_streaming/public/mojom",
|
||||
"//components/fuchsia_legacymetrics",
|
||||
]
|
||||
}
|
||||
|
||||
if (enable_widevine) {
|
||||
|
@ -1,6 +1,7 @@
|
||||
include_rules = [
|
||||
# Do NOT add components/cast or other Cast-specific code to this file.
|
||||
"+cc/base",
|
||||
"+components/cast_streaming/public",
|
||||
"+components/client_hints/browser",
|
||||
"+components/favicon/content",
|
||||
"+components/favicon/core",
|
||||
|
@ -78,6 +78,9 @@
|
||||
#include "url/origin.h"
|
||||
|
||||
#if BUILDFLAG(ENABLE_CAST_RECEIVER)
|
||||
#include "components/cast_streaming/public/features.h" //nogncheck
|
||||
#include "components/cast_streaming/public/mojom/demuxer_connector.mojom.h" //nogncheck
|
||||
#include "components/cast_streaming/public/mojom/renderer_controller.mojom.h" //nogncheck
|
||||
#include "fuchsia_web/webengine/browser/receiver_session_client.h" //nogncheck
|
||||
#include "fuchsia_web/webengine/common/cast_streaming.h" // nogncheck
|
||||
#endif
|
||||
@ -766,12 +769,18 @@ void FrameImpl::MaybeStartCastStreaming(
|
||||
|
||||
mojo::AssociatedRemote<cast_streaming::mojom::DemuxerConnector>
|
||||
demuxer_connector;
|
||||
navigation_handle->GetRenderFrameHost()
|
||||
->GetRemoteAssociatedInterfaces()
|
||||
->GetInterface(&demuxer_connector);
|
||||
receiver_session_client_->SetDemuxerConnector(std::move(demuxer_connector));
|
||||
mojo::AssociatedRemote<cast_streaming::mojom::RendererController>
|
||||
renderer_controller;
|
||||
auto* remote_interfaces =
|
||||
navigation_handle->GetRenderFrameHost()->GetRemoteAssociatedInterfaces();
|
||||
remote_interfaces->GetInterface(&demuxer_connector);
|
||||
if (cast_streaming::IsCastRemotingEnabled()) {
|
||||
remote_interfaces->GetInterface(&renderer_controller);
|
||||
}
|
||||
receiver_session_client_->SetMojoEndpoints(std::move(demuxer_connector),
|
||||
std::move(renderer_controller));
|
||||
}
|
||||
#endif
|
||||
#endif // BUILDFLAG(ENABLE_CAST_RECEIVER)
|
||||
|
||||
void FrameImpl::UpdateRenderFrameZoomLevel(
|
||||
content::RenderFrameHost* render_frame_host) {
|
||||
|
@ -23,9 +23,11 @@ ReceiverSessionClient::ReceiverSessionClient(
|
||||
|
||||
ReceiverSessionClient::~ReceiverSessionClient() = default;
|
||||
|
||||
void ReceiverSessionClient::SetDemuxerConnector(
|
||||
void ReceiverSessionClient::SetMojoEndpoints(
|
||||
mojo::AssociatedRemote<cast_streaming::mojom::DemuxerConnector>
|
||||
demuxer_connector) {
|
||||
demuxer_connector,
|
||||
mojo::AssociatedRemote<cast_streaming::mojom::RendererController>
|
||||
renderer_controller) {
|
||||
DCHECK(message_port_request_);
|
||||
|
||||
// TODO: Add streaming session Constraints based on system capabilities
|
||||
@ -55,7 +57,12 @@ void ReceiverSessionClient::SetDemuxerConnector(
|
||||
std::move(port));
|
||||
},
|
||||
std::move(message_port_request_)));
|
||||
receiver_session_->StartStreamingAsync(std::move(demuxer_connector));
|
||||
if (renderer_controller) {
|
||||
receiver_session_->StartStreamingAsync(std::move(demuxer_connector),
|
||||
std::move(renderer_controller));
|
||||
} else {
|
||||
receiver_session_->StartStreamingAsync(std::move(demuxer_connector));
|
||||
}
|
||||
}
|
||||
|
||||
bool ReceiverSessionClient::HasReceiverSession() {
|
||||
|
@ -8,6 +8,7 @@
|
||||
#include <fuchsia/web/cpp/fidl.h>
|
||||
|
||||
#include "components/cast_streaming/public/mojom/demuxer_connector.mojom.h"
|
||||
#include "components/cast_streaming/public/mojom/renderer_controller.mojom.h"
|
||||
#include "mojo/public/cpp/bindings/associated_remote.h"
|
||||
|
||||
namespace cast_streaming {
|
||||
@ -26,9 +27,11 @@ class ReceiverSessionClient {
|
||||
|
||||
ReceiverSessionClient& operator=(const ReceiverSessionClient&) = delete;
|
||||
|
||||
void SetDemuxerConnector(
|
||||
void SetMojoEndpoints(
|
||||
mojo::AssociatedRemote<cast_streaming::mojom::DemuxerConnector>
|
||||
demuxer_connector);
|
||||
demuxer_connector,
|
||||
mojo::AssociatedRemote<cast_streaming::mojom::RendererController>
|
||||
renderer_controller);
|
||||
|
||||
bool HasReceiverSession();
|
||||
|
||||
|
Reference in New Issue
Block a user