diff options
author | brettw@chromium.org <brettw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-01-06 16:58:03 +0000 |
---|---|---|
committer | brettw@chromium.org <brettw@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-01-06 16:58:03 +0000 |
commit | 6a02963e645852d8ce70b53aa6199ec1780f31c2 (patch) | |
tree | 7df60ab260a074368dbe29ad11f61344b218cac4 /chrome/browser/sessions/session_service.cc | |
parent | 690a99c80e4fe4e6eda9010b88e4438f57912336 (diff) | |
download | chromium_src-6a02963e645852d8ce70b53aa6199ec1780f31c2.zip chromium_src-6a02963e645852d8ce70b53aa6199ec1780f31c2.tar.gz chromium_src-6a02963e645852d8ce70b53aa6199ec1780f31c2.tar.bz2 |
This is a redo of my previous notification registrar change. I saw a crash in handling NAV_ENTRY_COMMITTED, so am changing all consumers of this to use the registrar so that it is impossible to forget to unregister.
The difference is that in tab_contents I moved the removal code in RemoveInfoBar to only remove the listener if an infobar was actually removed.
Review URL: http://codereview.chromium.org/16534
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@7589 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/sessions/session_service.cc')
-rw-r--r-- | chrome/browser/sessions/session_service.cc | 38 |
1 files changed, 12 insertions, 26 deletions
diff --git a/chrome/browser/sessions/session_service.cc b/chrome/browser/sessions/session_service.cc index 6016651..227c6ff 100644 --- a/chrome/browser/sessions/session_service.cc +++ b/chrome/browser/sessions/session_service.cc @@ -126,20 +126,6 @@ SessionService::SessionService(const std::wstring& save_path) SessionService::~SessionService() { Save(); - - // Unregister our notifications. - NotificationService::current()->RemoveObserver( - this, NOTIFY_TAB_PARENTED, NotificationService::AllSources()); - NotificationService::current()->RemoveObserver( - this, NOTIFY_TAB_CLOSED, NotificationService::AllSources()); - NotificationService::current()->RemoveObserver( - this, NOTIFY_NAV_LIST_PRUNED, NotificationService::AllSources()); - NotificationService::current()->RemoveObserver( - this, NOTIFY_NAV_ENTRY_CHANGED, NotificationService::AllSources()); - NotificationService::current()->RemoveObserver( - this, NOTIFY_NAV_ENTRY_COMMITTED, NotificationService::AllSources()); - NotificationService::current()->RemoveObserver( - this, NOTIFY_BROWSER_OPENED, NotificationService::AllSources()); } void SessionService::ResetFromCurrentBrowsers() { @@ -380,18 +366,18 @@ SessionService::Handle SessionService::GetLastSession( void SessionService::Init() { // Register for the notifications we're interested in. - NotificationService::current()->AddObserver( - this, NOTIFY_TAB_PARENTED, NotificationService::AllSources()); - NotificationService::current()->AddObserver( - this, NOTIFY_TAB_CLOSED, NotificationService::AllSources()); - NotificationService::current()->AddObserver( - this, NOTIFY_NAV_LIST_PRUNED, NotificationService::AllSources()); - NotificationService::current()->AddObserver( - this, NOTIFY_NAV_ENTRY_CHANGED, NotificationService::AllSources()); - NotificationService::current()->AddObserver( - this, NOTIFY_NAV_ENTRY_COMMITTED, NotificationService::AllSources()); - NotificationService::current()->AddObserver( - this, NOTIFY_BROWSER_OPENED, NotificationService::AllSources()); + registrar_.Add(this, NOTIFY_TAB_PARENTED, + NotificationService::AllSources()); + registrar_.Add(this, NOTIFY_TAB_CLOSED, + NotificationService::AllSources()); + registrar_.Add(this, NOTIFY_NAV_LIST_PRUNED, + NotificationService::AllSources()); + registrar_.Add(this, NOTIFY_NAV_ENTRY_CHANGED, + NotificationService::AllSources()); + registrar_.Add(this, NOTIFY_NAV_ENTRY_COMMITTED, + NotificationService::AllSources()); + registrar_.Add(this, NOTIFY_BROWSER_OPENED, + NotificationService::AllSources()); } void SessionService::Observe(NotificationType type, |