diff options
author | estade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-10-20 18:31:13 +0000 |
---|---|---|
committer | estade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-10-20 18:31:13 +0000 |
commit | d7f8d808437dd643afee262fda7cebc381d71d63 (patch) | |
tree | c8be93f39579f92a1c8b418d17bea3860cbde271 /chrome | |
parent | 73f87c63acd7e192f43ec14a533ec23506062b97 (diff) | |
download | chromium_src-d7f8d808437dd643afee262fda7cebc381d71d63.zip chromium_src-d7f8d808437dd643afee262fda7cebc381d71d63.tar.gz chromium_src-d7f8d808437dd643afee262fda7cebc381d71d63.tar.bz2 |
Extensions: guarantee removal of BROWSER_WINDOW_READY registration.
In unit tests, we were not removing the registration because we never get the BROWSER_WINDOW_READY notification. When a browser later gets allocated the same memory address, we hit a DCHECK in registrar_.Add().
This change should be safe because BROWSER_WINDOW_READY only gets called at most once per browser instance.
BUG=none
TEST=linux build bots stop flaking on this test
Review URL: http://codereview.chromium.org/306009
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@29538 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome')
-rw-r--r-- | chrome/browser/extensions/extension_browser_event_router.cc | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/chrome/browser/extensions/extension_browser_event_router.cc b/chrome/browser/extensions/extension_browser_event_router.cc index 9a0f14a..63ef0f7 100644 --- a/chrome/browser/extensions/extension_browser_event_router.cc +++ b/chrome/browser/extensions/extension_browser_event_router.cc @@ -129,9 +129,6 @@ void ExtensionBrowserEventRouter::OnBrowserAdded(const Browser* browser) { void ExtensionBrowserEventRouter::OnBrowserWindowReady(const Browser* browser) { ListValue args; - registrar_.Remove(this, NotificationType::BROWSER_WINDOW_READY, - Source<const Browser>(browser)); - DictionaryValue* window_dictionary = ExtensionTabUtil::CreateWindowValue( browser, false); args.Append(window_dictionary); @@ -146,6 +143,9 @@ void ExtensionBrowserEventRouter::OnBrowserRemoving(const Browser* browser) { // Stop listening to TabStripModel events for this browser. browser->tabstrip_model()->RemoveObserver(this); + registrar_.Remove(this, NotificationType::BROWSER_WINDOW_READY, + Source<const Browser>(browser)); + DispatchSimpleBrowserEvent(browser->profile(), ExtensionTabUtil::GetWindowId(browser), events::kOnWindowRemoved); |