Index: chrome/browser/ui/unload_controller.cc |
diff --git a/chrome/browser/ui/unload_controller.cc b/chrome/browser/ui/unload_controller.cc |
index 3759839be3d1690b8d0753fff9d431907c3be874..856ad7d8ea4a50ab6300f4b755111e327769bd9f 100644 |
--- a/chrome/browser/ui/unload_controller.cc |
+++ b/chrome/browser/ui/unload_controller.cc |
@@ -6,6 +6,7 @@ |
#include "base/message_loop/message_loop.h" |
#include "chrome/browser/chrome_notification_types.h" |
+#include "chrome/browser/devtools/devtools_window.h" |
#include "chrome/browser/ui/browser.h" |
#include "chrome/browser/ui/browser_tabstrip.h" |
#include "chrome/browser/ui/tabs/tab_strip_model.h" |
@@ -121,7 +122,8 @@ bool UnloadController::TabsNeedBeforeUnloadFired() { |
content::WebContents* contents = |
browser_->tab_strip_model()->GetWebContentsAt(i); |
if (!ContainsKey(tabs_needing_unload_fired_, contents) && |
- contents->NeedToFireBeforeUnload()) { |
+ (contents->NeedToFireBeforeUnload() || |
+ DevToolsWindow::GetInstanceForInspectedTab(contents))) { |
tabs_needing_before_unload_fired_.insert(contents); |
} |
} |
@@ -218,7 +220,12 @@ void UnloadController::ProcessPendingTabs() { |
// Null check render_view_host here as this gets called on a PostTask and |
// the tab's render_view_host may have been nulled out. |
if (web_contents->GetRenderViewHost()) { |
- web_contents->GetRenderViewHost()->FirePageBeforeUnload(false); |
+ DevToolsWindow* devtools_window = |
+ DevToolsWindow::GetInstanceForInspectedTab(web_contents); |
+ if (devtools_window) |
+ devtools_window->InspectedPageWillClose(); |
+ else |
+ web_contents->GetRenderViewHost()->FirePageBeforeUnload(false); |
} else { |
ClearUnloadState(web_contents, true); |
} |
@@ -256,6 +263,13 @@ void UnloadController::CancelWindowClose() { |
// Closing of window can be canceled from a beforeunload handler. |
DCHECK(is_attempting_to_close_browser_); |
tabs_needing_before_unload_fired_.clear(); |
+ for (UnloadListenerSet::iterator it = tabs_needing_unload_fired_.begin(); |
+ it != tabs_needing_unload_fired_.end(); ++it) { |
+ DevToolsWindow* dev_tools_window = |
+ DevToolsWindow::GetInstanceForInspectedTab(*it); |
+ if (dev_tools_window) |
+ dev_tools_window->InspectedPageCancelClose(); |
+ } |
tabs_needing_unload_fired_.clear(); |
if (is_calling_before_unload_handlers()) { |
base::Callback<void(bool)> on_close_confirmed = on_close_confirmed_; |