summaryrefslogtreecommitdiffstats
path: root/chrome/browser/tabs
diff options
context:
space:
mode:
authormbelshe@google.com <mbelshe@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2009-04-17 21:53:58 +0000
committermbelshe@google.com <mbelshe@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2009-04-17 21:53:58 +0000
commit9d9bbee2f0cf6e02188cef6344f99f758f6fac27 (patch)
tree41445047fa8b671337b498bea757b0abacc61a0b /chrome/browser/tabs
parent93e1840d65de867d2ec82c97191e9bc028581b68 (diff)
downloadchromium_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.cc5
-rw-r--r--chrome/browser/tabs/tab_strip_model.h5
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);
};