From de51597b22f7b91ee9d7316bbf362ad8d73df277 Mon Sep 17 00:00:00 2001 From: Marshall Greenblatt Date: Thu, 23 Sep 2010 15:11:25 +0000 Subject: [PATCH] Fix back/forward navigation when the history contains pages that failed to load (issue #125). git-svn-id: https://chromiumembedded.googlecode.com/svn/trunk@106 5089003a-bbd8-11dd-ad1f-f1f9622dbc98 --- libcef/browser_webview_delegate.cc | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/libcef/browser_webview_delegate.cc b/libcef/browser_webview_delegate.cc index 08c2a1751..2953e01a8 100644 --- a/libcef/browser_webview_delegate.cc +++ b/libcef/browser_webview_delegate.cc @@ -672,7 +672,12 @@ void BrowserWebViewDelegate::didFailProvisionalLoad( const WebDataSource* failed_ds = frame->provisionalDataSource(); BrowserExtraData* extra_data = static_cast(failed_ds->extraData()); - bool replace = extra_data && extra_data->pending_page_id != -1; + + if (extra_data && !extra_data->request_committed) { + // Set the pending extra_data for our error page as the same pending_page_id + // to keep the history from getting messed up. + set_pending_extra_data(new BrowserExtraData(extra_data->pending_page_id)); + } std::string error_text; @@ -695,7 +700,10 @@ void BrowserWebViewDelegate::didFailProvisionalLoad( frame->enableViewSourceMode(false); frame->loadHTMLString( - error_text, GURL("testshell-error:"), error.unreachableURL, replace); + error_text, GURL("testshell-error:"), error.unreachableURL, false); + + // In case loadHTMLString failed before DidCreateDataSource was called. + set_pending_extra_data(NULL); } void BrowserWebViewDelegate::didCommitProvisionalLoad(