Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1973)

Unified Diff: chrome/browser/previews/previews_infobar_delegate_unittest.cc

Issue 2949173002: UMA for the Stale Previews timestamp (Closed)
Patch Set: comments Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/previews/previews_infobar_delegate.cc ('k') | tools/metrics/histograms/enums.xml » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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);
}
« no previous file with comments | « chrome/browser/previews/previews_infobar_delegate.cc ('k') | tools/metrics/histograms/enums.xml » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698