| Index: chrome/browser/android/data_usage/tab_data_use_entry.cc
|
| diff --git a/chrome/browser/android/data_usage/tab_data_use_entry.cc b/chrome/browser/android/data_usage/tab_data_use_entry.cc
|
| index a6e0cc5394dd247b059f6ed026c09cedb34d0009..356adcaf7726824d4e4311484492bec346f8f33a 100644
|
| --- a/chrome/browser/android/data_usage/tab_data_use_entry.cc
|
| +++ b/chrome/browser/android/data_usage/tab_data_use_entry.cc
|
| @@ -6,6 +6,7 @@
|
|
|
| #include "base/gtest_prod_util.h"
|
| #include "base/macros.h"
|
| +#include "base/metrics/histogram_macros.h"
|
| #include "base/strings/string_number_conversions.h"
|
| #include "chrome/browser/android/data_usage/external_data_use_observer.h"
|
| #include "components/variations/variations_associated_data.h"
|
| @@ -24,6 +25,11 @@ const unsigned int kDefaultClosedTabExpirationDurationSeconds =
|
| const unsigned int kDefaultOpenTabExpirationDurationSeconds =
|
| 60 * 60 * 24 * 5; // 5 days.
|
|
|
| +const char kUMATrackingSessionLifetimeSecondsHistogram[] =
|
| + "DataUse.TabModel.TrackingSessionLifetime";
|
| +const char kUMAOldInactiveSessionRemovalDurationSecondsHistogram[] =
|
| + "DataUse.TabModel.OldInactiveSessionRemovalDuration";
|
| +
|
| // Returns various parameters from the values specified in the field trial.
|
| size_t GetMaxSessionsPerTab() {
|
| size_t max_sessions_per_tab = -1;
|
| @@ -110,6 +116,12 @@ bool TabDataUseEntry::EndTracking() {
|
| return false;
|
|
|
| back_iterator->end_time = Now();
|
| +
|
| + UMA_HISTOGRAM_CUSTOM_TIMES(
|
| + kUMATrackingSessionLifetimeSecondsHistogram,
|
| + back_iterator->end_time - back_iterator->start_time,
|
| + base::TimeDelta::FromSeconds(1), base::TimeDelta::FromHours(1), 50);
|
| +
|
| return true;
|
| }
|
|
|
| @@ -135,8 +147,6 @@ bool TabDataUseEntry::IsExpired() const {
|
| const base::TimeTicks latest_session_time = GetLatestStartOrEndTime();
|
| if (latest_session_time.is_null() ||
|
| ((now - latest_session_time) > open_tab_expiration_duration_)) {
|
| - // TODO(rajendrant): Add UMA to track deletion of entries corresponding to
|
| - // existing tabs.
|
| return true;
|
| }
|
| return false;
|
| @@ -185,9 +195,16 @@ const base::TimeTicks TabDataUseEntry::GetLatestStartOrEndTime() const {
|
| }
|
|
|
| void TabDataUseEntry::CompactSessionHistory() {
|
| - // TODO(rajendrant): Add UMA to track how often old sessions are lost.
|
| - while (sessions_.size() > max_sessions_per_tab_)
|
| + while (sessions_.size() > max_sessions_per_tab_) {
|
| + const auto& front = sessions_.front();
|
| + DCHECK(!front.end_time.is_null());
|
| + // Track how often old sessions are lost.
|
| + UMA_HISTOGRAM_CUSTOM_TIMES(
|
| + kUMAOldInactiveSessionRemovalDurationSecondsHistogram,
|
| + Now() - front.end_time, base::TimeDelta::FromSeconds(1),
|
| + base::TimeDelta::FromHours(1), 50);
|
| sessions_.pop_front();
|
| + }
|
| }
|
|
|
| } // namespace android
|
|
|