summaryrefslogtreecommitdiffstats
path: root/chrome/browser/ui/webui
diff options
context:
space:
mode:
authorphajdan.jr@chromium.org <phajdan.jr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-04-04 12:01:59 +0000
committerphajdan.jr@chromium.org <phajdan.jr@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2013-04-04 12:01:59 +0000
commit7e1ec8f220bbb5da6c09d07ef1a612fbe8048942 (patch)
tree6fa262ada7ca6f62c62b510d0df2af95daaf5eab /chrome/browser/ui/webui
parentbc96dad5024f6b875da211924a72cb0372824956 (diff)
downloadchromium_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.cc3
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());