| Index: chrome/browser/extensions/api/history/history_api.cc
|
| diff --git a/chrome/browser/extensions/api/history/history_api.cc b/chrome/browser/extensions/api/history/history_api.cc
|
| index 356373c9ceceb3ac463e286732150edad770a490..548d1a0970370b311842d6fa94d0a48ae000cdcb 100644
|
| --- a/chrome/browser/extensions/api/history/history_api.cc
|
| +++ b/chrome/browser/extensions/api/history/history_api.cc
|
| @@ -132,27 +132,26 @@ scoped_ptr<VisitItem> GetVisitItem(const history::VisitRow& row) {
|
|
|
| } // namespace
|
|
|
| -HistoryEventRouter::HistoryEventRouter(Profile* profile) {
|
| +HistoryEventRouter::HistoryEventRouter(Profile* profile,
|
| + HistoryService* history_service)
|
| + : profile_(profile), history_service_(history_service) {
|
| + DCHECK(profile);
|
| + DCHECK(history_service);
|
| const content::Source<Profile> source = content::Source<Profile>(profile);
|
| registrar_.Add(this,
|
| - chrome::NOTIFICATION_HISTORY_URL_VISITED,
|
| - source);
|
| - registrar_.Add(this,
|
| chrome::NOTIFICATION_HISTORY_URLS_DELETED,
|
| source);
|
| + history_service_->AddObserver(this);
|
| }
|
|
|
| -HistoryEventRouter::~HistoryEventRouter() {}
|
| +HistoryEventRouter::~HistoryEventRouter() {
|
| + history_service_->RemoveObserver(this);
|
| +}
|
|
|
| void HistoryEventRouter::Observe(int type,
|
| const content::NotificationSource& source,
|
| const content::NotificationDetails& details) {
|
| switch (type) {
|
| - case chrome::NOTIFICATION_HISTORY_URL_VISITED:
|
| - HistoryUrlVisited(
|
| - content::Source<Profile>(source).ptr(),
|
| - content::Details<const history::URLVisitedDetails>(details).ptr());
|
| - break;
|
| case chrome::NOTIFICATION_HISTORY_URLS_DELETED:
|
| HistoryUrlsRemoved(
|
| content::Source<Profile>(source).ptr(),
|
| @@ -163,13 +162,15 @@ void HistoryEventRouter::Observe(int type,
|
| }
|
| }
|
|
|
| -void HistoryEventRouter::HistoryUrlVisited(
|
| - Profile* profile,
|
| - const history::URLVisitedDetails* details) {
|
| - scoped_ptr<HistoryItem> history_item = GetHistoryItem(details->row);
|
| +void HistoryEventRouter::OnURLVisited(HistoryService* history_service,
|
| + ui::PageTransition transition,
|
| + const history::URLRow& row,
|
| + const history::RedirectList& redirects,
|
| + base::Time visit_time) {
|
| + DCHECK_EQ(history_service_, history_service);
|
| + scoped_ptr<HistoryItem> history_item = GetHistoryItem(row);
|
| scoped_ptr<base::ListValue> args = OnVisited::Create(*history_item);
|
| -
|
| - DispatchEvent(profile, api::history::OnVisited::kEventName, args.Pass());
|
| + DispatchEvent(profile_, api::history::OnVisited::kEventName, args.Pass());
|
| }
|
|
|
| void HistoryEventRouter::HistoryUrlsRemoved(
|
| @@ -235,8 +236,10 @@ void HistoryAPI::OnListenerAdded(const EventListenerInfo& details) {
|
| tracked_objects::ScopedProfile tracking_profile(
|
| FROM_HERE_WITH_EXPLICIT_FUNCTION("HistoryAPI::OnListenerAdded"));
|
|
|
| - history_event_router_.reset(
|
| - new HistoryEventRouter(Profile::FromBrowserContext(browser_context_)));
|
| + Profile* profile = Profile::FromBrowserContext(browser_context_);
|
| + history_event_router_.reset(new HistoryEventRouter(
|
| + profile,
|
| + HistoryServiceFactory::GetForProfile(profile, Profile::EXPLICIT_ACCESS)));
|
| EventRouter::Get(browser_context_)->UnregisterObserver(this);
|
| }
|
|
|
|
|