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

Unified Diff: components/ntp_snippets/bookmarks/bookmark_last_visit_utils_unittest.cc

Issue 2616633002: Respect time range in browsing data removal for last-visited data. (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: components/ntp_snippets/bookmarks/bookmark_last_visit_utils_unittest.cc
diff --git a/components/ntp_snippets/bookmarks/bookmark_last_visit_utils_unittest.cc b/components/ntp_snippets/bookmarks/bookmark_last_visit_utils_unittest.cc
index c99c8695a5f72b072f04afff2fa9f51bf1afc629..814b10a504acaf4fba3bc7a8c8ad512e760a7f48 100644
--- a/components/ntp_snippets/bookmarks/bookmark_last_visit_utils_unittest.cc
+++ b/components/ntp_snippets/bookmarks/bookmark_last_visit_utils_unittest.cc
@@ -6,6 +6,7 @@
#include <string>
+#include "base/callback.h"
#include "base/strings/string_number_conversions.h"
#include "base/strings/stringprintf.h"
#include "base/strings/utf_string_conversions.h"
@@ -48,32 +49,35 @@ void AddBookmarks(BookmarkModel* model,
void AddBookmarksRecentOnMobile(BookmarkModel* model,
int num,
- const base::Time& threshold_time) {
- base::TimeDelta week = base::TimeDelta::FromDays(7);
- base::Time recent_time = threshold_time + week;
- std::string recent_time_string =
- base::Int64ToString(recent_time.ToInternalValue());
-
+ const base::Time& visit_time) {
AddBookmarks(model, num, kBookmarkLastVisitDateOnMobileKey,
- recent_time_string);
+ base::Int64ToString(visit_time.ToInternalValue()));
}
void AddBookmarksRecentOnDesktop(BookmarkModel* model,
int num,
- const base::Time& threshold_time) {
- base::TimeDelta week = base::TimeDelta::FromDays(7);
- base::Time recent_time = threshold_time + week;
- std::string recent_time_string =
- base::Int64ToString(recent_time.ToInternalValue());
-
+ const base::Time& visit_time) {
AddBookmarks(model, num, kBookmarkLastVisitDateOnDesktopKey,
- recent_time_string);
+ base::Int64ToString(visit_time.ToInternalValue()));
}
void AddBookmarksNonVisited(BookmarkModel* model, int num) {
AddBookmarks(model, num, std::string(), std::string());
}
+const BookmarkNode* AddSingleBookmark(BookmarkModel* model,
+ const std::string& url,
+ const std::string& last_visit_key,
+ const base::Time& visit_time) {
+ base::string16 title =
+ base::ASCIIToUTF16(base::StringPrintf("title-%s", url.c_str()));
+ const BookmarkNode* node =
+ model->AddURL(model->bookmark_bar_node(), 0, title, GURL(url));
+ model->SetNodeMetaInfo(node, last_visit_key,
+ base::Int64ToString(visit_time.ToInternalValue()));
+ return node;
+}
+
} // namespace
class GetRecentlyVisitedBookmarksTest : public testing::Test {
@@ -85,6 +89,10 @@ class GetRecentlyVisitedBookmarksTest : public testing::Test {
const base::Time& threshold_time() const { return threshold_time_; }
+ base::Time GetRecentTime() const {
+ return threshold_time_ + base::TimeDelta::FromDays(7);
+ }
+
private:
base::Time threshold_time_;
@@ -109,7 +117,7 @@ TEST_F(GetRecentlyVisitedBookmarksTest, ShouldNotConsiderDesktopVisits) {
std::unique_ptr<BookmarkModel> model =
bookmarks::TestBookmarkClient::CreateModel();
AddBookmarksRecentOnDesktop(model.get(), number_of_bookmarks,
- threshold_time());
+ GetRecentTime());
std::vector<const bookmarks::BookmarkNode*> result =
GetRecentlyVisitedBookmarks(model.get(), number_of_bookmarks,
@@ -124,7 +132,7 @@ TEST_F(GetRecentlyVisitedBookmarksTest, ShouldConsiderDesktopVisits) {
std::unique_ptr<BookmarkModel> model =
bookmarks::TestBookmarkClient::CreateModel();
AddBookmarksRecentOnDesktop(model.get(), number_of_recent_desktop,
- threshold_time());
+ GetRecentTime());
AddBookmarksNonVisited(model.get(),
number_of_bookmarks - number_of_recent_desktop);
@@ -139,8 +147,7 @@ TEST_F(GetRecentlyVisitedBookmarksTest, ShouldReturnNotMoreThanMaxCount) {
const int number_of_bookmarks = 3;
std::unique_ptr<BookmarkModel> model =
bookmarks::TestBookmarkClient::CreateModel();
- AddBookmarksRecentOnMobile(model.get(), number_of_bookmarks,
- threshold_time());
+ AddBookmarksRecentOnMobile(model.get(), number_of_bookmarks, GetRecentTime());
const int max_count = number_of_bookmarks - 1;
std::vector<const bookmarks::BookmarkNode*> result =
@@ -149,4 +156,129 @@ TEST_F(GetRecentlyVisitedBookmarksTest, ShouldReturnNotMoreThanMaxCount) {
EXPECT_THAT(result, SizeIs(max_count));
}
+TEST(RemoveLastVisitedDatesBetween, ShouldRemoveTimestampsWithinTimeRange) {
+ const base::Time delete_begin =
+ base::Time::Now() - base::TimeDelta::FromDays(2);
+ const base::Time delete_end = base::Time::Max();
+
+ std::unique_ptr<BookmarkModel> model =
+ bookmarks::TestBookmarkClient::CreateModel();
+ AddSingleBookmark(model.get(), "http://url-1.com",
+ kBookmarkLastVisitDateOnMobileKey,
+ delete_begin + base::TimeDelta::FromSeconds(1));
+ AddSingleBookmark(model.get(), "http://url-1.com",
+ kBookmarkLastVisitDateOnDesktopKey,
+ delete_begin + base::TimeDelta::FromSeconds(1));
+ ASSERT_THAT(
+ GetRecentlyVisitedBookmarks(model.get(), 20, base::Time(),
+ /*consider_visits_from_desktop=*/true),
+ SizeIs(1));
+
+ base::Callback<bool(const GURL& url)> filter;
+ RemoveLastVisitedDatesBetween(delete_begin, delete_end, filter, model.get());
+
+ EXPECT_THAT(
+ GetRecentlyVisitedBookmarks(model.get(), 20, base::Time(),
+ /*consider_visits_from_desktop=*/true),
+ IsEmpty());
+ // Verify that the bookmark model nodes themselve still exist.
+ std::vector<const BookmarkNode*> remaining_nodes;
+ model->GetNodesByURL(GURL("http://url-1.com"), &remaining_nodes);
+ EXPECT_THAT(remaining_nodes, SizeIs(2));
+}
+
+TEST(RemoveLastVisitedDatesBetween,
+ ShouldAlsoRemoveAnyTimestampFromOtherDevices) {
+ const base::Time delete_begin =
+ base::Time::Now() - base::TimeDelta::FromDays(2);
+ const base::Time delete_end = base::Time::Max();
+
+ std::unique_ptr<BookmarkModel> model =
+ bookmarks::TestBookmarkClient::CreateModel();
+ // Create a bookmark with last visited times from both, mobile and desktop.
+ // The mobile one is within the deletion interval, the desktop one outside.
+ // Both should get removed.
jkrcal 2017/01/04 12:14:22 This is more a question to the implementation: are
tschumann 2017/01/04 13:32:32 This was my understanding of Dominic's comment: ht
jkrcal 2017/01/04 14:09:25 Interesting :) My interpretation of Dominic's co
msramek 2017/01/04 14:19:07 I agree with Jan. Definitely take timestamps into
+ const BookmarkNode* node = AddSingleBookmark(
+ model.get(), "http://url-1.com", kBookmarkLastVisitDateOnMobileKey,
+ delete_begin + base::TimeDelta::FromSeconds(1));
+ model->SetNodeMetaInfo(
+ node, kBookmarkLastVisitDateOnDesktopKey,
+ base::Int64ToString(
+ (delete_begin - base::TimeDelta::FromSeconds(1)).ToInternalValue()));
+ ASSERT_THAT(
+ GetRecentlyVisitedBookmarks(model.get(), 20, base::Time(),
+ /*consider_visits_from_desktop=*/true),
+ SizeIs(1));
+
+ base::Callback<bool(const GURL& url)> filter;
+ RemoveLastVisitedDatesBetween(delete_begin, delete_end, filter, model.get());
+
+ EXPECT_THAT(
+ GetRecentlyVisitedBookmarks(model.get(), 20, base::Time(),
+ /*consider_visits_from_desktop=*/true),
+ IsEmpty());
+}
+
+TEST(RemoveLastVisitedDatesBetween,
+ ShouldKeepSeparateBookmarksForDifferentDeviceTypes) {
+ // This test verifies that if we see two bookmark nodes for the same URL,
+ // where one is only visited from mobile devices and the other one only from
+ // desktop devices, clearing one should not affect the other one.
+ const base::Time delete_begin =
+ base::Time::Now() - base::TimeDelta::FromDays(2);
+ const base::Time delete_end = base::Time::Max();
+
+ std::unique_ptr<BookmarkModel> model =
+ bookmarks::TestBookmarkClient::CreateModel();
+ AddSingleBookmark(
+ model.get(), "http://url-1.com", kBookmarkLastVisitDateOnMobileKey,
+ delete_begin + base::TimeDelta::FromSeconds(1));
+ AddSingleBookmark(model.get(), "http://url-1.com",
+ kBookmarkLastVisitDateOnDesktopKey,
+ delete_begin - base::TimeDelta::FromSeconds(1));
+ ASSERT_THAT(
+ GetRecentlyVisitedBookmarks(model.get(), 20, base::Time(),
+ /*consider_visits_from_desktop=*/true),
+ SizeIs(1));
+
+ base::Callback<bool(const GURL& url)> filter;
+ RemoveLastVisitedDatesBetween(delete_begin, delete_end, filter, model.get());
+
+ EXPECT_THAT(
+ GetRecentlyVisitedBookmarks(model.get(), 20, base::Time(),
+ /*consider_visits_from_desktop=*/false),
+ IsEmpty());
+ EXPECT_THAT(
+ GetRecentlyVisitedBookmarks(model.get(), 20, base::Time(),
+ /*consider_visits_from_desktop=*/true),
+ SizeIs(1));
+}
+
+TEST(RemoveLastVisitedDatesBetween, ShouldNotRemoveTimestampsOutsideTimeRange) {
+ const base::Time delete_begin =
+ base::Time::Now() - base::TimeDelta::FromDays(2);
+ const base::Time delete_end = delete_begin + base::TimeDelta::FromDays(5);
+
+ std::unique_ptr<BookmarkModel> model =
+ bookmarks::TestBookmarkClient::CreateModel();
+ AddSingleBookmark(model.get(), "http://url-1.com",
+ kBookmarkLastVisitDateOnMobileKey,
+ delete_begin - base::TimeDelta::FromSeconds(1));
+ AddSingleBookmark(model.get(), "http://url-2.com",
+ kBookmarkLastVisitDateOnDesktopKey,
+ delete_end + base::TimeDelta::FromSeconds(1));
+ ASSERT_THAT(
+ GetRecentlyVisitedBookmarks(model.get(), 20, base::Time(),
+ /*consider_visits_from_desktop=*/true),
+ SizeIs(2));
+
+ base::Callback<bool(const GURL& url)> filter;
+ RemoveLastVisitedDatesBetween(delete_begin, delete_end, filter, model.get());
+
+ EXPECT_THAT(
+ GetRecentlyVisitedBookmarks(model.get(), 20, base::Time(),
+ /*consider_visits_from_desktop=*/true),
+ SizeIs(2));
+}
+
} // namespace ntp_snippets

Powered by Google App Engine
This is Rietveld 408576698