Index: chrome/browser/extensions/api/sessions/sessions_api.cc |
diff --git a/chrome/browser/extensions/api/sessions/sessions_api.cc b/chrome/browser/extensions/api/sessions/sessions_api.cc |
index 6d6810a2f8f3c688839d2b3dc215c23b18b25f12..6fe3b8b4f231bd996d8abe5f6526e53b126d2afb 100644 |
--- a/chrome/browser/extensions/api/sessions/sessions_api.cc |
+++ b/chrome/browser/extensions/api/sessions/sessions_api.cc |
@@ -607,8 +607,10 @@ bool SessionsRestoreFunction::RunSync() { |
: RestoreLocalSession(*session_id, browser); |
} |
-SessionsEventRouter::SessionsEventRouter(Profile* profile) |
+SessionsEventRouter::SessionsEventRouter(Profile* profile, |
+ EventRouter::Observer* observer) |
: profile_(profile), |
+ observer_(observer), |
tab_restore_service_(TabRestoreServiceFactory::GetForProfile(profile)) { |
// TabRestoreServiceFactory::GetForProfile() can return NULL (i.e., when in |
// incognito mode) |
@@ -634,6 +636,8 @@ void SessionsEventRouter::TabRestoreServiceChanged( |
void SessionsEventRouter::TabRestoreServiceDestroyed( |
sessions::TabRestoreService* service) { |
tab_restore_service_ = NULL; |
+ EventRouter::Get(profile_)->RegisterObserver( |
+ observer_, api::sessions::OnChanged::kEventName); |
} |
SessionsAPI::SessionsAPI(content::BrowserContext* context) |
@@ -659,7 +663,8 @@ SessionsAPI::GetFactoryInstance() { |
void SessionsAPI::OnListenerAdded(const EventListenerInfo& details) { |
sessions_event_router_.reset( |
- new SessionsEventRouter(Profile::FromBrowserContext(browser_context_))); |
+ new SessionsEventRouter(Profile::FromBrowserContext(browser_context_), |
+ this)); |
EventRouter::Get(browser_context_)->UnregisterObserver(this); |
} |