Upstream version 5.34.104.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / ui / views / frame / browser_frame_ash.cc
index b0d431d..e1056a5 100644 (file)
@@ -9,6 +9,7 @@
 #include "ash/wm/window_util.h"
 #include "chrome/browser/ui/browser_commands.h"
 #include "chrome/browser/ui/browser_finder.h"
+#include "chrome/browser/ui/views/frame/browser_shutdown.h"
 #include "chrome/browser/ui/views/frame/browser_view.h"
 #include "ui/aura/client/aura_constants.h"
 #include "ui/aura/window.h"
@@ -88,6 +89,14 @@ BrowserFrameAsh::BrowserFrameAsh(BrowserFrame* browser_frame,
 ///////////////////////////////////////////////////////////////////////////////
 // BrowserFrameAsh, views::NativeWidgetAura overrides:
 
+void BrowserFrameAsh::OnWindowDestroying() {
+  // 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());
+  NativeWidgetAura::OnWindowDestroying();
+}
+
 void BrowserFrameAsh::OnWindowTargetVisibilityChanged(bool visible) {
   if (visible) {
     // Once the window has been shown we know the requested bounds