| Index: content/browser/frame_host/render_frame_host_impl.cc
|
| diff --git a/content/browser/frame_host/render_frame_host_impl.cc b/content/browser/frame_host/render_frame_host_impl.cc
|
| index 88daf80dcaf5e3e2f22c8a3f7fa8f47575df62f8..4bd4114e0cec6b3fc646356c19bd153dc3029cf8 100644
|
| --- a/content/browser/frame_host/render_frame_host_impl.cc
|
| +++ b/content/browser/frame_host/render_frame_host_impl.cc
|
| @@ -1601,6 +1601,8 @@ void RenderFrameHostImpl::OnRunJavaScriptMessage(
|
| // process input events.
|
| GetProcess()->SetIgnoreInputEvents(true);
|
| render_view_host_->GetWidget()->StopHangMonitorTimeout();
|
| + render_view_host_->GetWidget()->SetHangMonitorKnownUnresponsive(true);
|
| + is_within_javascript_dialog_ = true;
|
| delegate_->RunJavaScriptMessage(this, message, default_prompt,
|
| frame_url, type, reply_msg);
|
| }
|
| @@ -1613,6 +1615,8 @@ void RenderFrameHostImpl::OnRunBeforeUnloadConfirm(
|
| // shouldn't process input events.
|
| GetProcess()->SetIgnoreInputEvents(true);
|
| render_view_host_->GetWidget()->StopHangMonitorTimeout();
|
| + render_view_host_->GetWidget()->SetHangMonitorKnownUnresponsive(true);
|
| + is_within_javascript_dialog_ = true;
|
| delegate_->RunBeforeUnloadConfirm(this, is_reload, reply_msg);
|
| }
|
|
|
| @@ -2414,6 +2418,10 @@ void RenderFrameHostImpl::JavaScriptDialogClosed(
|
| const base::string16& user_input,
|
| bool dialog_was_suppressed) {
|
| GetProcess()->SetIgnoreInputEvents(false);
|
| + if (is_within_javascript_dialog_) {
|
| + render_view_host_->GetWidget()->SetHangMonitorKnownUnresponsive(false);
|
| + is_within_javascript_dialog_ = false;
|
| + }
|
| bool is_waiting = is_waiting_for_beforeunload_ack_ || IsWaitingForUnloadACK();
|
|
|
| // If we are executing as part of (before)unload event handling, we don't
|
|
|