Index: chrome/browser/history/history_backend_unittest.cc |
diff --git a/chrome/browser/history/history_backend_unittest.cc b/chrome/browser/history/history_backend_unittest.cc |
index b4c071674365348e3d4515e1a8954de6ec41d60e..cf7bd73cf0e2404a106036a15dbee297091ba8b9 100644 |
--- a/chrome/browser/history/history_backend_unittest.cc |
+++ b/chrome/browser/history/history_backend_unittest.cc |
@@ -1385,4 +1385,59 @@ TEST_F(HistoryBackendTest, QueryFilteredURLs) { |
get_most_visited_list()[0].url.spec()); |
} |
+TEST_F(HistoryBackendTest, UpdateVisitDetails) { |
+ // This unit test will test adding and deleting visit details information. |
+ ASSERT_TRUE(backend_.get()); |
+ |
+ GURL url1("http://www.cnn.com"); |
+ std::vector<VisitInfo> visit_info1, visit_info2; |
+ Time start_ts = Time::Now() - base::TimeDelta::FromDays(5); |
+ Time end_ts = start_ts + base::TimeDelta::FromDays(2); |
+ visit_info1.push_back(VisitInfo(start_ts, content::PAGE_TRANSITION_LINK)); |
+ |
+ GURL url2("http://www.example.com"); |
+ visit_info2.push_back(VisitInfo(Time::Now() - base::TimeDelta::FromDays(10), |
+ content::PAGE_TRANSITION_LINK)); |
+ |
+ // Clear all history. |
+ backend_->DeleteAllHistory(); |
+ |
+ // Add the visits. |
+ backend_->AddVisits(url1, visit_info1, history::SOURCE_BROWSED); |
+ backend_->AddVisits(url2, visit_info2, history::SOURCE_BROWSED); |
+ |
+ // Verify the entries for both visits were added in visit_details. |
+ VisitVector visits1, visits2; |
+ URLRow row; |
+ VisitDetailMap visit_details; |
+ URLID url_id1 = backend_->db()->GetRowForURL(url1, &row); |
+ ASSERT_TRUE(backend_->db()->GetVisitsForURL(url_id1, &visits1)); |
+ ASSERT_EQ(1U, visits1.size()); |
+ backend_->db()->GetVisitDetails(visits1, &visit_details); |
+ ASSERT_EQ(1U, visit_details.size()); |
+ EXPECT_EQ(0, visit_details[visits1[0].visit_id].duration.ToInternalValue()); |
+ |
+ URLID url_id2 = backend_->db()->GetRowForURL(url2, &row); |
+ ASSERT_TRUE(backend_->db()->GetVisitsForURL(url_id2, &visits2)); |
+ ASSERT_EQ(1U, visits2.size()); |
+ backend_->db()->GetVisitDetails(visits2, &visit_details); |
+ ASSERT_EQ(1U, visit_details.size()); |
+ EXPECT_EQ(0, visit_details[visits2[0].visit_id].duration.ToInternalValue()); |
+ |
+ // Update the visit to cnn.com. |
+ backend_->UpdateVisitDetails(visits1[0].visit_id, end_ts); |
+ |
+ // Check the duration for visiting cnn.com was correctly updated. |
+ backend_->db()->GetVisitDetails(visits1, &visit_details); |
+ ASSERT_EQ(1U, visit_details.size()); |
+ base::TimeDelta expected_duration = end_ts - start_ts; |
+ EXPECT_EQ(expected_duration.ToInternalValue(), |
+ visit_details[visits1[0].visit_id].duration.ToInternalValue()); |
+ |
+ // Remove the visit to cnn.com should also remove its details. |
+ ASSERT_TRUE(backend_->RemoveVisits(visits1)); |
+ backend_->db()->GetVisitDetails(visits1, &visit_details); |
+ ASSERT_EQ(0U, visit_details.size()); |
+} |
+ |
} // namespace history |