diff options
author | phajdan.jr@chromium.org <phajdan.jr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-04-04 12:01:59 +0000 |
---|---|---|
committer | phajdan.jr@chromium.org <phajdan.jr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-04-04 12:01:59 +0000 |
commit | 7e1ec8f220bbb5da6c09d07ef1a612fbe8048942 (patch) | |
tree | 6fa262ada7ca6f62c62b510d0df2af95daaf5eab /chrome/browser/ui/webui | |
parent | bc96dad5024f6b875da211924a72cb0372824956 (diff) | |
download | chromium_src-7e1ec8f220bbb5da6c09d07ef1a612fbe8048942.zip chromium_src-7e1ec8f220bbb5da6c09d07ef1a612fbe8048942.tar.gz chromium_src-7e1ec8f220bbb5da6c09d07ef1a612fbe8048942.tar.bz2 |
Fix browser hang with chrome://extensions
We only need to observe WebContents once
- trying to do it every time we receive a notification
results in observing the WebContents on RenderViewDeleted,
which includes the case when WebContents are deleted,
and causes an infinite loop by adding a WebContentsObserver
right after it is removed by WebContents that are destroyed.
BUG=225656
Review URL: https://chromiumcodereview.appspot.com/13597002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@192308 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/ui/webui')
-rw-r--r-- | chrome/browser/ui/webui/extensions/extension_settings_handler.cc | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/chrome/browser/ui/webui/extensions/extension_settings_handler.cc b/chrome/browser/ui/webui/extensions/extension_settings_handler.cc index 79e9c00..1e4aa52 100644 --- a/chrome/browser/ui/webui/extensions/extension_settings_handler.cc +++ b/chrome/browser/ui/webui/extensions/extension_settings_handler.cc @@ -645,7 +645,6 @@ void ExtensionSettingsHandler::HandleRequestExtensionsData( web_ui()->CallJavascriptFunction("ExtensionSettings.returnExtensionsData", results); - content::WebContentsObserver::Observe(web_ui()->GetWebContents()); MaybeRegisterForNotifications(); } @@ -951,6 +950,8 @@ void ExtensionSettingsHandler::MaybeRegisterForNotifications() { content::Source<extensions::ExtensionPrefs>( profile->GetExtensionService()->extension_prefs())); + content::WebContentsObserver::Observe(web_ui()->GetWebContents()); + warning_service_observer_.Add( extensions::ExtensionSystem::Get(profile)->warning_service()); |