| // Copyright 2022 The Chromium Authors |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "third_party/blink/renderer/modules/presentation/presentation_metrics.h" |
| |
| #include "services/metrics/public/cpp/ukm_builders.h" |
| #include "third_party/blink/renderer/core/execution_context/execution_context.h" |
| #include "third_party/blink/renderer/modules/presentation/presentation_request.h" |
| |
| namespace blink { |
| |
| // static |
| void PresentationMetrics::RecordPresentationConnectionResult( |
| PresentationRequest* request, |
| bool success) { |
| if (!request) |
| return; |
| |
| // Only record when |request| has at least one Presentation URL with "cast:" |
| // scheme. |
| bool has_cast_protocol = false; |
| for (auto url : request->Urls()) { |
| if (url.ProtocolIs("cast")) { |
| has_cast_protocol = true; |
| break; |
| } |
| } |
| if (!has_cast_protocol) |
| return; |
| |
| ExecutionContext* execution_context = request->GetExecutionContext(); |
| auto* ukm_recorder = execution_context->UkmRecorder(); |
| const ukm::SourceId source_id = execution_context->UkmSourceID(); |
| ukm::builders::Presentation_StartResult(source_id) |
| .SetPresentationRequest(success) |
| .Record(ukm_recorder); |
| } |
| |
| } // namespace blink |