Commit 2051bc2e authored by Takumi Fujimoto's avatar Takumi Fujimoto Committed by Chromium LUCI CQ

Media remoting: Don't record compatibility if no remoting-capable sink

UpdateAndMaybeSwitch() is hit even when not mirroring, so we should
record the remoting compatibility only when mirroring.

Bug: 1163944
Change-Id: I05415bc9b15115526f66cdb6006cb9e946a0d379
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2638494
Commit-Queue: Takumi Fujimoto <takumif@chromium.org>
Reviewed-by: default avatarJordan Bayles <jophba@chromium.org>
Cr-Commit-Position: refs/heads/master@{#845891}
parent 5a53c7c4
......@@ -19,6 +19,7 @@ namespace media {
namespace remoting {
using mojom::RemotingSinkAudioCapability;
using mojom::RemotingSinkFeature;
using mojom::RemotingSinkVideoCapability;
namespace {
......@@ -129,7 +130,7 @@ void RendererController::OnSinkAvailable(
sink_metadata_ = *metadata;
if (!HasFeatureCapability(mojom::RemotingSinkFeature::RENDERING)) {
if (!SinkSupportsRemoting()) {
OnSinkGone();
return;
}
......@@ -470,7 +471,8 @@ void RendererController::UpdateAndMaybeSwitch(StartTrigger start_trigger,
// screen if switching to remoting while paused. Thus, the user experience is
// improved by not starting remoting until playback resumes.
bool should_be_remoting = client_ && !encountered_renderer_fatal_error_ &&
is_dominant_content_ && !is_paused_;
is_dominant_content_ && !is_paused_ &&
SinkSupportsRemoting();
if (should_be_remoting) {
const RemotingCompatibility compatibility = GetCompatibility();
metrics_recorder_.RecordCompatibility(compatibility);
......@@ -610,12 +612,16 @@ bool RendererController::HasAudioCapability(
}
bool RendererController::HasFeatureCapability(
mojom::RemotingSinkFeature capability) const {
RemotingSinkFeature capability) const {
return std::find(std::begin(sink_metadata_.features),
std::end(sink_metadata_.features),
capability) != std::end(sink_metadata_.features);
}
bool RendererController::SinkSupportsRemoting() const {
return HasFeatureCapability(RemotingSinkFeature::RENDERING);
}
void RendererController::SendMessageToSink(
std::unique_ptr<std::vector<uint8_t>> message) {
DCHECK(thread_checker_.CalledOnValidThread());
......
......@@ -157,6 +157,7 @@ class RendererController final : public mojom::RemotingSource,
bool HasVideoCapability(mojom::RemotingSinkVideoCapability capability) const;
bool HasAudioCapability(mojom::RemotingSinkAudioCapability capability) const;
bool HasFeatureCapability(mojom::RemotingSinkFeature capability) const;
bool SinkSupportsRemoting() const;
// Callback from RpcBroker when sending message to remote sink.
void SendMessageToSink(std::unique_ptr<std::vector<uint8_t>> message);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment