Index: chrome/browser/previews/previews_infobar_delegate_unittest.cc |
diff --git a/chrome/browser/previews/previews_infobar_delegate_unittest.cc b/chrome/browser/previews/previews_infobar_delegate_unittest.cc |
index 107da1d9e9a50ab2046207a4a3e93e6cc09aefa6..faa5b1c4feec191fcf3cbb9e7a2050e0697bc49a 100644 |
--- a/chrome/browser/previews/previews_infobar_delegate_unittest.cc |
+++ b/chrome/browser/previews/previews_infobar_delegate_unittest.cc |
@@ -12,8 +12,10 @@ |
#include "base/feature_list.h" |
#include "base/memory/ptr_util.h" |
#include "base/metrics/field_trial.h" |
+#include "base/metrics/field_trial_param_associator.h" |
#include "base/metrics/field_trial_params.h" |
#include "base/optional.h" |
+#include "base/strings/string16.h" |
#include "base/test/histogram_tester.h" |
#include "base/test/scoped_feature_list.h" |
#include "base/threading/thread_task_runner_handle.h" |
@@ -71,6 +73,9 @@ const char kUMAPreviewsInfoBarActionOffline[] = |
const char kUMAPreviewsInfoBarActionLitePage[] = |
"Previews.InfoBarAction.LitePage"; |
+// Key of the UMA Previews.InfoBarTimestamp histogram. |
+const char kUMAPreviewsInfoBarTimestamp[] = "Previews.InfoBarTimestamp"; |
+ |
class TestPreviewsWebContentsObserver |
: public content::WebContentsObserver, |
public content::WebContentsUserData<TestPreviewsWebContentsObserver> { |
@@ -178,14 +183,15 @@ class PreviewsInfoBarDelegateUnitTest : public ChromeRenderViewHostTestHarness { |
infobar_service->infobar_at(0)->delegate()); |
} |
- void EnableStalePreviewsTimestamp() { |
+ void EnableStalePreviewsTimestamp( |
+ std::map<std::string, std::string> variation_params) { |
tbansal1
2017/06/22 21:12:16
#inclide <map>
megjablon
2017/06/22 23:40:11
Done.
|
+ field_trial_list_.reset(); |
tbansal1
2017/06/22 21:12:16
Is this needed given the following line is also ca
megjablon
2017/06/22 23:40:11
It's needed because otherwise the constructor thro
|
+ field_trial_list_.reset(new base::FieldTrialList(nullptr)); |
+ base::FieldTrialParamAssociator::GetInstance()->ClearAllParamsForTesting(); |
+ |
const std::string kTrialName = "TrialName"; |
const std::string kGroupName = "GroupName"; |
- std::map<std::string, std::string> variation_params; |
- variation_params["min_staleness_in_minutes"] = "2"; |
- variation_params["max_staleness_in_minutes"] = "1440"; |
- |
base::AssociateFieldTrialParams(kTrialName, kGroupName, variation_params); |
base::FieldTrial* field_trial = |
base::FieldTrialList::CreateFieldTrial(kTrialName, kGroupName); |
@@ -609,7 +615,10 @@ TEST_F(PreviewsInfoBarDelegateUnitTest, PingbackClientClearedTabClosed) { |
} |
TEST_F(PreviewsInfoBarDelegateUnitTest, PreviewInfobarTimestampMintuesTest) { |
- EnableStalePreviewsTimestamp(); |
+ base::HistogramTester tester; |
+ // Use default params. |
+ std::map<std::string, std::string> variation_params; |
+ EnableStalePreviewsTimestamp(variation_params); |
int staleness_in_minutes = 5; |
@@ -618,14 +627,19 @@ TEST_F(PreviewsInfoBarDelegateUnitTest, PreviewInfobarTimestampMintuesTest) { |
base::Time::Now() - base::TimeDelta::FromMinutes(staleness_in_minutes), |
true /* is_data_saver_user */); |
- ASSERT_EQ( |
+ EXPECT_EQ( |
l10n_util::GetStringFUTF16(IDS_PREVIEWS_INFOBAR_TIMESTAMP_MINUTES, |
base::IntToString16(staleness_in_minutes)), |
infobar->GetTimestampText()); |
+ tester.ExpectUniqueSample(kUMAPreviewsInfoBarTimestamp, |
+ PreviewsInfoBarDelegate::TIMESTAMP_SHOWN, 1); |
} |
TEST_F(PreviewsInfoBarDelegateUnitTest, PreviewInfobarTimestampHourTest) { |
- EnableStalePreviewsTimestamp(); |
+ base::HistogramTester tester; |
+ // Use default params. |
+ std::map<std::string, std::string> variation_params; |
+ EnableStalePreviewsTimestamp(variation_params); |
int staleness_in_minutes = 65; |
@@ -634,12 +648,17 @@ TEST_F(PreviewsInfoBarDelegateUnitTest, PreviewInfobarTimestampHourTest) { |
base::Time::Now() - base::TimeDelta::FromMinutes(staleness_in_minutes), |
true /* is_data_saver_user */); |
- ASSERT_EQ(l10n_util::GetStringUTF16(IDS_PREVIEWS_INFOBAR_TIMESTAMP_ONE_HOUR), |
+ EXPECT_EQ(l10n_util::GetStringUTF16(IDS_PREVIEWS_INFOBAR_TIMESTAMP_ONE_HOUR), |
infobar->GetTimestampText()); |
+ tester.ExpectUniqueSample(kUMAPreviewsInfoBarTimestamp, |
+ PreviewsInfoBarDelegate::TIMESTAMP_SHOWN, 1); |
} |
TEST_F(PreviewsInfoBarDelegateUnitTest, PreviewInfobarTimestampHoursTest) { |
- EnableStalePreviewsTimestamp(); |
+ base::HistogramTester tester; |
+ // Use default params. |
+ std::map<std::string, std::string> variation_params; |
+ EnableStalePreviewsTimestamp(variation_params); |
int staleness_in_hours = 2; |
@@ -648,7 +667,122 @@ TEST_F(PreviewsInfoBarDelegateUnitTest, PreviewInfobarTimestampHoursTest) { |
base::Time::Now() - base::TimeDelta::FromHours(staleness_in_hours), |
true /* is_data_saver_user */); |
- ASSERT_EQ(l10n_util::GetStringFUTF16(IDS_PREVIEWS_INFOBAR_TIMESTAMP_HOURS, |
+ EXPECT_EQ(l10n_util::GetStringFUTF16(IDS_PREVIEWS_INFOBAR_TIMESTAMP_HOURS, |
base::IntToString16(staleness_in_hours)), |
infobar->GetTimestampText()); |
+ tester.ExpectUniqueSample(kUMAPreviewsInfoBarTimestamp, |
+ PreviewsInfoBarDelegate::TIMESTAMP_SHOWN, 1); |
+} |
+ |
+TEST_F(PreviewsInfoBarDelegateUnitTest, PreviewInfobarTimestampFinchParamsUMA) { |
+ base::HistogramTester tester; |
+ std::map<std::string, std::string> variation_params; |
+ variation_params["min_staleness_in_minutes"] = "1"; |
+ variation_params["max_staleness_in_minutes"] = "5"; |
+ EnableStalePreviewsTimestamp(variation_params); |
+ |
+ int staleness_in_minutes = 1; |
+ |
+ PreviewsInfoBarDelegate* infobar = CreateInfoBar( |
+ previews::PreviewsType::LITE_PAGE, |
+ base::Time::Now() - base::TimeDelta::FromMinutes(staleness_in_minutes), |
+ true /* is_data_saver_user */); |
+ |
+ EXPECT_EQ( |
+ l10n_util::GetStringFUTF16(IDS_PREVIEWS_INFOBAR_TIMESTAMP_MINUTES, |
+ base::IntToString16(staleness_in_minutes)), |
+ infobar->GetTimestampText()); |
+ tester.ExpectBucketCount(kUMAPreviewsInfoBarTimestamp, |
+ PreviewsInfoBarDelegate::TIMESTAMP_SHOWN, 1); |
+ |
+ // Navigate and show infobar again. |
+ NavigateAndCommit(GURL(kTestUrl)); |
+ |
+ staleness_in_minutes = 6; |
+ |
+ infobar = CreateInfoBar( |
+ previews::PreviewsType::LITE_PAGE, |
+ base::Time::Now() - base::TimeDelta::FromMinutes(staleness_in_minutes), |
+ true /* is_data_saver_user */); |
+ |
+ EXPECT_EQ(base::string16(), infobar->GetTimestampText()); |
+ tester.ExpectBucketCount( |
+ kUMAPreviewsInfoBarTimestamp, |
+ PreviewsInfoBarDelegate::TIMESTAMP_NOT_SHOWN_STALENESS_GREATER_THAN_MAX, |
+ 1); |
+} |
+ |
+TEST_F(PreviewsInfoBarDelegateUnitTest, PreviewInfobarTimestampNoParamsUMA) { |
+ base::HistogramTester tester; |
+ std::map<std::string, std::string> variation_params; |
+ variation_params["min_staleness_in_minutes"] = "-5"; |
+ variation_params["max_staleness_in_minutes"] = "1440"; |
+ EnableStalePreviewsTimestamp(variation_params); |
+ |
+ int staleness_in_minutes = 5; |
+ |
+ PreviewsInfoBarDelegate* infobar = CreateInfoBar( |
+ previews::PreviewsType::LITE_PAGE, |
+ base::Time::Now() - base::TimeDelta::FromMinutes(staleness_in_minutes), |
+ true /* is_data_saver_user */); |
+ |
+ EXPECT_EQ(base::string16(), infobar->GetTimestampText()); |
+ tester.ExpectUniqueSample( |
+ kUMAPreviewsInfoBarTimestamp, |
+ PreviewsInfoBarDelegate::TIMESTAMP_NOT_SHOWN_PARAMS_NOT_AVAILABLE, 1); |
+} |
+ |
+TEST_F(PreviewsInfoBarDelegateUnitTest, PreviewInfobarTimestampNotStaleUMA) { |
+ base::HistogramTester tester; |
+ // Use default params. |
+ std::map<std::string, std::string> variation_params; |
+ EnableStalePreviewsTimestamp(variation_params); |
+ |
+ int staleness_in_minutes = 1; |
+ |
+ PreviewsInfoBarDelegate* infobar = CreateInfoBar( |
+ previews::PreviewsType::LITE_PAGE, |
+ base::Time::Now() - base::TimeDelta::FromMinutes(staleness_in_minutes), |
+ true /* is_data_saver_user */); |
+ ASSERT_EQ(base::string16(), infobar->GetTimestampText()); |
+ tester.ExpectUniqueSample( |
+ kUMAPreviewsInfoBarTimestamp, |
+ PreviewsInfoBarDelegate::TIMESTAMP_NOT_SHOWN_PREVIEW_NOT_STALE, 1); |
+} |
+ |
+TEST_F(PreviewsInfoBarDelegateUnitTest, PreviewInfobarTimestampNegativeUMA) { |
+ base::HistogramTester tester; |
+ // Use default params. |
+ std::map<std::string, std::string> variation_params; |
+ EnableStalePreviewsTimestamp(variation_params); |
+ |
+ int staleness_in_minutes = -1; |
+ |
+ PreviewsInfoBarDelegate* infobar = CreateInfoBar( |
+ previews::PreviewsType::LITE_PAGE, |
+ base::Time::Now() - base::TimeDelta::FromMinutes(staleness_in_minutes), |
+ true /* is_data_saver_user */); |
+ EXPECT_EQ(base::string16(), infobar->GetTimestampText()); |
+ tester.ExpectUniqueSample( |
+ kUMAPreviewsInfoBarTimestamp, |
+ PreviewsInfoBarDelegate::TIMESTAMP_NOT_SHOWN_STALENESS_NEGATIVE, 1); |
+} |
+ |
+TEST_F(PreviewsInfoBarDelegateUnitTest, PreviewInfobarTimestampMaximumUMA) { |
tbansal1
2017/06/22 21:12:16
Would it be useful to combine this test with the o
megjablon
2017/06/22 23:40:11
I refactored the tests. I didn't add a struct thou
tbansal1
2017/06/23 00:37:42
Thanks, this looks much cleaner.
|
+ base::HistogramTester tester; |
+ // Use default params. |
+ std::map<std::string, std::string> variation_params; |
+ EnableStalePreviewsTimestamp(variation_params); |
+ |
+ int staleness_in_minutes = 1500; |
+ |
+ PreviewsInfoBarDelegate* infobar = CreateInfoBar( |
+ previews::PreviewsType::LITE_PAGE, |
+ base::Time::Now() - base::TimeDelta::FromMinutes(staleness_in_minutes), |
+ true /* is_data_saver_user */); |
+ EXPECT_EQ(base::string16(), infobar->GetTimestampText()); |
+ tester.ExpectUniqueSample( |
+ kUMAPreviewsInfoBarTimestamp, |
+ PreviewsInfoBarDelegate::TIMESTAMP_NOT_SHOWN_STALENESS_GREATER_THAN_MAX, |
+ 1); |
} |