| 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
|
|
|