blob: b06cc772f03a1246acf7af3feeeb7b0a3a1a5715 [file] [log] [blame]
// Copyright 2020 The Chromium Authors. All rights reserved.
// 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/peerconnection/identifiability_metrics.h"
#include "third_party/blink/public/common/privacy_budget/identifiable_token_builder.h"
#include "third_party/blink/renderer/bindings/modules/v8/v8_rtc_rtp_capabilities.h"
#include "third_party/blink/renderer/bindings/modules/v8/v8_rtc_rtp_codec_capability.h"
#include "third_party/blink/renderer/bindings/modules/v8/v8_rtc_rtp_header_extension_capability.h"
#include "third_party/blink/renderer/platform/privacy_budget/identifiability_digest_helpers.h"
namespace blink {
void IdentifiabilityAddRTCRtpCapabilitiesToBuilder(
IdentifiableTokenBuilder& builder,
const RTCRtpCapabilities& capabilities) {
if (capabilities.hasCodecs()) {
for (const auto& codec : capabilities.codecs()) {
if (codec->hasMimeType()) {
builder.AddToken(
IdentifiabilitySensitiveStringToken(codec->mimeType()));
} else {
builder.AddToken(IdentifiableToken());
}
if (codec->hasClockRate()) {
builder.AddValue(codec->clockRate());
} else {
builder.AddToken(IdentifiableToken());
}
if (codec->hasChannels()) {
builder.AddValue(codec->channels());
} else {
builder.AddToken(IdentifiableToken());
}
if (codec->hasSdpFmtpLine()) {
builder.AddToken(
IdentifiabilitySensitiveStringToken(codec->sdpFmtpLine()));
} else {
builder.AddToken(IdentifiableToken());
}
if (codec->hasScalabilityModes()) {
for (const auto& mode : codec->scalabilityModes()) {
builder.AddToken(IdentifiabilitySensitiveStringToken(mode));
}
} else {
builder.AddToken(IdentifiableToken());
}
}
} else {
builder.AddToken(IdentifiableToken());
}
if (capabilities.hasHeaderExtensions()) {
for (const auto& header_extension : capabilities.headerExtensions()) {
if (header_extension->hasUri()) {
builder.AddToken(
IdentifiabilitySensitiveStringToken(header_extension->uri()));
} else {
builder.AddToken(IdentifiableToken());
}
}
} else {
builder.AddToken(IdentifiableToken());
}
}
} // namespace blink