Home | History | Annotate | Download | only in media
      1 // Copyright 2014 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #include "content/renderer/media/webrtc_uma_histograms.h"
      6 
      7 #include "base/metrics/histogram.h"
      8 
      9 namespace content {
     10 
     11 void UpdateWebRTCMethodCount(JavaScriptAPIName api_name) {
     12   DVLOG(3) << "Incrementing WebRTC.webkitApiCount for " << api_name;
     13   UMA_HISTOGRAM_ENUMERATION("WebRTC.webkitApiCount", api_name, INVALID_NAME);
     14   PerSessionWebRTCAPIMetrics::GetInstance()->LogUsageOnlyOnce(api_name);
     15 }
     16 
     17 PerSessionWebRTCAPIMetrics::~PerSessionWebRTCAPIMetrics() {
     18 }
     19 
     20 // static
     21 PerSessionWebRTCAPIMetrics* PerSessionWebRTCAPIMetrics::GetInstance() {
     22   return Singleton<PerSessionWebRTCAPIMetrics>::get();
     23 }
     24 
     25 void PerSessionWebRTCAPIMetrics::IncrementStreamCounter() {
     26   DCHECK(CalledOnValidThread());
     27   ++num_streams_;
     28 }
     29 
     30 void PerSessionWebRTCAPIMetrics::DecrementStreamCounter() {
     31   DCHECK(CalledOnValidThread());
     32   if (--num_streams_ == 0) {
     33     ResetUsage();
     34   }
     35 }
     36 
     37 PerSessionWebRTCAPIMetrics::PerSessionWebRTCAPIMetrics() : num_streams_(0) {
     38   ResetUsage();
     39 }
     40 
     41 void PerSessionWebRTCAPIMetrics::LogUsage(JavaScriptAPIName api_name) {
     42   DVLOG(3) << "Incrementing WebRTC.webkitApiCountPerSession for " << api_name;
     43   UMA_HISTOGRAM_ENUMERATION("WebRTC.webkitApiCountPerSession",
     44                             api_name, INVALID_NAME);
     45 }
     46 
     47 void PerSessionWebRTCAPIMetrics::LogUsageOnlyOnce(JavaScriptAPIName api_name) {
     48   DCHECK(CalledOnValidThread());
     49   if (!has_used_api_[api_name]) {
     50     has_used_api_[api_name] = true;
     51     LogUsage(api_name);
     52   }
     53 }
     54 
     55 void PerSessionWebRTCAPIMetrics::ResetUsage() {
     56   for (size_t i = 0; i < arraysize(has_used_api_); ++i)
     57     has_used_api_[i] = false;
     58 }
     59 
     60 }  // namespace content
     61