| Index: chrome/browser/previews/previews_infobar_delegate.cc
|
| diff --git a/chrome/browser/previews/previews_infobar_delegate.cc b/chrome/browser/previews/previews_infobar_delegate.cc
|
| index 110f20885eda515966c239a227430ac53c795f2d..3f87c2c00369300e95fc3a866299d3641b2b6010 100644
|
| --- a/chrome/browser/previews/previews_infobar_delegate.cc
|
| +++ b/chrome/browser/previews/previews_infobar_delegate.cc
|
| @@ -7,6 +7,7 @@
|
| #include "base/feature_list.h"
|
| #include "base/metrics/field_trial_params.h"
|
| #include "base/metrics/histogram.h"
|
| +#include "base/metrics/histogram_macros.h"
|
| #include "base/optional.h"
|
| #include "base/strings/string16.h"
|
| #include "base/strings/string_number_conversions.h"
|
| @@ -34,6 +35,11 @@
|
|
|
| namespace {
|
|
|
| +const char kMinStalenessParamName[] = "min_staleness_in_minutes";
|
| +const char kMaxStalenessParamName[] = "max_staleness_in_minutes";
|
| +const int kMinStalenessParamDefaultValue = 2;
|
| +const int kMaxStalenessParamDefaultValue = 1440;
|
| +
|
| void RecordPreviewsInfoBarAction(
|
| previews::PreviewsType previews_type,
|
| PreviewsInfoBarDelegate::PreviewsInfoBarAction action) {
|
| @@ -47,6 +53,11 @@ void RecordPreviewsInfoBarAction(
|
| ->Add(static_cast<int32_t>(action));
|
| }
|
|
|
| +void RecordStaleness(PreviewsInfoBarDelegate::PreviewsInfoBarTimestamp value) {
|
| + UMA_HISTOGRAM_ENUMERATION("Previews.InfoBarTimestamp", value,
|
| + PreviewsInfoBarDelegate::TIMESTAMP_INDEX_BOUNDARY);
|
| +}
|
| +
|
| // Sends opt out information to the pingback service based on a key value in the
|
| // infobar tab helper. Sending this information in the case of a navigation that
|
| // should not send a pingback (or is not a server preview) will not alter the
|
| @@ -245,14 +256,16 @@ base::string16 PreviewsInfoBarDelegate::GetTimestampText() const {
|
| }
|
|
|
| int min_staleness_in_minutes = base::GetFieldTrialParamByFeatureAsInt(
|
| - previews::features::kStalePreviewsTimestamp, "min_staleness_in_minutes",
|
| - 0);
|
| + previews::features::kStalePreviewsTimestamp, kMinStalenessParamName,
|
| + kMinStalenessParamDefaultValue);
|
| int max_staleness_in_minutes = base::GetFieldTrialParamByFeatureAsInt(
|
| - previews::features::kStalePreviewsTimestamp, "max_staleness_in_minutes",
|
| - 0);
|
| + previews::features::kStalePreviewsTimestamp, kMaxStalenessParamName,
|
| + kMaxStalenessParamDefaultValue);
|
|
|
| - if (min_staleness_in_minutes == 0 || max_staleness_in_minutes == 0)
|
| + if (min_staleness_in_minutes <= 0 || max_staleness_in_minutes <= 0) {
|
| + NOTREACHED();
|
| return base::string16();
|
| + }
|
|
|
| base::Time network_time;
|
| if (g_browser_process->network_time_tracker()->GetNetworkTime(&network_time,
|
| @@ -263,12 +276,22 @@ base::string16 PreviewsInfoBarDelegate::GetTimestampText() const {
|
| network_time = base::Time::Now();
|
| }
|
|
|
| + if (network_time < previews_freshness_) {
|
| + RecordStaleness(TIMESTAMP_NOT_SHOWN_STALENESS_NEGATIVE);
|
| + return base::string16();
|
| + }
|
| +
|
| int staleness_in_minutes = (network_time - previews_freshness_).InMinutes();
|
| - // TODO(megjablon): record metrics for out of bounds staleness.
|
| - if (staleness_in_minutes < min_staleness_in_minutes)
|
| + if (staleness_in_minutes < min_staleness_in_minutes) {
|
| + RecordStaleness(TIMESTAMP_NOT_SHOWN_PREVIEW_NOT_STALE);
|
| return base::string16();
|
| - if (staleness_in_minutes > max_staleness_in_minutes)
|
| + }
|
| + if (staleness_in_minutes > max_staleness_in_minutes) {
|
| + RecordStaleness(TIMESTAMP_NOT_SHOWN_STALENESS_GREATER_THAN_MAX);
|
| return base::string16();
|
| + }
|
| +
|
| + RecordStaleness(TIMESTAMP_SHOWN);
|
|
|
| if (staleness_in_minutes < 60) {
|
| return l10n_util::GetStringFUTF16(
|
|
|