Chromium Code Reviews| 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_), |
|
Devlin
2016/01/27 17:59:04
This doesn't seem like the right solution... why d
reat
2016/01/28 04:09:59
We do it because TabRestoreService is depends on p
Devlin
2016/01/28 22:48:05
Interesting. This stems from TabRestoreService be
|
| + this)); |
| EventRouter::Get(browser_context_)->UnregisterObserver(this); |
| } |