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

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

Issue 2940083003: Add timestamp to infobar for stale Previews (Closed)
Patch Set: test fixes 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
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 d18bee15841fef558567358cf141515c517c853c..107da1d9e9a50ab2046207a4a3e93e6cc09aefa6 100644
--- a/chrome/browser/previews/previews_infobar_delegate_unittest.cc
+++ b/chrome/browser/previews/previews_infobar_delegate_unittest.cc
@@ -9,11 +9,15 @@
#include "base/bind.h"
#include "base/bind_helpers.h"
+#include "base/feature_list.h"
#include "base/memory/ptr_util.h"
#include "base/metrics/field_trial.h"
+#include "base/metrics/field_trial_params.h"
#include "base/optional.h"
#include "base/test/histogram_tester.h"
+#include "base/test/scoped_feature_list.h"
#include "base/threading/thread_task_runner_handle.h"
+#include "base/time/time.h"
#include "chrome/browser/android/android_theme_resources.h"
#include "chrome/browser/infobars/infobar_service.h"
#include "chrome/browser/loader/chrome_navigation_data.h"
@@ -22,6 +26,7 @@
#include "chrome/browser/previews/previews_infobar_tab_helper.h"
#include "chrome/grit/generated_resources.h"
#include "chrome/test/base/chrome_render_view_host_test_harness.h"
+#include "chrome/test/base/testing_browser_process.h"
#include "components/data_reduction_proxy/core/browser/data_reduction_proxy_config_test_utils.h"
#include "components/data_reduction_proxy/core/browser/data_reduction_proxy_data.h"
#include "components/data_reduction_proxy/core/browser/data_reduction_proxy_pingback_client.h"
@@ -32,9 +37,12 @@
#include "components/infobars/core/confirm_infobar_delegate.h"
#include "components/infobars/core/infobar.h"
#include "components/infobars/core/infobar_delegate.h"
+#include "components/network_time/network_time_test_utils.h"
#include "components/prefs/pref_registry_simple.h"
#include "components/previews/core/previews_experiments.h"
+#include "components/previews/core/previews_features.h"
#include "components/proxy_config/proxy_config_pref_names.h"
+#include "components/variations/variations_associated_data.h"
#include "content/public/browser/navigation_entry.h"
#include "content/public/browser/navigation_handle.h"
#include "content/public/browser/reload_type.h"
@@ -111,6 +119,9 @@ DEFINE_WEB_CONTENTS_USER_DATA_KEY(TestPreviewsWebContentsObserver);
class PreviewsInfoBarDelegateUnitTest : public ChromeRenderViewHostTestHarness {
protected:
+ PreviewsInfoBarDelegateUnitTest()
+ : field_trial_list_(new base::FieldTrialList(nullptr)) {}
+
void SetUp() override {
ChromeRenderViewHostTestHarness::SetUp();
InfoBarService::CreateForWebContents(web_contents());
@@ -139,17 +150,23 @@ class PreviewsInfoBarDelegateUnitTest : public ChromeRenderViewHostTestHarness {
base::WrapUnique(new data_reduction_proxy::DataStore()),
base::ThreadTaskRunnerHandle::Get(),
base::ThreadTaskRunnerHandle::Get());
+
+ TestingBrowserProcess::GetGlobal()->SetLocalState(
+ drp_test_context_->pref_service());
+ network_time::NetworkTimeTracker::RegisterPrefs(registry);
}
void TearDown() override {
drp_test_context_->DestroySettings();
ChromeRenderViewHostTestHarness::TearDown();
+ TestingBrowserProcess::GetGlobal()->SetLocalState(nullptr);
}
- ConfirmInfoBarDelegate* CreateInfoBar(previews::PreviewsType type,
- bool is_data_saver_user) {
+ PreviewsInfoBarDelegate* CreateInfoBar(previews::PreviewsType type,
+ base::Time previews_freshness,
+ bool is_data_saver_user) {
PreviewsInfoBarDelegate::Create(
- web_contents(), type, is_data_saver_user,
+ web_contents(), type, previews_freshness, is_data_saver_user,
base::Bind(&PreviewsInfoBarDelegateUnitTest::OnDismissPreviewsInfobar,
base::Unretained(this)));
@@ -157,9 +174,27 @@ class PreviewsInfoBarDelegateUnitTest : public ChromeRenderViewHostTestHarness {
InfoBarService::FromWebContents(web_contents());
EXPECT_EQ(1U, infobar_service->infobar_count());
- return infobar_service->infobar_at(0)
- ->delegate()
- ->AsConfirmInfoBarDelegate();
+ return static_cast<PreviewsInfoBarDelegate*>(
+ infobar_service->infobar_at(0)->delegate());
+ }
+
+ void EnableStalePreviewsTimestamp() {
+ 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);
+
+ std::unique_ptr<base::FeatureList> feature_list(new base::FeatureList);
+ feature_list->RegisterFieldTrialOverride(
+ previews::features::kStalePreviewsTimestamp.name,
+ base::FeatureList::OVERRIDE_ENABLE_FEATURE, field_trial);
+ scoped_feature_list_.InitWithFeatureList(std::move(feature_list));
}
void OnDismissPreviewsInfobar(bool user_opt_out) {
@@ -174,18 +209,21 @@ class PreviewsInfoBarDelegateUnitTest : public ChromeRenderViewHostTestHarness {
drp_test_context_;
base::Optional<bool> user_opt_out_;
+ std::unique_ptr<base::FieldTrialList> field_trial_list_;
+ base::test::ScopedFeatureList scoped_feature_list_;
};
TEST_F(PreviewsInfoBarDelegateUnitTest, InfobarTestNavigationDismissal) {
base::HistogramTester tester;
- CreateInfoBar(previews::PreviewsType::LOFI, true /* is_data_saver_user */);
+ CreateInfoBar(previews::PreviewsType::LOFI, base::Time(),
+ true /* is_data_saver_user */);
// Try showing a second infobar. Another should not be shown since the page
// has not navigated.
PreviewsInfoBarDelegate::Create(
web_contents(), previews::PreviewsType::LOFI,
- true /* is_data_saver_user */,
+ base::Time() /* previews_freshness */, true /* is_data_saver_user */,
PreviewsInfoBarDelegate::OnDismissPreviewsInfobarCallback());
EXPECT_EQ(1U, infobar_service()->infobar_count());
@@ -207,13 +245,14 @@ TEST_F(PreviewsInfoBarDelegateUnitTest, InfobarTestReloadDismissal) {
// Navigate to test URL, so we can reload later.
NavigateAndCommit(GURL(kTestUrl));
- CreateInfoBar(previews::PreviewsType::LOFI, true /* is_data_saver_user */);
+ CreateInfoBar(previews::PreviewsType::LOFI, base::Time(),
+ true /* is_data_saver_user */);
// Try showing a second infobar. Another should not be shown since the page
// has not navigated.
PreviewsInfoBarDelegate::Create(
web_contents(), previews::PreviewsType::LOFI,
- true /* is_data_saver_user */,
+ base::Time() /* previews_freshness */, true /* is_data_saver_user */,
PreviewsInfoBarDelegate::OnDismissPreviewsInfobarCallback());
EXPECT_EQ(1U, infobar_service()->infobar_count());
@@ -243,8 +282,9 @@ TEST_F(PreviewsInfoBarDelegateUnitTest, InfobarTestReloadDismissal) {
TEST_F(PreviewsInfoBarDelegateUnitTest, InfobarTestUserDismissal) {
base::HistogramTester tester;
- ConfirmInfoBarDelegate* infobar = CreateInfoBar(
- previews::PreviewsType::LOFI, true /* is_data_saver_user */);
+ ConfirmInfoBarDelegate* infobar =
+ CreateInfoBar(previews::PreviewsType::LOFI, base::Time(),
+ true /* is_data_saver_user */);
// Simulate dismissing the infobar.
infobar->InfoBarDismissed();
@@ -262,7 +302,8 @@ TEST_F(PreviewsInfoBarDelegateUnitTest, InfobarTestUserDismissal) {
TEST_F(PreviewsInfoBarDelegateUnitTest, InfobarTestTabClosedDismissal) {
base::HistogramTester tester;
- CreateInfoBar(previews::PreviewsType::LOFI, true /* is_data_saver_user */);
+ CreateInfoBar(previews::PreviewsType::LOFI, base::Time(),
+ true /* is_data_saver_user */);
// Delete the infobar without any other infobar actions.
infobar_service()->infobar_at(0)->RemoveSelf();
@@ -285,7 +326,8 @@ TEST_F(PreviewsInfoBarDelegateUnitTest, InfobarTestClickLinkLoFi) {
};
for (const auto test : tests) {
drp_test_context_->config()->ResetLoFiStatusForTest();
- base::FieldTrialList field_trial_list(nullptr);
+ field_trial_list_.reset();
+ field_trial_list_.reset(new base::FieldTrialList(nullptr));
if (test.using_previews_blacklist) {
base::FieldTrialList::CreateFieldTrial(
"DataReductionProxyPreviewsBlackListTransition", "Enabled_");
@@ -295,8 +337,9 @@ TEST_F(PreviewsInfoBarDelegateUnitTest, InfobarTestClickLinkLoFi) {
web_contents()->GetController().Reload(content::ReloadType::NORMAL, true);
content::WebContentsTester::For(web_contents())->CommitPendingNavigation();
- ConfirmInfoBarDelegate* infobar = CreateInfoBar(
- previews::PreviewsType::LOFI, true /* is_data_saver_user */);
+ ConfirmInfoBarDelegate* infobar =
+ CreateInfoBar(previews::PreviewsType::LOFI, base::Time(),
+ true /* is_data_saver_user */);
// Simulate clicking the infobar link.
if (infobar->LinkClicked(WindowOpenDisposition::CURRENT_TAB))
@@ -325,8 +368,9 @@ TEST_F(PreviewsInfoBarDelegateUnitTest, InfobarTestClickLinkLitePage) {
NavigateAndCommit(GURL(kTestUrl));
- ConfirmInfoBarDelegate* infobar = CreateInfoBar(
- previews::PreviewsType::LITE_PAGE, true /* is_data_saver_user */);
+ ConfirmInfoBarDelegate* infobar =
+ CreateInfoBar(previews::PreviewsType::LITE_PAGE, base::Time(),
+ true /* is_data_saver_user */);
// Simulate clicking the infobar link.
if (infobar->LinkClicked(WindowOpenDisposition::CURRENT_TAB))
@@ -353,8 +397,9 @@ TEST_F(PreviewsInfoBarDelegateUnitTest, InfobarTestClickLinkLitePage) {
}
TEST_F(PreviewsInfoBarDelegateUnitTest, InfobarTestShownOncePerNavigation) {
- ConfirmInfoBarDelegate* infobar = CreateInfoBar(
- previews::PreviewsType::LOFI, true /* is_data_saver_user */);
+ ConfirmInfoBarDelegate* infobar =
+ CreateInfoBar(previews::PreviewsType::LOFI, base::Time(),
+ true /* is_data_saver_user */);
// Simulate dismissing the infobar.
infobar->InfoBarDismissed();
@@ -363,7 +408,7 @@ TEST_F(PreviewsInfoBarDelegateUnitTest, InfobarTestShownOncePerNavigation) {
PreviewsInfoBarDelegate::Create(
web_contents(), previews::PreviewsType::LOFI,
- true /* is_data_saver_user */,
+ base::Time() /* previews_freshness */, true /* is_data_saver_user */,
PreviewsInfoBarDelegate::OnDismissPreviewsInfobarCallback());
// Infobar should not be shown again since a navigation hasn't happened.
@@ -371,14 +416,16 @@ TEST_F(PreviewsInfoBarDelegateUnitTest, InfobarTestShownOncePerNavigation) {
// Navigate and show infobar again.
NavigateAndCommit(GURL(kTestUrl));
- CreateInfoBar(previews::PreviewsType::LOFI, true /* is_data_saver_user */);
+ CreateInfoBar(previews::PreviewsType::LOFI, base::Time(),
+ true /* is_data_saver_user */);
}
TEST_F(PreviewsInfoBarDelegateUnitTest, LoFiInfobarTest) {
base::HistogramTester tester;
- ConfirmInfoBarDelegate* infobar = CreateInfoBar(
- previews::PreviewsType::LOFI, true /* is_data_saver_user */);
+ ConfirmInfoBarDelegate* infobar =
+ CreateInfoBar(previews::PreviewsType::LOFI, base::Time(),
+ true /* is_data_saver_user */);
tester.ExpectUniqueSample(kUMAPreviewsInfoBarActionLoFi,
PreviewsInfoBarDelegate::INFOBAR_SHOWN, 1);
@@ -400,8 +447,9 @@ TEST_F(PreviewsInfoBarDelegateUnitTest, LoFiInfobarTest) {
TEST_F(PreviewsInfoBarDelegateUnitTest, PreviewInfobarTest) {
base::HistogramTester tester;
- ConfirmInfoBarDelegate* infobar = CreateInfoBar(
- previews::PreviewsType::LITE_PAGE, true /* is_data_saver_user */);
+ PreviewsInfoBarDelegate* infobar =
+ CreateInfoBar(previews::PreviewsType::LITE_PAGE, base::Time(),
+ true /* is_data_saver_user */);
tester.ExpectUniqueSample(kUMAPreviewsInfoBarActionLitePage,
PreviewsInfoBarDelegate::INFOBAR_SHOWN, 1);
@@ -414,6 +462,7 @@ TEST_F(PreviewsInfoBarDelegateUnitTest, PreviewInfobarTest) {
infobar->GetMessageText());
ASSERT_EQ(l10n_util::GetStringUTF16(IDS_PREVIEWS_INFOBAR_LINK),
infobar->GetLinkText());
+ ASSERT_EQ(base::string16(), infobar->GetTimestampText());
#if defined(OS_ANDROID)
ASSERT_EQ(IDR_ANDROID_INFOBAR_PREVIEWS, infobar->GetIconId());
#else
@@ -424,8 +473,9 @@ TEST_F(PreviewsInfoBarDelegateUnitTest, PreviewInfobarTest) {
TEST_F(PreviewsInfoBarDelegateUnitTest, OfflineInfobarNonDataSaverUserTest) {
base::HistogramTester tester;
- ConfirmInfoBarDelegate* infobar = CreateInfoBar(
- previews::PreviewsType::OFFLINE, false /* is_data_saver_user */);
+ PreviewsInfoBarDelegate* infobar =
+ CreateInfoBar(previews::PreviewsType::OFFLINE, base::Time(),
+ false /* is_data_saver_user */);
tester.ExpectUniqueSample(kUMAPreviewsInfoBarActionOffline,
PreviewsInfoBarDelegate::INFOBAR_SHOWN, 1);
@@ -438,6 +488,7 @@ TEST_F(PreviewsInfoBarDelegateUnitTest, OfflineInfobarNonDataSaverUserTest) {
infobar->GetMessageText());
ASSERT_EQ(l10n_util::GetStringUTF16(IDS_PREVIEWS_INFOBAR_LINK),
infobar->GetLinkText());
+ ASSERT_EQ(base::string16(), infobar->GetTimestampText());
#if defined(OS_ANDROID)
ASSERT_EQ(IDR_ANDROID_INFOBAR_PREVIEWS, infobar->GetIconId());
#else
@@ -448,8 +499,9 @@ TEST_F(PreviewsInfoBarDelegateUnitTest, OfflineInfobarNonDataSaverUserTest) {
TEST_F(PreviewsInfoBarDelegateUnitTest, OfflineInfobarDataSaverUserTest) {
base::HistogramTester tester;
- ConfirmInfoBarDelegate* infobar = CreateInfoBar(
- previews::PreviewsType::OFFLINE, true /* is_data_saver_user */);
+ PreviewsInfoBarDelegate* infobar =
+ CreateInfoBar(previews::PreviewsType::OFFLINE, base::Time(),
+ true /* is_data_saver_user */);
tester.ExpectUniqueSample(kUMAPreviewsInfoBarActionOffline,
PreviewsInfoBarDelegate::INFOBAR_SHOWN, 1);
@@ -462,6 +514,7 @@ TEST_F(PreviewsInfoBarDelegateUnitTest, OfflineInfobarDataSaverUserTest) {
infobar->GetMessageText());
ASSERT_EQ(l10n_util::GetStringUTF16(IDS_PREVIEWS_INFOBAR_LINK),
infobar->GetLinkText());
+ ASSERT_EQ(base::string16(), infobar->GetTimestampText());
#if defined(OS_ANDROID)
ASSERT_EQ(IDR_ANDROID_INFOBAR_PREVIEWS, infobar->GetIconId());
#else
@@ -477,8 +530,9 @@ TEST_F(PreviewsInfoBarDelegateUnitTest, OfflineInfobarDisablesLoFi) {
NavigateAndCommit(GURL(kTestUrl));
- ConfirmInfoBarDelegate* infobar = CreateInfoBar(
- previews::PreviewsType::OFFLINE, true /* is_data_saver_user */);
+ ConfirmInfoBarDelegate* infobar =
+ CreateInfoBar(previews::PreviewsType::OFFLINE, base::Time(),
+ true /* is_data_saver_user */);
tester.ExpectUniqueSample(kUMAPreviewsInfoBarActionOffline,
PreviewsInfoBarDelegate::INFOBAR_SHOWN, 1);
@@ -508,8 +562,9 @@ TEST_F(PreviewsInfoBarDelegateUnitTest, PingbackClientClearedTabClosed) {
NavigateAndCommit(GURL(kTestUrl));
- ConfirmInfoBarDelegate* infobar = CreateInfoBar(
- previews::PreviewsType::LITE_PAGE, true /* is_data_saver_user */);
+ ConfirmInfoBarDelegate* infobar =
+ CreateInfoBar(previews::PreviewsType::LITE_PAGE, base::Time(),
+ true /* is_data_saver_user */);
// Simulate clicking the infobar link.
if (infobar->LinkClicked(WindowOpenDisposition::CURRENT_TAB))
@@ -552,3 +607,48 @@ TEST_F(PreviewsInfoBarDelegateUnitTest, PingbackClientClearedTabClosed) {
->pingback_client()
->OptOutsSizeForTesting());
}
+
+TEST_F(PreviewsInfoBarDelegateUnitTest, PreviewInfobarTimestampMintuesTest) {
+ EnableStalePreviewsTimestamp();
+
+ 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(
+ l10n_util::GetStringFUTF16(IDS_PREVIEWS_INFOBAR_TIMESTAMP_MINUTES,
+ base::IntToString16(staleness_in_minutes)),
+ infobar->GetTimestampText());
tbansal1 2017/06/19 20:52:29 For my own understanding: Should not infobar->GetT
megjablon 2017/06/20 18:42:12 No, GetTimestampText() only returns the timestamp
+}
+
+TEST_F(PreviewsInfoBarDelegateUnitTest, PreviewInfobarTimestampHourTest) {
+ EnableStalePreviewsTimestamp();
+
+ 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());
+}
+
+TEST_F(PreviewsInfoBarDelegateUnitTest, PreviewInfobarTimestampHoursTest) {
+ EnableStalePreviewsTimestamp();
+
+ 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 */);
+
+ ASSERT_EQ(l10n_util::GetStringFUTF16(IDS_PREVIEWS_INFOBAR_TIMESTAMP_HOURS,
+ base::IntToString16(staleness_in_hours)),
+ infobar->GetTimestampText());
+}

Powered by Google App Engine
This is Rietveld 408576698