| 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_;
|
|
|