Chromium Code Reviews| Index: chrome/browser/extensions/theme_installed_infobar_delegate.cc |
| diff --git a/chrome/browser/extensions/theme_installed_infobar_delegate.cc b/chrome/browser/extensions/theme_installed_infobar_delegate.cc |
| index 49f690c65953dacc65a890dbac84df9081e973ce..0e374b6238c2bc39883de8834ebfc2a39fb5d15f 100644 |
| --- a/chrome/browser/extensions/theme_installed_infobar_delegate.cc |
| +++ b/chrome/browser/extensions/theme_installed_infobar_delegate.cc |
| @@ -98,8 +98,17 @@ void ThemeInstalledInfoBarDelegate::Observe( |
| // If the new theme is different from what this info bar is associated |
| // with, close this info bar since it is no longer relevant. |
| const Extension* extension = Details<const Extension>(details).ptr(); |
| - if (!extension || theme_id_ != extension->id()) |
| - tab_contents_->RemoveInfoBar(this); |
| + if (!extension || theme_id_ != extension->id()) { |
| + if (tab_contents_ && !tab_contents_->is_being_destroyed()) { |
| + tab_contents_->RemoveInfoBar(this); |
| + // The infobar is gone so there is no reason for this delegate to keep |
| + // a pointer to the tab_contents (a new delegate will be created if a new |
| + // infobar is created). The delegate can not be deleted yet because |
| + // it is still needed if we "undo" the theme change that triggered |
|
Aaron Boodman
2010/12/01 01:06:06
I think it would probably be good to reference the
Tessa MacDuff
2010/12/01 19:16:37
Done.
|
| + // this notification. |
| + tab_contents_ = NULL; |
| + } |
| + } |
| } |
| bool ThemeInstalledInfoBarDelegate::MatchesTheme(const Extension* theme) { |