diff options
author | mbelshe@google.com <mbelshe@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-04-17 21:53:58 +0000 |
---|---|---|
committer | mbelshe@google.com <mbelshe@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-04-17 21:53:58 +0000 |
commit | 9d9bbee2f0cf6e02188cef6344f99f758f6fac27 (patch) | |
tree | 41445047fa8b671337b498bea757b0abacc61a0b /chrome/browser/tabs | |
parent | 93e1840d65de867d2ec82c97191e9bc028581b68 (diff) | |
download | chromium_src-9d9bbee2f0cf6e02188cef6344f99f758f6fac27.zip chromium_src-9d9bbee2f0cf6e02188cef6344f99f758f6fac27.tar.gz chromium_src-9d9bbee2f0cf6e02188cef6344f99f758f6fac27.tar.bz2 |
Due to some crashes in teardown, change NotificationObservers
for TAB_CONTENTS_DESTROYED to use the NotificationRegistrar
to ensure proper cleanup.
Review URL: http://codereview.chromium.org/79051
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@13970 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/tabs')
-rw-r--r-- | chrome/browser/tabs/tab_strip_model.cc | 5 | ||||
-rw-r--r-- | chrome/browser/tabs/tab_strip_model.h | 5 |
2 files changed, 5 insertions, 5 deletions
diff --git a/chrome/browser/tabs/tab_strip_model.cc b/chrome/browser/tabs/tab_strip_model.cc index 5882705..2fc7e51 100644 --- a/chrome/browser/tabs/tab_strip_model.cc +++ b/chrome/browser/tabs/tab_strip_model.cc @@ -43,7 +43,7 @@ TabStripModel::TabStripModel(TabStripModelDelegate* delegate, Profile* profile) closing_all_(false), order_controller_(NULL) { DCHECK(delegate_); - NotificationService::current()->AddObserver(this, + registrar_.Add(this, NotificationType::TAB_CONTENTS_DESTROYED, NotificationService::AllSources()); order_controller_ = new TabStripModelOrderController(this); @@ -52,9 +52,6 @@ TabStripModel::TabStripModel(TabStripModelDelegate* delegate, Profile* profile) TabStripModel::~TabStripModel() { STLDeleteContainerPointers(contents_data_.begin(), contents_data_.end()); delete order_controller_; - NotificationService::current()->RemoveObserver(this, - NotificationType::TAB_CONTENTS_DESTROYED, - NotificationService::AllSources()); } void TabStripModel::AddObserver(TabStripModelObserver* observer) { diff --git a/chrome/browser/tabs/tab_strip_model.h b/chrome/browser/tabs/tab_strip_model.h index bb9b2c5..abc8051 100644 --- a/chrome/browser/tabs/tab_strip_model.h +++ b/chrome/browser/tabs/tab_strip_model.h @@ -8,7 +8,7 @@ #include <vector> #include "base/observer_list.h" -#include "chrome/common/notification_observer.h" +#include "chrome/common/notification_registrar.h" #include "chrome/common/page_transition_types.h" namespace gfx { @@ -560,6 +560,9 @@ class TabStripModel : public NotificationObserver { typedef ObserverList<TabStripModelObserver> TabStripModelObservers; TabStripModelObservers observers_; + // A scoped container for notification registries. + NotificationRegistrar registrar_; + DISALLOW_COPY_AND_ASSIGN(TabStripModel); }; |