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()); |
+} |