webrtc_m130/pc/usage_pattern.cc
Harald Alvestrand 24992e9518 Report all usage patterns to UKM
This stores usage for all cases, making it easier to discover
abusive usages on unexpected patterns.

Bug: None
Change-Id: I62c9b07498e811ac04c221f57cfbc02312aaaacc
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/368902
Commit-Queue: Harald Alvestrand <hta@webrtc.org>
Reviewed-by: Mirko Bonadei <mbonadei@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#43442}
2024-11-22 11:13:47 +00:00

40 lines
1.5 KiB
C++

/*
* Copyright 2020 The WebRTC project authors. All Rights Reserved.
*
* Use of this source code is governed by a BSD-style license
* that can be found in the LICENSE file in the root of the source
* tree. An additional intellectual property rights grant can be found
* in the file PATENTS. All contributing project authors may
* be found in the AUTHORS file in the root of the source tree.
*/
#include "pc/usage_pattern.h"
#include "api/peer_connection_interface.h"
#include "rtc_base/logging.h"
#include "system_wrappers/include/metrics.h"
namespace webrtc {
void UsagePattern::NoteUsageEvent(UsageEvent event) {
usage_event_accumulator_ |= static_cast<int>(event);
}
void UsagePattern::ReportUsagePattern(PeerConnectionObserver* observer) const {
RTC_DLOG(LS_INFO) << "Usage signature is " << usage_event_accumulator_;
RTC_HISTOGRAM_ENUMERATION_SPARSE("WebRTC.PeerConnection.UsagePattern",
usage_event_accumulator_,
static_cast<int>(UsageEvent::MAX_VALUE));
// If called after close(), we can't report, because observer may have
// been deallocated, and therefore pointer is null. Write to log instead.
if (observer) {
observer->OnInterestingUsage(usage_event_accumulator_);
} else {
RTC_LOG(LS_INFO) << "Interesting usage signature "
<< usage_event_accumulator_
<< " observed after observer shutdown";
}
}
} // namespace webrtc