summaryrefslogtreecommitdiffstats
path: root/content/renderer
diff options
context:
space:
mode:
authormkosiba@chromium.org <mkosiba@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-10-11 15:31:58 +0000
committermkosiba@chromium.org <mkosiba@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-10-11 15:31:58 +0000
commitd7b175e8762301a1bfca9d17681111bbf5bf5c0a (patch)
tree3dbd962ef0417f8977eebfd362ee5ffbcb5c1e27 /content/renderer
parentc2ee7f0e04e752bd40b1461e92756e7a320e40ec (diff)
downloadchromium_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.cc7
-rw-r--r--content/renderer/mock_content_renderer_client.h6
-rw-r--r--content/renderer/render_view_browsertest.cc4
-rw-r--r--content/renderer/render_view_impl.cc31
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,
+ &params.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.