summaryrefslogtreecommitdiffstats
path: root/content/browser
diff options
context:
space:
mode:
authorcreis@chromium.org <creis@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-04-28 20:26:16 +0000
committercreis@chromium.org <creis@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-04-28 20:26:16 +0000
commitc95fa8b2a9133416258ff51c10c2a636b8748775 (patch)
treed228dbcab025132d115b751de9d6d0dd595c04e1 /content/browser
parent939404935277cd0b4ecbe606781297361383bff0 (diff)
downloadchromium_src-c95fa8b2a9133416258ff51c10c2a636b8748775.zip
chromium_src-c95fa8b2a9133416258ff51c10c2a636b8748775.tar.gz
chromium_src-c95fa8b2a9133416258ff51c10c2a636b8748775.tar.bz2
Update the URL if the user cancels a beforeunload handler.
BUG=80401 TEST=BrowserTest.CancelBeforeUnloadResetsURL Review URL: http://codereview.chromium.org/6904039 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@83388 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content/browser')
-rw-r--r--content/browser/renderer_host/render_view_host.cc4
-rw-r--r--content/browser/renderer_host/render_view_host_delegate.h3
-rw-r--r--content/browser/tab_contents/tab_contents.cc11
-rw-r--r--content/browser/tab_contents/tab_contents.h1
4 files changed, 16 insertions, 3 deletions
diff --git a/content/browser/renderer_host/render_view_host.cc b/content/browser/renderer_host/render_view_host.cc
index 2d661ed..98bcbf8 100644
--- a/content/browser/renderer_host/render_view_host.cc
+++ b/content/browser/renderer_host/render_view_host.cc
@@ -1196,6 +1196,10 @@ void RenderViewHost::OnMsgShouldCloseACK(bool proceed) {
management_delegate->ShouldClosePage(
unload_ack_is_for_cross_site_transition_, proceed);
}
+
+ // If canceled, notify the delegate to cancel its pending navigation entry.
+ if (!proceed)
+ delegate_->DidCancelLoading();
}
void RenderViewHost::WindowMoveOrResizeStarted() {
diff --git a/content/browser/renderer_host/render_view_host_delegate.h b/content/browser/renderer_host/render_view_host_delegate.h
index e4319c5..dc9d120 100644
--- a/content/browser/renderer_host/render_view_host_delegate.h
+++ b/content/browser/renderer_host/render_view_host_delegate.h
@@ -464,6 +464,9 @@ class RenderViewHostDelegate : public IPC::Channel::Listener {
// notion of the throbber stopping.
virtual void DidStopLoading() {}
+ // The pending page load was canceled.
+ virtual void DidCancelLoading() {}
+
// The RenderView made progress loading a page's top frame.
// |progress| is a value between 0 (nothing loaded) to 1.0 (top frame
// entirely loaded).
diff --git a/content/browser/tab_contents/tab_contents.cc b/content/browser/tab_contents/tab_contents.cc
index ace1679..ed362a3 100644
--- a/content/browser/tab_contents/tab_contents.cc
+++ b/content/browser/tab_contents/tab_contents.cc
@@ -1225,9 +1225,7 @@ void TabContents::OnDidFailProvisionalLoadWithError(
// before the page loaded so that the discard would discard the wrong entry.
NavigationEntry* pending_entry = controller_.pending_entry();
if (pending_entry && pending_entry->url() == validated_url) {
- controller_.DiscardNonCommittedEntries();
- // Update the URL display.
- NotifyNavigationStateChanged(TabContents::INVALIDATE_URL);
+ DidCancelLoading();
}
render_manager_.RendererAbortedProvisionalLoad(render_view_host());
@@ -1975,6 +1973,13 @@ void TabContents::DidStopLoading() {
FOR_EACH_OBSERVER(TabContentsObserver, observers_, DidStopLoading());
}
+void TabContents::DidCancelLoading() {
+ controller_.DiscardNonCommittedEntries();
+
+ // Update the URL display.
+ NotifyNavigationStateChanged(TabContents::INVALIDATE_URL);
+}
+
void TabContents::DidChangeLoadProgress(double progress) {
if (delegate())
delegate()->LoadProgressChanged(progress);
diff --git a/content/browser/tab_contents/tab_contents.h b/content/browser/tab_contents/tab_contents.h
index 0d54825..5d3cd23 100644
--- a/content/browser/tab_contents/tab_contents.h
+++ b/content/browser/tab_contents/tab_contents.h
@@ -798,6 +798,7 @@ class TabContents : public PageNavigator,
virtual void RequestMove(const gfx::Rect& new_bounds);
virtual void DidStartLoading();
virtual void DidStopLoading();
+ virtual void DidCancelLoading();
virtual void DidChangeLoadProgress(double progress);
virtual void DocumentOnLoadCompletedInMainFrame(
RenderViewHost* render_view_host,