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

Unified Diff: chrome/browser/sync/glue/typed_url_model_associator_unittest.cc

Issue 7550062: Limit size of typed url node. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Addressed review feedback. Created 9 years, 4 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
« no previous file with comments | « chrome/browser/sync/glue/typed_url_model_associator.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/sync/glue/typed_url_model_associator_unittest.cc
diff --git a/chrome/browser/sync/glue/typed_url_model_associator_unittest.cc b/chrome/browser/sync/glue/typed_url_model_associator_unittest.cc
index 46b81ad500c741da353ae5dd3b77c812bc420c0b..6e03a7e05a48672a7391c0b9af642fce9252d71e 100644
--- a/chrome/browser/sync/glue/typed_url_model_associator_unittest.cc
+++ b/chrome/browser/sync/glue/typed_url_model_associator_unittest.cc
@@ -29,7 +29,8 @@ class TypedUrlModelAssociatorTest : public testing::Test {
base::Time::FromInternalValue(last_visit));
history_url.set_hidden(hidden);
visits->push_back(history::VisitRow(
- history_url.id(), history_url.last_visit(), 0, 0, 0));
+ history_url.id(), history_url.last_visit(), 0,
+ PageTransition::RELOAD, 0));
history_url.set_visit_count(visits->size());
return history_url;
}
@@ -234,3 +235,79 @@ TEST_F(TypedUrlModelAssociatorTest, DiffVisitsAdd) {
EXPECT_EQ(new_visits[c].second, PageTransition::TYPED);
}
}
+
+static history::VisitRow CreateVisit(PageTransition::Type type,
+ int64 timestamp) {
+ return history::VisitRow(0, base::Time::FromInternalValue(timestamp), 0,
+ type, 0);
+}
+
+TEST_F(TypedUrlModelAssociatorTest, WriteTypedUrlSpecifics) {
+ history::VisitVector visits;
+ visits.push_back(CreateVisit(PageTransition::TYPED, 1));
+ visits.push_back(CreateVisit(PageTransition::RELOAD, 2));
+ visits.push_back(CreateVisit(PageTransition::LINK, 3));
+
+ history::URLRow url(MakeTypedUrlRow("http://pie.com/", "pie",
+ 1, 100, false, &visits));
+ sync_pb::TypedUrlSpecifics typed_url;
+ TypedUrlModelAssociator::WriteToTypedUrlSpecifics(url, visits, &typed_url);
+ // RELOAD visits should be removed.
+ EXPECT_EQ(2, typed_url.visits_size());
+ EXPECT_EQ(typed_url.visit_transitions_size(), typed_url.visits_size());
+ EXPECT_EQ(1, typed_url.visits(0));
+ EXPECT_EQ(3, typed_url.visits(1));
+ EXPECT_EQ(PageTransition::TYPED,
+ static_cast<PageTransition::Type>(typed_url.visit_transitions(0)));
+ EXPECT_EQ(PageTransition::LINK,
+ static_cast<PageTransition::Type>(typed_url.visit_transitions(1)));
+}
+
+TEST_F(TypedUrlModelAssociatorTest, TooManyVisits) {
+ history::VisitVector visits;
+ int64 timestamp = 1000;
+ visits.push_back(CreateVisit(PageTransition::TYPED, timestamp++));
+ for (int i = 0 ; i < 100; ++i) {
+ visits.push_back(CreateVisit(PageTransition::LINK, timestamp++));
+ }
+ history::URLRow url(MakeTypedUrlRow("http://pie.com/", "pie",
+ 1, timestamp++, false, &visits));
+ sync_pb::TypedUrlSpecifics typed_url;
+ TypedUrlModelAssociator::WriteToTypedUrlSpecifics(url, visits, &typed_url);
+ // # visits should be capped at 100.
+ EXPECT_EQ(100, typed_url.visits_size());
+ EXPECT_EQ(typed_url.visit_transitions_size(), typed_url.visits_size());
+ EXPECT_EQ(1000, typed_url.visits(0));
+ // Visit with timestamp of 1001 should be omitted since we should have
+ // skipped that visit to stay under the cap.
+ EXPECT_EQ(1002, typed_url.visits(1));
+ EXPECT_EQ(PageTransition::TYPED,
+ static_cast<PageTransition::Type>(typed_url.visit_transitions(0)));
+ EXPECT_EQ(PageTransition::LINK,
+ static_cast<PageTransition::Type>(typed_url.visit_transitions(1)));
+}
+
+TEST_F(TypedUrlModelAssociatorTest, TooManyTypedVisits) {
+ history::VisitVector visits;
+ int64 timestamp = 1000;
+ for (int i = 0 ; i < 102; ++i) {
+ visits.push_back(CreateVisit(PageTransition::TYPED, timestamp++));
+ visits.push_back(CreateVisit(PageTransition::LINK, timestamp++));
+ visits.push_back(CreateVisit(PageTransition::RELOAD, timestamp++));
+ }
+ history::URLRow url(MakeTypedUrlRow("http://pie.com/", "pie",
+ 1, timestamp++, false, &visits));
+ sync_pb::TypedUrlSpecifics typed_url;
+ TypedUrlModelAssociator::WriteToTypedUrlSpecifics(url, visits, &typed_url);
+ // # visits should be capped at 100.
+ EXPECT_EQ(100, typed_url.visits_size());
+ EXPECT_EQ(typed_url.visit_transitions_size(), typed_url.visits_size());
+ // First two typed visits should be skipped.
+ EXPECT_EQ(1006, typed_url.visits(0));
+
+ // Ensure there are no non-typed visits since that's all that should fit.
+ for (int i = 0; i < typed_url.visits_size(); ++i) {
+ EXPECT_EQ(PageTransition::TYPED, static_cast<PageTransition::Type>(
+ typed_url.visit_transitions(i)));
+ }
+}
« no previous file with comments | « chrome/browser/sync/glue/typed_url_model_associator.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698