diff options
author | mkosiba@chromium.org <mkosiba@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-10-11 15:31:58 +0000 |
---|---|---|
committer | mkosiba@chromium.org <mkosiba@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-10-11 15:31:58 +0000 |
commit | d7b175e8762301a1bfca9d17681111bbf5bf5c0a (patch) | |
tree | 3dbd962ef0417f8977eebfd362ee5ffbcb5c1e27 /content/renderer | |
parent | c2ee7f0e04e752bd40b1461e92756e7a320e40ec (diff) | |
download | chromium_src-d7b175e8762301a1bfca9d17681111bbf5bf5c0a.zip chromium_src-d7b175e8762301a1bfca9d17681111bbf5bf5c0a.tar.gz chromium_src-d7b175e8762301a1bfca9d17681111bbf5bf5c0a.tar.bz2 |
Add error description to the DidFailProvisionalLoad callback.
This will add an error description field to the TabContentsObserver::
DidFailProvisionalLoad callback.
The change should not have any impact on current behavior.
This is needed for the Chromium port on Android.
BUG=none
TEST=base_unittests,content_unittests,browser_tests
Review URL: http://codereview.chromium.org/8142032
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@104895 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'content/renderer')
-rw-r--r-- | content/renderer/mock_content_renderer_client.cc | 7 | ||||
-rw-r--r-- | content/renderer/mock_content_renderer_client.h | 6 | ||||
-rw-r--r-- | content/renderer/render_view_browsertest.cc | 4 | ||||
-rw-r--r-- | content/renderer/render_view_impl.cc | 31 |
4 files changed, 35 insertions, 13 deletions
diff --git a/content/renderer/mock_content_renderer_client.cc b/content/renderer/mock_content_renderer_client.cc index eef7981..984afa9 100644 --- a/content/renderer/mock_content_renderer_client.cc +++ b/content/renderer/mock_content_renderer_client.cc @@ -42,10 +42,11 @@ bool MockContentRendererClient::HasErrorPage(int http_status_code, return false; } -std::string MockContentRendererClient::GetNavigationErrorHtml( +void MockContentRendererClient::GetNavigationErrorStrings( const WebKit::WebURLRequest& failed_request, - const WebKit::WebURLError& error) { - return std::string(); + const WebKit::WebURLError& error, + std::string* error_html, + string16* error_description) { } bool MockContentRendererClient::RunIdleHandlerWhenWidgetsHidden() { diff --git a/content/renderer/mock_content_renderer_client.h b/content/renderer/mock_content_renderer_client.h index 28dd4a8..bcec7ac 100644 --- a/content/renderer/mock_content_renderer_client.h +++ b/content/renderer/mock_content_renderer_client.h @@ -29,9 +29,11 @@ class MockContentRendererClient : public ContentRendererClient { WebKit::WebPlugin** plugin) OVERRIDE; virtual bool HasErrorPage(int http_status_code, std::string* error_domain) OVERRIDE; - virtual std::string GetNavigationErrorHtml( + virtual void GetNavigationErrorStrings( const WebKit::WebURLRequest& failed_request, - const WebKit::WebURLError& error) OVERRIDE; + const WebKit::WebURLError& error, + std::string* error_html, + string16* error_description) OVERRIDE; virtual bool RunIdleHandlerWhenWidgetsHidden() OVERRIDE; virtual bool AllowPopup(const GURL& creator) OVERRIDE; virtual bool ShouldFork(WebKit::WebFrame* frame, diff --git a/content/renderer/render_view_browsertest.cc b/content/renderer/render_view_browsertest.cc index 78df67c6..5db8908 100644 --- a/content/renderer/render_view_browsertest.cc +++ b/content/renderer/render_view_browsertest.cc @@ -894,7 +894,7 @@ TEST_F(RenderViewImplTest, InsertCharacters) { TEST_F(RenderViewImplTest, DISABLED_DidFailProvisionalLoadWithErrorForError) { GetMainFrame()->enableViewSourceMode(true); WebURLError error; - error.domain.fromUTF8("test_domain"); + error.domain = WebString::fromUTF8(net::kErrorDomain); error.reason = net::ERR_FILE_NOT_FOUND; error.unreachableURL = GURL("http://foo"); WebFrame* web_frame = GetMainFrame(); @@ -907,7 +907,7 @@ TEST_F(RenderViewImplTest, DISABLED_DidFailProvisionalLoadWithErrorForError) { TEST_F(RenderViewImplTest, DidFailProvisionalLoadWithErrorForCancellation) { GetMainFrame()->enableViewSourceMode(true); WebURLError error; - error.domain.fromUTF8("test_domain"); + error.domain = WebString::fromUTF8(net::kErrorDomain); error.reason = net::ERR_ABORTED; error.unreachableURL = GURL("http://foo"); WebFrame* web_frame = GetMainFrame(); diff --git a/content/renderer/render_view_impl.cc b/content/renderer/render_view_impl.cc index 03a6615..e6bf678 100644 --- a/content/renderer/render_view_impl.cc +++ b/content/renderer/render_view_impl.cc @@ -1252,10 +1252,18 @@ void RenderViewImpl::LoadNavigationErrorPage( const WebURLError& error, const std::string& html, bool replace) { - std::string alt_html = !html.empty() ? html : - content::GetContentClient()->renderer()->GetNavigationErrorHtml( - failed_request, error); - frame->loadHTMLString(alt_html, + std::string alt_html; + const std::string* error_html; + + if (!html.empty()) { + error_html = &html; + } else { + content::GetContentClient()->renderer()->GetNavigationErrorStrings( + failed_request, error, &alt_html, NULL); + error_html = &alt_html; + } + + frame->loadHTMLString(*error_html, GURL(chrome::kUnreachableWebDataURL), error.unreachableURL, replace); @@ -2352,9 +2360,20 @@ void RenderViewImpl::didFailProvisionalLoad(WebFrame* frame, bool show_repost_interstitial = (error.reason == net::ERR_CACHE_MISS && EqualsASCII(failed_request.httpMethod(), "POST")); + + ViewHostMsg_DidFailProvisionalLoadWithError_Params params; + params.frame_id = frame->identifier(); + params.is_main_frame = !frame->parent(); + params.error_code = error.reason; + content::GetContentClient()->renderer()->GetNavigationErrorStrings( + failed_request, + error, + NULL, + ¶ms.error_description); + params.url = error.unreachableURL; + params.showing_repost_interstitial = show_repost_interstitial; Send(new ViewHostMsg_DidFailProvisionalLoadWithError( - routing_id_, frame->identifier(), !frame->parent(), error.reason, - error.unreachableURL, show_repost_interstitial)); + routing_id_, params)); // Don't display an error page if this is simply a cancelled load. Aside // from being dumb, WebCore doesn't expect it and it will cause a crash. |