Index: chrome/browser/history/visit_database.cc |
=================================================================== |
--- chrome/browser/history/visit_database.cc (revision 131579) |
+++ chrome/browser/history/visit_database.cc (working copy) |
@@ -24,7 +24,8 @@ |
namespace history { |
-VisitDatabase::VisitDatabase() { |
+VisitDatabase::VisitDatabase() : |
+ observers_(new ObserverListThreadSafe<VisitDatabaseObserver>()) { |
} |
VisitDatabase::~VisitDatabase() { |
@@ -158,6 +159,12 @@ |
} |
} |
+ BriefVisitInfo info; |
+ info.url_id = visit->url_id; |
+ info.time = visit->visit_time; |
+ info.transition = visit->transition; |
+ observers_->Notify(&VisitDatabaseObserver::OnAddVisit, info); |
+ |
return visit->visit_id; |
} |
@@ -558,4 +565,36 @@ |
return true; |
} |
+void VisitDatabase::AddVisitDatabaseObserver(VisitDatabaseObserver* observer) { |
+ observers_->AddObserver(observer); |
+} |
+ |
+void VisitDatabase::RemoveVisitDatabaseObserver( |
+ VisitDatabaseObserver* observer) { |
+ observers_->RemoveObserver(observer); |
+} |
+ |
+void VisitDatabase::GetBriefVisitInfoOfMostRecentVisits( |
+ int max_visits, |
+ std::vector<BriefVisitInfo>* result_vector) { |
+ result_vector->clear(); |
+ |
+ sql::Statement statement(GetDB().GetCachedStatement(SQL_FROM_HERE, |
+ "SELECT url,visit_time,transition FROM visits " |
+ "ORDER BY id DESC LIMIT ?")); |
+ |
+ statement.BindInt64(0, max_visits); |
+ |
+ if (!statement.is_valid()) |
+ return; |
+ |
+ while (statement.Step()) { |
+ BriefVisitInfo info; |
+ info.url_id = statement.ColumnInt64(0); |
+ info.time = base::Time::FromInternalValue(statement.ColumnInt64(1)); |
+ info.transition = content::PageTransitionFromInt(statement.ColumnInt(2)); |
+ result_vector->push_back(info); |
+ } |
+} |
+ |
} // namespace history |