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..49b3b0fb111b050f113a9eb39163366171acba45 100644 |
--- a/chrome/browser/previews/previews_infobar_delegate_unittest.cc |
+++ b/chrome/browser/previews/previews_infobar_delegate_unittest.cc |
@@ -4,6 +4,7 @@ |
#include "chrome/browser/previews/previews_infobar_delegate.h" |
+#include <map> |
#include <memory> |
#include <string> |
@@ -12,8 +13,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 +74,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> { |
@@ -120,7 +126,8 @@ DEFINE_WEB_CONTENTS_USER_DATA_KEY(TestPreviewsWebContentsObserver); |
class PreviewsInfoBarDelegateUnitTest : public ChromeRenderViewHostTestHarness { |
protected: |
PreviewsInfoBarDelegateUnitTest() |
- : field_trial_list_(new base::FieldTrialList(nullptr)) {} |
+ : field_trial_list_(new base::FieldTrialList(nullptr)), |
+ tester_(new base::HistogramTester()) {} |
void SetUp() override { |
ChromeRenderViewHostTestHarness::SetUp(); |
@@ -178,14 +185,15 @@ class PreviewsInfoBarDelegateUnitTest : public ChromeRenderViewHostTestHarness { |
infobar_service->infobar_at(0)->delegate()); |
} |
- void EnableStalePreviewsTimestamp() { |
+ void EnableStalePreviewsTimestamp( |
+ const std::map<std::string, std::string>& variation_params) { |
+ field_trial_list_.reset(); |
+ 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); |
@@ -197,6 +205,23 @@ class PreviewsInfoBarDelegateUnitTest : public ChromeRenderViewHostTestHarness { |
scoped_feature_list_.InitWithFeatureList(std::move(feature_list)); |
} |
+ void TestStalePreviews( |
+ int staleness_in_minutes, |
+ base::string16 expected_timestamp, |
+ PreviewsInfoBarDelegate::PreviewsInfoBarTimestamp expected_bucket) { |
+ PreviewsInfoBarDelegate* infobar = CreateInfoBar( |
+ previews::PreviewsType::LITE_PAGE, |
+ base::Time::Now() - base::TimeDelta::FromMinutes(staleness_in_minutes), |
+ true /* is_data_saver_user */); |
+ EXPECT_EQ(expected_timestamp, infobar->GetTimestampText()); |
+ tester_->ExpectBucketCount(kUMAPreviewsInfoBarTimestamp, expected_bucket, |
+ 1); |
+ // Dismiss the infobar. |
+ InfoBarService::FromWebContents(web_contents())->RemoveAllInfoBars(false); |
+ PreviewsInfoBarTabHelper::FromWebContents(web_contents()) |
+ ->set_displayed_preview_infobar(false); |
+ } |
+ |
void OnDismissPreviewsInfobar(bool user_opt_out) { |
user_opt_out_ = user_opt_out; |
} |
@@ -211,11 +236,10 @@ class PreviewsInfoBarDelegateUnitTest : public ChromeRenderViewHostTestHarness { |
base::Optional<bool> user_opt_out_; |
std::unique_ptr<base::FieldTrialList> field_trial_list_; |
base::test::ScopedFeatureList scoped_feature_list_; |
+ std::unique_ptr<base::HistogramTester> tester_; |
}; |
TEST_F(PreviewsInfoBarDelegateUnitTest, InfobarTestNavigationDismissal) { |
- base::HistogramTester tester; |
- |
CreateInfoBar(previews::PreviewsType::LOFI, base::Time(), |
true /* is_data_saver_user */); |
@@ -232,7 +256,7 @@ TEST_F(PreviewsInfoBarDelegateUnitTest, InfobarTestNavigationDismissal) { |
EXPECT_EQ(0U, infobar_service()->infobar_count()); |
EXPECT_FALSE(user_opt_out_.value()); |
- tester.ExpectBucketCount( |
+ tester_->ExpectBucketCount( |
kUMAPreviewsInfoBarActionLoFi, |
PreviewsInfoBarDelegate::INFOBAR_DISMISSED_BY_NAVIGATION, 1); |
EXPECT_EQ(0, drp_test_context_->pref_service()->GetInteger( |
@@ -240,8 +264,6 @@ TEST_F(PreviewsInfoBarDelegateUnitTest, InfobarTestNavigationDismissal) { |
} |
TEST_F(PreviewsInfoBarDelegateUnitTest, InfobarTestReloadDismissal) { |
- base::HistogramTester tester; |
- |
// Navigate to test URL, so we can reload later. |
NavigateAndCommit(GURL(kTestUrl)); |
@@ -264,9 +286,9 @@ TEST_F(PreviewsInfoBarDelegateUnitTest, InfobarTestReloadDismissal) { |
EXPECT_EQ(0U, infobar_service()->infobar_count()); |
EXPECT_FALSE(user_opt_out_.value()); |
- tester.ExpectBucketCount(kUMAPreviewsInfoBarActionLoFi, |
- PreviewsInfoBarDelegate::INFOBAR_DISMISSED_BY_RELOAD, |
- 1); |
+ tester_->ExpectBucketCount( |
+ kUMAPreviewsInfoBarActionLoFi, |
+ PreviewsInfoBarDelegate::INFOBAR_DISMISSED_BY_RELOAD, 1); |
EXPECT_EQ(0, drp_test_context_->pref_service()->GetInteger( |
data_reduction_proxy::prefs::kLoFiLoadImagesPerSession)); |
@@ -280,8 +302,6 @@ TEST_F(PreviewsInfoBarDelegateUnitTest, InfobarTestReloadDismissal) { |
} |
TEST_F(PreviewsInfoBarDelegateUnitTest, InfobarTestUserDismissal) { |
- base::HistogramTester tester; |
- |
ConfirmInfoBarDelegate* infobar = |
CreateInfoBar(previews::PreviewsType::LOFI, base::Time(), |
true /* is_data_saver_user */); |
@@ -291,17 +311,15 @@ TEST_F(PreviewsInfoBarDelegateUnitTest, InfobarTestUserDismissal) { |
infobar_service()->infobar_at(0)->RemoveSelf(); |
EXPECT_EQ(0U, infobar_service()->infobar_count()); |
- tester.ExpectBucketCount(kUMAPreviewsInfoBarActionLoFi, |
- PreviewsInfoBarDelegate::INFOBAR_DISMISSED_BY_USER, |
- 1); |
+ tester_->ExpectBucketCount(kUMAPreviewsInfoBarActionLoFi, |
+ PreviewsInfoBarDelegate::INFOBAR_DISMISSED_BY_USER, |
+ 1); |
EXPECT_EQ(0, drp_test_context_->pref_service()->GetInteger( |
data_reduction_proxy::prefs::kLoFiLoadImagesPerSession)); |
EXPECT_FALSE(user_opt_out_.value()); |
} |
TEST_F(PreviewsInfoBarDelegateUnitTest, InfobarTestTabClosedDismissal) { |
- base::HistogramTester tester; |
- |
CreateInfoBar(previews::PreviewsType::LOFI, base::Time(), |
true /* is_data_saver_user */); |
@@ -309,7 +327,7 @@ TEST_F(PreviewsInfoBarDelegateUnitTest, InfobarTestTabClosedDismissal) { |
infobar_service()->infobar_at(0)->RemoveSelf(); |
EXPECT_EQ(0U, infobar_service()->infobar_count()); |
- tester.ExpectBucketCount( |
+ tester_->ExpectBucketCount( |
kUMAPreviewsInfoBarActionLoFi, |
PreviewsInfoBarDelegate::INFOBAR_DISMISSED_BY_TAB_CLOSURE, 1); |
EXPECT_EQ(0, drp_test_context_->pref_service()->GetInteger( |
@@ -325,6 +343,7 @@ TEST_F(PreviewsInfoBarDelegateUnitTest, InfobarTestClickLinkLoFi) { |
{true}, {false}, |
}; |
for (const auto test : tests) { |
+ tester_.reset(new base::HistogramTester()); |
drp_test_context_->config()->ResetLoFiStatusForTest(); |
field_trial_list_.reset(); |
field_trial_list_.reset(new base::FieldTrialList(nullptr)); |
@@ -332,7 +351,7 @@ TEST_F(PreviewsInfoBarDelegateUnitTest, InfobarTestClickLinkLoFi) { |
base::FieldTrialList::CreateFieldTrial( |
"DataReductionProxyPreviewsBlackListTransition", "Enabled_"); |
} |
- base::HistogramTester tester; |
+ |
// Call Reload and CommitPendingNavigation to force DidFinishNavigation. |
web_contents()->GetController().Reload(content::ReloadType::NORMAL, true); |
content::WebContentsTester::For(web_contents())->CommitPendingNavigation(); |
@@ -346,7 +365,7 @@ TEST_F(PreviewsInfoBarDelegateUnitTest, InfobarTestClickLinkLoFi) { |
infobar_service()->infobar_at(0)->RemoveSelf(); |
EXPECT_EQ(0U, infobar_service()->infobar_count()); |
- tester.ExpectBucketCount( |
+ tester_->ExpectBucketCount( |
kUMAPreviewsInfoBarActionLoFi, |
PreviewsInfoBarDelegate::INFOBAR_LOAD_ORIGINAL_CLICKED, 1); |
EXPECT_EQ(test.using_previews_blacklist ? 0 : 1, |
@@ -364,8 +383,6 @@ TEST_F(PreviewsInfoBarDelegateUnitTest, InfobarTestClickLinkLoFi) { |
} |
TEST_F(PreviewsInfoBarDelegateUnitTest, InfobarTestClickLinkLitePage) { |
- base::HistogramTester tester; |
- |
NavigateAndCommit(GURL(kTestUrl)); |
ConfirmInfoBarDelegate* infobar = |
@@ -377,7 +394,7 @@ TEST_F(PreviewsInfoBarDelegateUnitTest, InfobarTestClickLinkLitePage) { |
infobar_service()->infobar_at(0)->RemoveSelf(); |
EXPECT_EQ(0U, infobar_service()->infobar_count()); |
- tester.ExpectBucketCount( |
+ tester_->ExpectBucketCount( |
kUMAPreviewsInfoBarActionLitePage, |
PreviewsInfoBarDelegate::INFOBAR_LOAD_ORIGINAL_CLICKED, 1); |
@@ -421,14 +438,12 @@ TEST_F(PreviewsInfoBarDelegateUnitTest, InfobarTestShownOncePerNavigation) { |
} |
TEST_F(PreviewsInfoBarDelegateUnitTest, LoFiInfobarTest) { |
- base::HistogramTester tester; |
- |
ConfirmInfoBarDelegate* infobar = |
CreateInfoBar(previews::PreviewsType::LOFI, base::Time(), |
true /* is_data_saver_user */); |
- tester.ExpectUniqueSample(kUMAPreviewsInfoBarActionLoFi, |
- PreviewsInfoBarDelegate::INFOBAR_SHOWN, 1); |
+ tester_->ExpectUniqueSample(kUMAPreviewsInfoBarActionLoFi, |
+ PreviewsInfoBarDelegate::INFOBAR_SHOWN, 1); |
EXPECT_EQ(1, drp_test_context_->pref_service()->GetInteger( |
data_reduction_proxy::prefs::kLoFiUIShownPerSession)); |
@@ -445,14 +460,12 @@ TEST_F(PreviewsInfoBarDelegateUnitTest, LoFiInfobarTest) { |
} |
TEST_F(PreviewsInfoBarDelegateUnitTest, PreviewInfobarTest) { |
- base::HistogramTester tester; |
- |
PreviewsInfoBarDelegate* infobar = |
CreateInfoBar(previews::PreviewsType::LITE_PAGE, base::Time(), |
true /* is_data_saver_user */); |
- tester.ExpectUniqueSample(kUMAPreviewsInfoBarActionLitePage, |
- PreviewsInfoBarDelegate::INFOBAR_SHOWN, 1); |
+ tester_->ExpectUniqueSample(kUMAPreviewsInfoBarActionLitePage, |
+ PreviewsInfoBarDelegate::INFOBAR_SHOWN, 1); |
EXPECT_EQ(1, drp_test_context_->pref_service()->GetInteger( |
data_reduction_proxy::prefs::kLoFiUIShownPerSession)); |
@@ -471,14 +484,12 @@ TEST_F(PreviewsInfoBarDelegateUnitTest, PreviewInfobarTest) { |
} |
TEST_F(PreviewsInfoBarDelegateUnitTest, OfflineInfobarNonDataSaverUserTest) { |
- base::HistogramTester tester; |
- |
PreviewsInfoBarDelegate* infobar = |
CreateInfoBar(previews::PreviewsType::OFFLINE, base::Time(), |
false /* is_data_saver_user */); |
- tester.ExpectUniqueSample(kUMAPreviewsInfoBarActionOffline, |
- PreviewsInfoBarDelegate::INFOBAR_SHOWN, 1); |
+ tester_->ExpectUniqueSample(kUMAPreviewsInfoBarActionOffline, |
+ PreviewsInfoBarDelegate::INFOBAR_SHOWN, 1); |
EXPECT_EQ(0, drp_test_context_->pref_service()->GetInteger( |
data_reduction_proxy::prefs::kLoFiUIShownPerSession)); |
@@ -497,14 +508,12 @@ TEST_F(PreviewsInfoBarDelegateUnitTest, OfflineInfobarNonDataSaverUserTest) { |
} |
TEST_F(PreviewsInfoBarDelegateUnitTest, OfflineInfobarDataSaverUserTest) { |
- base::HistogramTester tester; |
- |
PreviewsInfoBarDelegate* infobar = |
CreateInfoBar(previews::PreviewsType::OFFLINE, base::Time(), |
true /* is_data_saver_user */); |
- tester.ExpectUniqueSample(kUMAPreviewsInfoBarActionOffline, |
- PreviewsInfoBarDelegate::INFOBAR_SHOWN, 1); |
+ tester_->ExpectUniqueSample(kUMAPreviewsInfoBarActionOffline, |
+ PreviewsInfoBarDelegate::INFOBAR_SHOWN, 1); |
EXPECT_EQ(0, drp_test_context_->pref_service()->GetInteger( |
data_reduction_proxy::prefs::kLoFiUIShownPerSession)); |
@@ -523,8 +532,6 @@ TEST_F(PreviewsInfoBarDelegateUnitTest, OfflineInfobarDataSaverUserTest) { |
} |
TEST_F(PreviewsInfoBarDelegateUnitTest, OfflineInfobarDisablesLoFi) { |
- base::HistogramTester tester; |
- |
TestPreviewsWebContentsObserver::FromWebContents(web_contents()) |
->set_should_have_page_id(false); |
@@ -534,8 +541,8 @@ TEST_F(PreviewsInfoBarDelegateUnitTest, OfflineInfobarDisablesLoFi) { |
CreateInfoBar(previews::PreviewsType::OFFLINE, base::Time(), |
true /* is_data_saver_user */); |
- tester.ExpectUniqueSample(kUMAPreviewsInfoBarActionOffline, |
- PreviewsInfoBarDelegate::INFOBAR_SHOWN, 1); |
+ tester_->ExpectUniqueSample(kUMAPreviewsInfoBarActionOffline, |
+ PreviewsInfoBarDelegate::INFOBAR_SHOWN, 1); |
// Simulate clicking the infobar link. |
if (infobar->LinkClicked(WindowOpenDisposition::CURRENT_TAB)) |
@@ -558,8 +565,6 @@ TEST_F(PreviewsInfoBarDelegateUnitTest, OfflineInfobarDisablesLoFi) { |
} |
TEST_F(PreviewsInfoBarDelegateUnitTest, PingbackClientClearedTabClosed) { |
- base::HistogramTester tester; |
- |
NavigateAndCommit(GURL(kTestUrl)); |
ConfirmInfoBarDelegate* infobar = |
@@ -571,7 +576,7 @@ TEST_F(PreviewsInfoBarDelegateUnitTest, PingbackClientClearedTabClosed) { |
infobar_service()->infobar_at(0)->RemoveSelf(); |
EXPECT_EQ(0U, infobar_service()->infobar_count()); |
- tester.ExpectBucketCount( |
+ tester_->ExpectBucketCount( |
kUMAPreviewsInfoBarActionLitePage, |
PreviewsInfoBarDelegate::INFOBAR_LOAD_ORIGINAL_CLICKED, 1); |
@@ -608,47 +613,73 @@ TEST_F(PreviewsInfoBarDelegateUnitTest, PingbackClientClearedTabClosed) { |
->OptOutsSizeForTesting()); |
} |
-TEST_F(PreviewsInfoBarDelegateUnitTest, PreviewInfobarTimestampMintuesTest) { |
- EnableStalePreviewsTimestamp(); |
- |
+TEST_F(PreviewsInfoBarDelegateUnitTest, PreviewInfobarTimestampMinutesTest) { |
+ // Use default params. |
+ std::map<std::string, std::string> variation_params; |
+ 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 */); |
- |
- ASSERT_EQ( |
+ TestStalePreviews( |
+ staleness_in_minutes, |
l10n_util::GetStringFUTF16(IDS_PREVIEWS_INFOBAR_TIMESTAMP_MINUTES, |
base::IntToString16(staleness_in_minutes)), |
- infobar->GetTimestampText()); |
+ PreviewsInfoBarDelegate::TIMESTAMP_SHOWN); |
} |
TEST_F(PreviewsInfoBarDelegateUnitTest, PreviewInfobarTimestampHourTest) { |
- EnableStalePreviewsTimestamp(); |
- |
+ // Use default variation_params. |
+ std::map<std::string, std::string> variation_params; |
+ EnableStalePreviewsTimestamp(variation_params); |
int staleness_in_minutes = 65; |
- PreviewsInfoBarDelegate* infobar = CreateInfoBar( |
- previews::PreviewsType::LITE_PAGE, |
- 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), |
- infobar->GetTimestampText()); |
+ TestStalePreviews( |
+ staleness_in_minutes, |
+ l10n_util::GetStringUTF16(IDS_PREVIEWS_INFOBAR_TIMESTAMP_ONE_HOUR), |
+ PreviewsInfoBarDelegate::TIMESTAMP_SHOWN); |
} |
TEST_F(PreviewsInfoBarDelegateUnitTest, PreviewInfobarTimestampHoursTest) { |
- EnableStalePreviewsTimestamp(); |
- |
+ // Use default variation_params. |
+ std::map<std::string, std::string> variation_params; |
+ EnableStalePreviewsTimestamp(variation_params); |
int staleness_in_hours = 2; |
- PreviewsInfoBarDelegate* infobar = CreateInfoBar( |
- previews::PreviewsType::LITE_PAGE, |
- base::Time::Now() - base::TimeDelta::FromHours(staleness_in_hours), |
- true /* is_data_saver_user */); |
+ TestStalePreviews( |
+ staleness_in_hours * 60, |
+ l10n_util::GetStringFUTF16(IDS_PREVIEWS_INFOBAR_TIMESTAMP_HOURS, |
+ base::IntToString16(staleness_in_hours)), |
+ PreviewsInfoBarDelegate::TIMESTAMP_SHOWN); |
+} |
+ |
+TEST_F(PreviewsInfoBarDelegateUnitTest, PreviewInfobarTimestampFinchParamsUMA) { |
+ 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); |
+ |
+ TestStalePreviews( |
+ 1, |
+ l10n_util::GetStringFUTF16(IDS_PREVIEWS_INFOBAR_TIMESTAMP_MINUTES, |
+ base::IntToString16(1)), |
+ PreviewsInfoBarDelegate::TIMESTAMP_SHOWN); |
+ |
+ TestStalePreviews( |
+ 6, base::string16(), |
+ PreviewsInfoBarDelegate::TIMESTAMP_NOT_SHOWN_STALENESS_GREATER_THAN_MAX); |
+} |
- ASSERT_EQ(l10n_util::GetStringFUTF16(IDS_PREVIEWS_INFOBAR_TIMESTAMP_HOURS, |
- base::IntToString16(staleness_in_hours)), |
- infobar->GetTimestampText()); |
+TEST_F(PreviewsInfoBarDelegateUnitTest, PreviewInfobarTimestampUMA) { |
+ // Use default params. |
+ std::map<std::string, std::string> variation_params; |
+ EnableStalePreviewsTimestamp(variation_params); |
+ |
+ TestStalePreviews( |
+ 1, base::string16(), |
+ PreviewsInfoBarDelegate::TIMESTAMP_NOT_SHOWN_PREVIEW_NOT_STALE); |
+ TestStalePreviews( |
+ -1, base::string16(), |
+ PreviewsInfoBarDelegate::TIMESTAMP_NOT_SHOWN_STALENESS_NEGATIVE); |
+ TestStalePreviews( |
+ 1441, base::string16(), |
+ PreviewsInfoBarDelegate::TIMESTAMP_NOT_SHOWN_STALENESS_GREATER_THAN_MAX); |
} |