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

Unified Diff: chrome/browser/ntp_snippets/download_suggestions_provider_unittest.cc

Issue 2673633002: [NTP::Downloads] Do not show old downloads. (Closed)
Patch Set: Created 3 years, 11 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/ntp_snippets/download_suggestions_provider_unittest.cc
diff --git a/chrome/browser/ntp_snippets/download_suggestions_provider_unittest.cc b/chrome/browser/ntp_snippets/download_suggestions_provider_unittest.cc
index 3afefa76b8b2927de7dfa9cdf662bdfca1ad0f5e..6f1afdab47d5fb741045c8756ddf45442733f10a 100644
--- a/chrome/browser/ntp_snippets/download_suggestions_provider_unittest.cc
+++ b/chrome/browser/ntp_snippets/download_suggestions_provider_unittest.cc
@@ -10,6 +10,8 @@
#include "base/memory/ptr_util.h"
#include "base/observer_list.h"
#include "base/strings/string_number_conversions.h"
+#include "base/test/simple_test_clock.h"
+#include "base/time/default_clock.h"
#include "chrome/browser/ntp_snippets/fake_download_item.h"
#include "components/ntp_snippets/category.h"
#include "components/ntp_snippets/mock_content_suggestions_provider_observer.h"
@@ -268,15 +270,19 @@ class DownloadSuggestionsProviderTest : public testing::Test {
EXPECT_CALL(observer_, OnSuggestionInvalidated(_, _)).Times(AnyNumber());
}
- DownloadSuggestionsProvider* CreateLoadedProvider(bool show_assets,
- bool show_offline_pages) {
- CreateProvider(show_assets, show_offline_pages);
+ DownloadSuggestionsProvider* CreateLoadedProvider(
+ bool show_assets,
+ bool show_offline_pages,
+ std::unique_ptr<base::Clock> clock) {
+ CreateProvider(show_assets, show_offline_pages, std::move(clock));
FireHistoryQueryComplete();
return provider_.get();
}
- DownloadSuggestionsProvider* CreateProvider(bool show_assets,
- bool show_offline_pages) {
+ DownloadSuggestionsProvider* CreateProvider(
+ bool show_assets,
+ bool show_offline_pages,
+ std::unique_ptr<base::Clock> clock) {
DCHECK(!provider_);
DCHECK(show_assets || show_offline_pages);
@@ -285,7 +291,7 @@ class DownloadSuggestionsProviderTest : public testing::Test {
provider_ = base::MakeUnique<DownloadSuggestionsProvider>(
&observer_, show_offline_pages ? &offline_pages_model_ : nullptr,
show_assets ? &downloads_manager_ : nullptr, &download_history_,
- pref_service());
+ pref_service(), std::move(clock));
return provider_.get();
}
@@ -386,7 +392,8 @@ TEST_F(DownloadSuggestionsProviderTest,
HasDownloadSuggestionExtra(
/*is_download_asset=*/false,
FILE_PATH_LITERAL(""), "")))));
- CreateLoadedProvider(/*show_assets=*/true, /*show_offline_pages=*/true);
+ CreateLoadedProvider(/*show_assets=*/true, /*show_offline_pages=*/true,
+ base::MakeUnique<base::DefaultClock>());
}
TEST_F(DownloadSuggestionsProviderTest,
@@ -396,7 +403,8 @@ TEST_F(DownloadSuggestionsProviderTest,
EXPECT_CALL(*observer(),
OnNewSuggestions(_, downloads_category(), SizeIs(0)));
- CreateLoadedProvider(/*show_assets=*/true, /*show_offline_pages=*/true);
+ CreateLoadedProvider(/*show_assets=*/true, /*show_offline_pages=*/true,
+ base::MakeUnique<base::DefaultClock>());
std::vector<std::unique_ptr<FakeDownloadItem>> asset_downloads =
CreateDummyAssetDownloads({1, 2});
@@ -437,7 +445,8 @@ TEST_F(DownloadSuggestionsProviderTest, ShouldMixInBothSources) {
UnorderedElementsAre(
HasUrl("http://dummy.com/1"),
HasUrl("http://dummy.com/2"))));
- CreateLoadedProvider(/*show_assets=*/true, /*show_offline_pages=*/true);
+ CreateLoadedProvider(/*show_assets=*/true, /*show_offline_pages=*/true,
+ base::MakeUnique<base::DefaultClock>());
std::vector<std::unique_ptr<FakeDownloadItem>> asset_downloads =
CreateDummyAssetDownloads({1, 2});
@@ -478,7 +487,8 @@ TEST_F(DownloadSuggestionsProviderTest, ShouldSortSuggestions) {
OnNewSuggestions(_, downloads_category(),
ElementsAre(HasUrl("http://dummy.com/2"),
HasUrl("http://dummy.com/1"))));
- CreateLoadedProvider(/*show_assets=*/true, /*show_offline_pages=*/true);
+ CreateLoadedProvider(/*show_assets=*/true, /*show_offline_pages=*/true,
+ base::MakeUnique<base::DefaultClock>());
std::vector<std::unique_ptr<FakeDownloadItem>> asset_downloads;
asset_downloads.push_back(CreateDummyAssetDownload(3, next_week));
@@ -513,7 +523,8 @@ TEST_F(DownloadSuggestionsProviderTest,
HasUrl("http://dummy.com/2"),
HasUrl("http://download.com/1"),
HasUrl("http://download.com/2"))));
- CreateLoadedProvider(/*show_assets=*/true, /*show_offline_pages=*/true);
+ CreateLoadedProvider(/*show_assets=*/true, /*show_offline_pages=*/true,
+ base::MakeUnique<base::DefaultClock>());
EXPECT_CALL(*observer(), OnNewSuggestions(_, _, _)).Times(0);
EXPECT_CALL(*observer(), OnSuggestionInvalidated(_, _)).Times(0);
@@ -539,7 +550,8 @@ TEST_F(DownloadSuggestionsProviderTest,
HasUrl("http://dummy.com/2"),
HasUrl("http://download.com/1"),
HasUrl("http://download.com/2"))));
- CreateLoadedProvider(/*show_assets=*/true, /*show_offline_pages=*/true);
+ CreateLoadedProvider(/*show_assets=*/true, /*show_offline_pages=*/true,
+ base::MakeUnique<base::DefaultClock>());
provider()->DismissSuggestion(
GetDummySuggestionId(1, /*is_offline_page=*/true));
@@ -567,7 +579,8 @@ TEST_F(DownloadSuggestionsProviderTest, ShouldReturnDismissedSuggestions) {
HasUrl("http://dummy.com/2"),
HasUrl("http://download.com/1"),
HasUrl("http://download.com/2"))));
- CreateLoadedProvider(/*show_assets=*/true, /*show_offline_pages=*/true);
+ CreateLoadedProvider(/*show_assets=*/true, /*show_offline_pages=*/true,
+ base::MakeUnique<base::DefaultClock>());
provider()->DismissSuggestion(
GetDummySuggestionId(1, /*is_offline_page=*/true));
@@ -591,7 +604,8 @@ TEST_F(DownloadSuggestionsProviderTest, ShouldClearDismissedSuggestions) {
HasUrl("http://dummy.com/2"),
HasUrl("http://download.com/1"),
HasUrl("http://download.com/2"))));
- CreateLoadedProvider(/*show_assets=*/true, /*show_offline_pages=*/true);
+ CreateLoadedProvider(/*show_assets=*/true, /*show_offline_pages=*/true,
+ base::MakeUnique<base::DefaultClock>());
provider()->DismissSuggestion(
GetDummySuggestionId(1, /*is_offline_page=*/true));
@@ -622,7 +636,8 @@ TEST_F(DownloadSuggestionsProviderTest,
HasUrl("http://dummy.com/2"),
HasUrl("http://download.com/1"),
HasUrl("http://download.com/2"))));
- CreateLoadedProvider(/*show_assets=*/true, /*show_offline_pages=*/true);
+ CreateLoadedProvider(/*show_assets=*/true, /*show_offline_pages=*/true,
+ base::MakeUnique<base::DefaultClock>());
provider()->DismissSuggestion(
GetDummySuggestionId(1, /*is_offline_page=*/true));
@@ -652,7 +667,8 @@ TEST_F(DownloadSuggestionsProviderTest, ShouldReplaceDismissedItemWithNewData) {
HasUrl("http://download.com/3"),
HasUrl("http://download.com/4"),
HasUrl("http://download.com/5"))));
- CreateLoadedProvider(/*show_assets=*/true, /*show_offline_pages=*/true);
+ CreateLoadedProvider(/*show_assets=*/true, /*show_offline_pages=*/true,
+ base::MakeUnique<base::DefaultClock>());
provider()->DismissSuggestion(
GetDummySuggestionId(1, /*is_offline_page=*/false));
@@ -684,7 +700,8 @@ TEST_F(DownloadSuggestionsProviderTest,
UnorderedElementsAre(HasUrl("http://dummy.com/1"),
HasUrl("http://dummy.com/2"),
HasUrl("http://download.com/1"))));
- CreateLoadedProvider(/*show_assets=*/true, /*show_offline_pages=*/true);
+ CreateLoadedProvider(/*show_assets=*/true, /*show_offline_pages=*/true,
+ base::MakeUnique<base::DefaultClock>());
// We add another item manually, so that when it gets deleted it is not
// present in DownloadsManager list.
@@ -724,7 +741,8 @@ TEST_F(DownloadSuggestionsProviderTest, ShouldReplaceRemovedItemWithNewData) {
HasUrl("http://download.com/3"),
HasUrl("http://download.com/4"),
HasUrl("http://download.com/5"))));
- CreateLoadedProvider(/*show_assets=*/true, /*show_offline_pages=*/true);
+ CreateLoadedProvider(/*show_assets=*/true, /*show_offline_pages=*/true,
+ base::MakeUnique<base::DefaultClock>());
// Note that |CreateDummyAssetDownloads| creates items "downloaded" before
// |base::Time::Now()|, so for a new item the time is set in future to enforce
@@ -768,7 +786,8 @@ TEST_F(DownloadSuggestionsProviderTest, ShouldPruneOfflinePagesDismissedIDs) {
HasUrl("http://dummy.com/1"),
HasUrl("http://dummy.com/2"),
HasUrl("http://dummy.com/3"))));
- CreateLoadedProvider(/*show_assets=*/true, /*show_offline_pages=*/true);
+ CreateLoadedProvider(/*show_assets=*/true, /*show_offline_pages=*/true,
+ base::MakeUnique<base::DefaultClock>());
provider()->DismissSuggestion(
GetDummySuggestionId(1, /*is_offline_page=*/true));
@@ -798,7 +817,8 @@ TEST_F(DownloadSuggestionsProviderTest, ShouldPruneAssetDownloadsDismissedIDs) {
OnNewSuggestions(_, downloads_category(),
UnorderedElementsAre(HasUrl("http://download.com/1"),
HasUrl("http://download.com/2"))));
- CreateLoadedProvider(/*show_assets=*/true, /*show_offline_pages=*/true);
+ CreateLoadedProvider(/*show_assets=*/true, /*show_offline_pages=*/true,
+ base::MakeUnique<base::DefaultClock>());
provider()->DismissSuggestion(
GetDummySuggestionId(1, /*is_offline_page=*/false));
@@ -820,7 +840,8 @@ TEST_F(DownloadSuggestionsProviderTest,
OnNewSuggestions(_, downloads_category(),
UnorderedElementsAre(HasUrl("http://download.com/1"),
HasUrl("http://download.com/2"))));
- CreateLoadedProvider(/*show_assets=*/true, /*show_offline_pages=*/true);
+ CreateLoadedProvider(/*show_assets=*/true, /*show_offline_pages=*/true,
+ base::MakeUnique<base::DefaultClock>());
}
TEST_F(DownloadSuggestionsProviderTest,
@@ -828,7 +849,8 @@ TEST_F(DownloadSuggestionsProviderTest,
IgnoreOnCategoryStatusChangedToAvailable();
EXPECT_CALL(*observer(), OnNewSuggestions(_, _, _)).Times(0);
- CreateProvider(/*show_assets=*/true, /*show_offline_pages=*/true);
+ CreateProvider(/*show_assets=*/true, /*show_offline_pages=*/true,
+ base::MakeUnique<base::DefaultClock>());
*(downloads_manager()->mutable_items()) = CreateDummyAssetDownloads({1, 2});
EXPECT_CALL(
@@ -848,7 +870,8 @@ TEST_F(DownloadSuggestionsProviderTest,
*observer(),
OnNewSuggestions(_, downloads_category(),
UnorderedElementsAre(HasUrl("http://download.com/1"))));
- CreateLoadedProvider(/*show_assets=*/true, /*show_offline_pages=*/true);
+ CreateLoadedProvider(/*show_assets=*/true, /*show_offline_pages=*/true,
+ base::MakeUnique<base::DefaultClock>());
EXPECT_CALL(*observer(),
OnSuggestionInvalidated(
@@ -865,7 +888,8 @@ TEST_F(DownloadSuggestionsProviderTest,
*(offline_pages_model()->mutable_items()) = CreateDummyOfflinePages({1, 2});
EXPECT_CALL(*observer(),
OnNewSuggestions(_, downloads_category(), IsEmpty()));
- CreateLoadedProvider(/*show_assets=*/true, /*show_offline_pages=*/false);
+ CreateLoadedProvider(/*show_assets=*/true, /*show_offline_pages=*/false,
+ base::MakeUnique<base::DefaultClock>());
std::vector<std::unique_ptr<FakeDownloadItem>> asset_downloads =
CreateDummyAssetDownloads({1});
@@ -887,7 +911,8 @@ TEST_F(DownloadSuggestionsProviderTest, ShouldNotShowAssetsWhenTurnedOff) {
UnorderedElementsAre(
HasUrl("http://dummy.com/1"),
HasUrl("http://dummy.com/2"))));
- CreateProvider(/*show_assets=*/false, /*show_offline_pages=*/true);
+ CreateProvider(/*show_assets=*/false, /*show_offline_pages=*/true,
+ base::MakeUnique<base::DefaultClock>());
downloads_manager()->NotifyDownloadCreated(
downloads_manager()->items()[0].get());
// This notification should not reach the provider, because the asset
@@ -903,7 +928,8 @@ TEST_F(DownloadSuggestionsProviderTest, ShouldLoadOfflinePagesOnModelLoaded) {
offline_pages_model()->set_is_loaded(false);
EXPECT_CALL(*observer(),
OnNewSuggestions(_, downloads_category(), IsEmpty()));
- CreateProvider(/*show_assets=*/false, /*show_offline_pages=*/true);
+ CreateProvider(/*show_assets=*/false, /*show_offline_pages=*/true,
+ base::MakeUnique<base::DefaultClock>());
*(offline_pages_model()->mutable_items()) = CreateDummyOfflinePages({1, 2});
offline_pages_model()->set_is_loaded(true);
@@ -925,7 +951,8 @@ TEST_F(DownloadSuggestionsProviderTest,
UnorderedElementsAre(
HasUrl("http://dummy.com/1"),
HasUrl("http://dummy.com/2"))));
- CreateProvider(/*show_assets=*/false, /*show_offline_pages=*/true);
+ CreateProvider(/*show_assets=*/false, /*show_offline_pages=*/true,
+ base::MakeUnique<base::DefaultClock>());
}
TEST_F(DownloadSuggestionsProviderTest,
@@ -939,7 +966,8 @@ TEST_F(DownloadSuggestionsProviderTest,
OnNewSuggestions(_, downloads_category(),
UnorderedElementsAre(HasUrl("http://download.com/1"),
HasUrl("http://download.com/2"))));
- CreateLoadedProvider(/*show_assets=*/true, /*show_offline_pages=*/false);
+ CreateLoadedProvider(/*show_assets=*/true, /*show_offline_pages=*/false,
+ base::MakeUnique<base::DefaultClock>());
}
TEST_F(DownloadSuggestionsProviderTest,
@@ -953,7 +981,8 @@ TEST_F(DownloadSuggestionsProviderTest,
UnorderedElementsAre(
HasUrl("http://dummy.com/1"),
HasUrl("http://dummy.com/2"))));
- CreateProvider(/*show_assets=*/false, /*show_offline_pages=*/true);
+ CreateProvider(/*show_assets=*/false, /*show_offline_pages=*/true,
+ base::MakeUnique<base::DefaultClock>());
}
TEST_F(DownloadSuggestionsProviderTest, ShouldStoreDismissedSuggestions) {
@@ -964,7 +993,8 @@ TEST_F(DownloadSuggestionsProviderTest, ShouldStoreDismissedSuggestions) {
*(offline_pages_model()->mutable_items()) = CreateDummyOfflinePages({1});
*(downloads_manager()->mutable_items()) = CreateDummyAssetDownloads({1});
EXPECT_CALL(*observer(), OnNewSuggestions(_, downloads_category(), _));
- CreateLoadedProvider(/*show_assets=*/true, /*show_offline_pages=*/true);
+ CreateLoadedProvider(/*show_assets=*/true, /*show_offline_pages=*/true,
+ base::MakeUnique<base::DefaultClock>());
provider()->DismissSuggestion(
GetDummySuggestionId(1, /*is_offline_page=*/true));
provider()->DismissSuggestion(
@@ -973,7 +1003,8 @@ TEST_F(DownloadSuggestionsProviderTest, ShouldStoreDismissedSuggestions) {
DestroyProvider();
EXPECT_CALL(*observer(), OnNewSuggestions(_, downloads_category(), _));
- CreateLoadedProvider(/*show_assets=*/true, /*show_offline_pages=*/true);
+ CreateLoadedProvider(/*show_assets=*/true, /*show_offline_pages=*/true,
+ base::MakeUnique<base::DefaultClock>());
EXPECT_THAT(GetDismissedSuggestions(),
UnorderedElementsAre(HasUrl("http://dummy.com/1"),
HasUrl("http://download.com/1")));
@@ -987,7 +1018,8 @@ TEST_F(DownloadSuggestionsProviderTest,
// Dismiss items to store them in the list of dismissed items.
*(downloads_manager()->mutable_items()) = CreateDummyAssetDownloads({1});
EXPECT_CALL(*observer(), OnNewSuggestions(_, downloads_category(), _));
- CreateLoadedProvider(/*show_assets=*/true, /*show_offline_pages=*/false);
+ CreateLoadedProvider(/*show_assets=*/true, /*show_offline_pages=*/false,
+ base::MakeUnique<base::DefaultClock>());
provider()->DismissSuggestion(
GetDummySuggestionId(1, /*is_offline_page=*/false));
ASSERT_THAT(GetDismissedSuggestions(),
@@ -998,7 +1030,8 @@ TEST_F(DownloadSuggestionsProviderTest,
downloads_manager()->mutable_items()->clear();
EXPECT_CALL(*observer(), OnNewSuggestions(_, _, _)).Times(0);
- CreateProvider(/*show_assets=*/true, /*show_offline_pages=*/false);
+ CreateProvider(/*show_assets=*/true, /*show_offline_pages=*/false,
+ base::MakeUnique<base::DefaultClock>());
// Dismissed IDs should not be pruned yet, because the downloads list at the
// manager is not complete.
@@ -1015,3 +1048,33 @@ TEST_F(DownloadSuggestionsProviderTest,
// Once the manager has been loaded, the ids should be pruned.
EXPECT_THAT(GetDismissedSuggestions(), IsEmpty());
}
+
+TEST_F(DownloadSuggestionsProviderTest, ShouldNotShowOldDownloads) {
+ IgnoreOnCategoryStatusChangedToAvailable();
+ IgnoreOnSuggestionInvalidated();
+
+ const int kDefaultMaxDownloadAgeDays = 6 * 7;
+
+ base::Time now;
+ ASSERT_TRUE(base::Time::FromString("Tue, 31 Jan 2017 13:00:00", &now));
+ const base::Time not_old =
+ now - base::TimeDelta::FromDays(kDefaultMaxDownloadAgeDays - 1);
+ const base::Time old =
+ now - base::TimeDelta::FromDays(kDefaultMaxDownloadAgeDays + 1);
+ *(offline_pages_model()->mutable_items()) = CreateDummyOfflinePages({1, 2});
+ offline_pages_model()->mutable_items()->at(0).creation_time = not_old;
+ offline_pages_model()->mutable_items()->at(1).creation_time = old;
+ *(downloads_manager()->mutable_items()) = CreateDummyAssetDownloads({1, 2});
+ downloads_manager()->mutable_items()->at(0)->SetStartTime(not_old);
+ downloads_manager()->mutable_items()->at(1)->SetStartTime(old);
+
+ EXPECT_CALL(
+ *observer(),
+ OnNewSuggestions(_, downloads_category(),
+ UnorderedElementsAre(HasUrl("http://dummy.com/1"),
tschumann 2017/02/02 14:30:34 just as an FYI (no need to fix now). This is a go
+ HasUrl("http://download.com/1"))));
+ auto test_clock = base::MakeUnique<base::SimpleTestClock>();
+ test_clock->SetNow(now);
+ CreateLoadedProvider(/*show_assets=*/true, /*show_offline_pages=*/true,
+ std::move(test_clock));
+}

Powered by Google App Engine
This is Rietveld 408576698