| Index: components/ntp_snippets/bookmarks/bookmark_last_visit_utils.cc
|
| diff --git a/components/ntp_snippets/bookmarks/bookmark_last_visit_utils.cc b/components/ntp_snippets/bookmarks/bookmark_last_visit_utils.cc
|
| index 8283fa2ed73c9133683a18db598099ef8727d37a..9073bae8393ecd31f171df0ba3a2a2722ea32e72 100644
|
| --- a/components/ntp_snippets/bookmarks/bookmark_last_visit_utils.cc
|
| +++ b/components/ntp_snippets/bookmarks/bookmark_last_visit_utils.cc
|
| @@ -8,6 +8,7 @@
|
| #include <string>
|
| #include <utility>
|
|
|
| +#include "base/bind.h"
|
| #include "base/strings/string_number_conversions.h"
|
| #include "base/time/time.h"
|
| #include "components/bookmarks/browser/bookmark_model.h"
|
| @@ -41,8 +42,10 @@ std::string FormatLastVisitDate(const base::Time& date) {
|
| }
|
|
|
| bool CompareBookmarksByLastVisitDate(const BookmarkNode* a,
|
| - const BookmarkNode* b) {
|
| - return GetLastVisitDateForBookmark(a) > GetLastVisitDateForBookmark(b);
|
| + const BookmarkNode* b,
|
| + bool creation_date_fallback) {
|
| + return GetLastVisitDateForBookmark(a, creation_date_fallback) >
|
| + GetLastVisitDateForBookmark(b, creation_date_fallback);
|
| }
|
|
|
| } // namespace
|
| @@ -71,9 +74,9 @@ base::Time GetLastVisitDateForBookmark(const BookmarkNode* node,
|
|
|
| std::string last_visit_date_string;
|
| if (!node->GetMetaInfo(kBookmarkLastVisitDateKey, &last_visit_date_string) &&
|
| - creation_date_fallback)
|
| + creation_date_fallback) {
|
| return node->date_added();
|
| -
|
| + }
|
| return ParseLastVisitDate(last_visit_date_string);
|
| }
|
|
|
| @@ -122,7 +125,8 @@ std::vector<const BookmarkNode*> GetRecentlyVisitedBookmarks(
|
| BookmarkModel* bookmark_model,
|
| int min_count,
|
| int max_count,
|
| - const base::Time& min_visit_time) {
|
| + const base::Time& min_visit_time,
|
| + bool creation_date_fallback) {
|
| // Get all the bookmark URLs.
|
| std::vector<BookmarkModel::URLAndTitle> bookmark_urls;
|
| bookmark_model->GetBookmarks(&bookmark_urls);
|
| @@ -135,14 +139,15 @@ std::vector<const BookmarkNode*> GetRecentlyVisitedBookmarks(
|
| // Get all bookmarks for the given URL.
|
| std::vector<const BookmarkNode*> bookmarks_for_url;
|
| bookmark_model->GetNodesByURL(url_and_title.url, &bookmarks_for_url);
|
| + DCHECK(!bookmarks_for_url.empty());
|
|
|
| // Find the most recent node (minimal w.r.t.
|
| // CompareBookmarksByLastVisitDate).
|
| - std::vector<const BookmarkNode*>::iterator most_recent =
|
| - std::min_element(bookmarks_for_url.begin(), bookmarks_for_url.end(),
|
| - &CompareBookmarksByLastVisitDate);
|
| - if (most_recent == bookmarks_for_url.end())
|
| - continue;
|
| + std::vector<const BookmarkNode*>::iterator most_recent = std::min_element(
|
| + bookmarks_for_url.begin(), bookmarks_for_url.end(),
|
| + [creation_date_fallback](const BookmarkNode* a, const BookmarkNode* b) {
|
| + return CompareBookmarksByLastVisitDate(a, b, creation_date_fallback);
|
| + });
|
| const BookmarkNode* node = *most_recent;
|
|
|
| // Find out if it has been _visited_ recently enough.
|
| @@ -159,7 +164,7 @@ std::vector<const BookmarkNode*> GetRecentlyVisitedBookmarks(
|
| // Fill the list up to |min_count| but do not display more.
|
| max_count = min_count;
|
| } else {
|
| - // Remove the bookmarks that are not recently visited; we do no need them.
|
| + // Remove the bookmarks that are not recently visited; we do not need them.
|
| bookmarks.erase(
|
| std::remove_if(bookmarks.begin(), bookmarks.end(),
|
| [](const RecentBookmark& bookmark) {
|
| @@ -170,8 +175,10 @@ std::vector<const BookmarkNode*> GetRecentlyVisitedBookmarks(
|
|
|
| // Sort the remaining entries by date.
|
| std::sort(bookmarks.begin(), bookmarks.end(),
|
| - [](const RecentBookmark& a, const RecentBookmark& b) {
|
| - return CompareBookmarksByLastVisitDate(a.node, b.node);
|
| + [creation_date_fallback](const RecentBookmark& a,
|
| + const RecentBookmark& b) {
|
| + return CompareBookmarksByLastVisitDate(a.node, b.node,
|
| + creation_date_fallback);
|
| });
|
|
|
| // Insert the first |max_count| items from |bookmarks| into |result|.
|
| @@ -197,6 +204,7 @@ std::vector<const BookmarkNode*> GetDismissedBookmarksForDebugging(
|
| [&bookmark_model](const BookmarkModel::URLAndTitle& bookmark) {
|
| std::vector<const BookmarkNode*> bookmarks_for_url;
|
| bookmark_model->GetNodesByURL(bookmark.url, &bookmarks_for_url);
|
| + DCHECK(!bookmarks_for_url.empty());
|
|
|
| for (const BookmarkNode* node : bookmarks_for_url) {
|
| if (!IsDismissedFromNTPForBookmark(node))
|
|
|