summaryrefslogtreecommitdiffstats
path: root/chrome/browser/renderer_host/render_view_host.cc
diff options
context:
space:
mode:
authorcreis@google.com <creis@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2009-09-30 22:05:29 +0000
committercreis@google.com <creis@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2009-09-30 22:05:29 +0000
commit802dc1e3cde70a4db050fe49b63dedb80874bc1f (patch)
treea6459b9429d7e5efae54b3e71ebaf965067d0cee /chrome/browser/renderer_host/render_view_host.cc
parent98ce1ee2b9754b6b89f5fad0c939712c19d76aef (diff)
downloadchromium_src-802dc1e3cde70a4db050fe49b63dedb80874bc1f.zip
chromium_src-802dc1e3cde70a4db050fe49b63dedb80874bc1f.tar.gz
chromium_src-802dc1e3cde70a4db050fe49b63dedb80874bc1f.tar.bz2
Stops the throbber from spinning if the user cancels a beforeunload dialog,
if the dialog is triggered by a reload or location bar entry. BUG=22004 TEST=BrowserTest.ReloadThenCancelBeforeUnload Review URL: http://codereview.chromium.org/256015 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@27663 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/renderer_host/render_view_host.cc')
-rw-r--r--chrome/browser/renderer_host/render_view_host.cc9
1 files changed, 9 insertions, 0 deletions
diff --git a/chrome/browser/renderer_host/render_view_host.cc b/chrome/browser/renderer_host/render_view_host.cc
index 4184d43..46d4cdf 100644
--- a/chrome/browser/renderer_host/render_view_host.cc
+++ b/chrome/browser/renderer_host/render_view_host.cc
@@ -110,6 +110,7 @@ RenderViewHost::RenderViewHost(SiteInstance* instance,
navigations_suspended_(false),
suspended_nav_message_(NULL),
run_modal_reply_msg_(NULL),
+ is_showing_before_unload_dialog_(false),
is_waiting_for_unload_ack_(false),
unload_ack_is_for_cross_site_transition_(false),
are_javascript_messages_suppressed_(false),
@@ -578,6 +579,13 @@ void RenderViewHost::JavaScriptMessageBoxClosed(IPC::Message* reply_msg,
StartHangMonitorTimeout(TimeDelta::FromMilliseconds(kUnloadTimeoutMS));
}
+ if (is_showing_before_unload_dialog_ && !success) {
+ // If a beforeunload dialog is canceled, we need to stop the throbber from
+ // spinning, since we forced it to start spinning in Navigate.
+ delegate_->DidStopLoading(this);
+ }
+ is_showing_before_unload_dialog_ = false;
+
ViewHostMsg_RunJavaScriptMessage::WriteReplyParams(reply_msg,
success, prompt);
Send(reply_msg);
@@ -1301,6 +1309,7 @@ void RenderViewHost::OnMsgRunBeforeUnloadConfirm(const GURL& frame_url,
// shouldn't process input events.
process()->set_ignore_input_events(true);
StopHangMonitorTimeout();
+ is_showing_before_unload_dialog_ = true;
delegate_->RunBeforeUnloadConfirm(message, reply_msg);
}