Index: chrome/browser/ui/views/extensions/extension_dialog.cc |
diff --git a/chrome/browser/ui/views/extensions/extension_dialog.cc b/chrome/browser/ui/views/extensions/extension_dialog.cc |
index 08f4e7548f008691380c3863bbf476c858f1ab29..a38886fed9169d4328e8eedf671f64cd90acf628 100644 |
--- a/chrome/browser/ui/views/extensions/extension_dialog.cc |
+++ b/chrome/browser/ui/views/extensions/extension_dialog.cc |
@@ -36,6 +36,9 @@ ExtensionDialog::ExtensionDialog(ExtensionHost* host, |
// Listen for the containing view calling window.close(); |
registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_HOST_VIEW_SHOULD_CLOSE, |
content::Source<Profile>(host->profile())); |
+ // Listen for a crash or other termination of the extension process. |
+ registrar_.Add(this, chrome::NOTIFICATION_EXTENSION_PROCESS_TERMINATED, |
+ content::Source<Profile>(host->profile())); |
} |
ExtensionDialog::~ExtensionDialog() { |
@@ -173,6 +176,12 @@ void ExtensionDialog::Observe(int type, |
return; |
Close(); |
break; |
+ case chrome::NOTIFICATION_EXTENSION_PROCESS_TERMINATED: |
+ if (content::Details<ExtensionHost>(host()) != details) |
+ return; |
+ if (observer_) |
+ observer_->ExtensionTerminated(this); |
+ break; |
default: |
NOTREACHED() << L"Received unexpected notification"; |
break; |