Chromium Code Reviews| Index: components/ntp_snippets/bookmarks/bookmark_suggestions_provider.cc |
| diff --git a/components/ntp_snippets/bookmarks/bookmark_suggestions_provider.cc b/components/ntp_snippets/bookmarks/bookmark_suggestions_provider.cc |
| index 7090d1281a185e1bfc740092db81d18213b1f331..201fadce53c265b58010ad58574949864c18674b 100644 |
| --- a/components/ntp_snippets/bookmarks/bookmark_suggestions_provider.cc |
| +++ b/components/ntp_snippets/bookmarks/bookmark_suggestions_provider.cc |
| @@ -28,12 +28,18 @@ using bookmarks::BookmarkNode; |
| namespace { |
| const int kMaxBookmarks = 10; |
| +const int kMaxBookmarksIfNoVisitData = 3; |
| const int kMaxBookmarkAgeInDays = 42; |
| const char* kMaxBookmarksParamName = "max_count"; |
| +const char* kMaxBookmarksIfNoVisitDataParamName = "max_count_no_visit_data"; |
| const char* kMaxBookmarkAgeInDaysParamName = "max_age_in_days"; |
| -base::Time GetThresholdTime() { |
| +base::Time GetThresholdTime(bool no_visit_data) { |
| + // If we have no data, we list bookmarks by creation date, no age limit. |
| + if (no_visit_data) |
| + return base::Time(); |
| + |
| std::string age_in_days_string = variations::GetVariationParamValueByFeature( |
| ntp_snippets::kBookmarkSuggestionsFeature, kMaxBookmarkAgeInDaysParamName); |
| int age_in_days = 0; |
| @@ -43,14 +49,16 @@ base::Time GetThresholdTime() { |
| return base::Time::Now() - base::TimeDelta::FromDays(age_in_days); |
| } |
| -int GetMaxCount() { |
| +int GetMaxCount(bool no_visit_data) { |
| std::string max_count_string = variations::GetVariationParamValueByFeature( |
| - ntp_snippets::kBookmarkSuggestionsFeature, kMaxBookmarksParamName); |
| + ntp_snippets::kBookmarkSuggestionsFeature, |
| + no_visit_data ? kMaxBookmarksIfNoVisitDataParamName |
| + : kMaxBookmarksParamName); |
| int max_count = 0; |
| if (base::StringToInt(max_count_string, &max_count)) |
| return max_count; |
| - return kMaxBookmarks; |
| + return no_visit_data ? kMaxBookmarksIfNoVisitData : kMaxBookmarks; |
| } |
| } // namespace |
| @@ -67,7 +75,8 @@ BookmarkSuggestionsProvider::BookmarkSuggestionsProvider( |
| category_factory->FromKnownCategory(KnownCategories::BOOKMARKS)), |
| bookmark_model_(bookmark_model), |
| fetch_requested_(false), |
| - end_of_list_last_visit_date_(GetThresholdTime()) { |
| + no_visit_data_(false), |
| + end_of_list_last_visit_date_(GetThresholdTime(no_visit_data_)) { |
| bookmark_model_->AddObserver(this); |
| FetchBookmarks(); |
| } |
| @@ -150,14 +159,15 @@ void BookmarkSuggestionsProvider::OnWillChangeBookmarkMetaInfo( |
| BookmarkModel* model, |
| const BookmarkNode* node) { |
| // Store the last visit date of the node that is about to change. |
| - node_to_change_last_visit_date_ = |
| - GetLastVisitDateForBookmarkIfNotDismissed(node); |
| + node_to_change_last_visit_date_ = GetLastVisitDateForBookmarkIfNotDismissed( |
| + node, no_visit_data_); |
| } |
| void BookmarkSuggestionsProvider::BookmarkMetaInfoChanged( |
| BookmarkModel* model, |
| const BookmarkNode* node) { |
| - base::Time time = GetLastVisitDateForBookmarkIfNotDismissed(node); |
| + base::Time time = GetLastVisitDateForBookmarkIfNotDismissed( |
| + node, no_visit_data_); |
| if (time == node_to_change_last_visit_date_ || |
| time < end_of_list_last_visit_date_) |
| return; |
| @@ -173,7 +183,7 @@ void BookmarkSuggestionsProvider::BookmarkNodeRemoved( |
| int old_index, |
| const bookmarks::BookmarkNode* node, |
| const std::set<GURL>& no_longer_bookmarked) { |
| - if (GetLastVisitDateForBookmarkIfNotDismissed(node) < |
| + if (GetLastVisitDateForBookmarkIfNotDismissed(node, no_visit_data_) < |
| end_of_list_last_visit_date_) |
| return; |
| @@ -189,7 +199,8 @@ ContentSuggestion BookmarkSuggestionsProvider::ConvertBookmark( |
| suggestion.set_title(bookmark->GetTitle()); |
| suggestion.set_snippet_text(base::string16()); |
| - suggestion.set_publish_date(GetLastVisitDateForBookmark(bookmark)); |
| + suggestion.set_publish_date( |
| + GetLastVisitDateForBookmark(bookmark, no_visit_data_)); |
| suggestion.set_publisher_name(base::UTF8ToUTF16(bookmark->url().host())); |
| return suggestion; |
| } |
| @@ -199,9 +210,12 @@ void BookmarkSuggestionsProvider::FetchBookmarksInternal() { |
| NotifyStatusChanged(CategoryStatus::AVAILABLE); |
| - base::Time threshold_time = GetThresholdTime(); |
| + no_visit_data_ = !IsLastVisitDataAvailable(bookmark_model_); |
|
Marc Treib
2016/08/17 11:29:06
Hm, so this means, a new user will get 3 bookmarks
|
| + |
| + base::Time threshold_time = GetThresholdTime(no_visit_data_); |
| std::vector<const BookmarkNode*> bookmarks = GetRecentlyVisitedBookmarks( |
| - bookmark_model_, GetMaxCount(), threshold_time); |
| + bookmark_model_, no_visit_data_, GetMaxCount(no_visit_data_), |
| + threshold_time); |
| std::vector<ContentSuggestion> suggestions; |
| for (const BookmarkNode* bookmark : bookmarks) |