Index: chrome/browser/ui/views/frame/desktop_browser_frame_aura.cc |
diff --git a/chrome/browser/ui/views/frame/desktop_browser_frame_aura.cc b/chrome/browser/ui/views/frame/desktop_browser_frame_aura.cc |
index 8b5bb71a8b588014f49fd32c8a3a52fe4afc7d19..473f1169366872164e449c2eab5d2d1bb4b5bdcc 100644 |
--- a/chrome/browser/ui/views/frame/desktop_browser_frame_aura.cc |
+++ b/chrome/browser/ui/views/frame/desktop_browser_frame_aura.cc |
@@ -6,6 +6,7 @@ |
#include "chrome/app/chrome_command_ids.h" |
#include "chrome/browser/ui/views/frame/browser_desktop_root_window_host.h" |
+#include "chrome/browser/ui/views/frame/browser_shutdown.h" |
#include "chrome/browser/ui/views/frame/browser_view.h" |
#include "chrome/browser/ui/views/frame/desktop_user_action_handler_aura.h" |
#include "grit/chromium_strings.h" |
@@ -46,6 +47,10 @@ DesktopBrowserFrameAura::~DesktopBrowserFrameAura() { |
// DesktopBrowserFrameAura, views::DesktopNativeWidgetAura overrides: |
void DesktopBrowserFrameAura::OnHostClosed() { |
+ // Destroy any remaining WebContents early on. Doing so may result in |
+ // calling back to one of the Views/LayoutManagers or supporting classes of |
+ // BrowserView. By destroying here we ensure all said classes are valid. |
+ DestroyBrowserWebContents(browser_view_->browser()); |
aura::client::SetVisibilityClient(GetNativeView()->GetRootWindow(), NULL); |
DesktopNativeWidgetAura::OnHostClosed(); |
} |