// Copyright 2016 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 "content/browser/media/audible_metrics.h" #include "base/metrics/histogram_macros.h" #include "base/metrics/user_metrics.h" #include "base/time/default_tick_clock.h" namespace content { AudibleMetrics::AudibleMetrics() : max_concurrent_audible_web_contents_in_session_(0), clock_(new base::DefaultTickClock()) { } AudibleMetrics::~AudibleMetrics() { } void AudibleMetrics::UpdateAudibleWebContentsState( const WebContents* web_contents, bool audible) { bool found = audible_web_contents_.find(web_contents) != audible_web_contents_.end(); if (found == audible) return; if (audible) AddAudibleWebContents(web_contents); else RemoveAudibleWebContents(web_contents); } void AudibleMetrics::SetClockForTest(scoped_ptr test_clock) { clock_ = std::move(test_clock); } void AudibleMetrics::AddAudibleWebContents(const WebContents* web_contents) { base::RecordAction(base::UserMetricsAction("Media.Audible.AddTab")); UMA_HISTOGRAM_CUSTOM_COUNTS( "Media.Audible.ConcurrentTabsWhenStarting", audible_web_contents_.size(), 1, 10, 11); audible_web_contents_.insert(web_contents); if (audible_web_contents_.size() > 1 && concurrent_web_contents_start_time_.is_null()) { concurrent_web_contents_start_time_ = clock_->NowTicks(); } if (audible_web_contents_.size() > max_concurrent_audible_web_contents_in_session_) { max_concurrent_audible_web_contents_in_session_ = audible_web_contents_.size(); UMA_HISTOGRAM_CUSTOM_COUNTS( "Media.Audible.MaxConcurrentTabsInSession", max_concurrent_audible_web_contents_in_session_, 1, 10, 11); } } void AudibleMetrics::RemoveAudibleWebContents(const WebContents* web_contents) { base::RecordAction(base::UserMetricsAction("Media.Audible.RemoveTab")); audible_web_contents_.erase(web_contents); if (audible_web_contents_.size() <= 1 && !concurrent_web_contents_start_time_.is_null()) { base::TimeDelta concurrent_total_time = clock_->NowTicks() - concurrent_web_contents_start_time_; concurrent_web_contents_start_time_ = base::TimeTicks(); UMA_HISTOGRAM_LONG_TIMES("Media.Audible.ConcurrentTabsTime", concurrent_total_time); } } } // namespace content