summaryrefslogtreecommitdiffstats
path: root/content
diff options
context:
space:
mode:
Diffstat (limited to 'content')
-rw-r--r--content/content_tests.gypi2
-rw-r--r--content/public/renderer/content_renderer_client.h10
-rw-r--r--content/renderer/mock_content_renderer_client.cc6
-rw-r--r--content/renderer/mock_content_renderer_client.h5
-rw-r--r--content/renderer/render_view.cc13
-rw-r--r--content/shell/shell_content_renderer_client.cc6
-rw-r--r--content/shell/shell_content_renderer_client.h5
7 files changed, 29 insertions, 18 deletions
diff --git a/content/content_tests.gypi b/content/content_tests.gypi
index a341c25..45b6210 100644
--- a/content/content_tests.gypi
+++ b/content/content_tests.gypi
@@ -34,6 +34,7 @@
'browser/geolocation/mock_location_provider.cc',
'browser/geolocation/mock_location_provider.h',
'browser/mock_content_browser_client.cc',
+ 'browser/mock_content_browser_client.h',
'browser/mock_resource_context.cc',
'browser/mock_resource_context.h',
'browser/renderer_host/dummy_resource_handler.cc',
@@ -53,6 +54,7 @@
'gpu/gpu_idirect3d9_mock_win.cc',
'gpu/gpu_idirect3d9_mock_win.h',
'renderer/mock_content_renderer_client.cc',
+ 'renderer/mock_content_renderer_client.h',
'renderer/mock_render_process.cc',
'renderer/mock_render_process.h',
'test/browser_test.h',
diff --git a/content/public/renderer/content_renderer_client.h b/content/public/renderer/content_renderer_client.h
index 3ed428b..9855ee0 100644
--- a/content/public/renderer/content_renderer_client.h
+++ b/content/public/renderer/content_renderer_client.h
@@ -62,10 +62,12 @@ class ContentRendererClient {
const WebKit::WebPluginParams& params,
WebKit::WebPlugin** plugin) = 0;
- // Give the embedder the ability to set an error page.
- virtual void ShowErrorPage(RenderView* render_view,
- WebKit::WebFrame* frame,
- int http_status_code) = 0;
+ // Returns true if the embedder has an error page to show for the given http
+ // status code. If so |error_domain| should be set to according to WebURLError
+ // and the embedder's GetNavigationErrorHtml will be called afterwards to get
+ // the error html.
+ virtual bool HasErrorPage(int http_status_code,
+ std::string* error_domain) = 0;
// Returns the html to display when a navigation error occurs.
virtual std::string GetNavigationErrorHtml(
diff --git a/content/renderer/mock_content_renderer_client.cc b/content/renderer/mock_content_renderer_client.cc
index b8a8e6d..eef7981 100644
--- a/content/renderer/mock_content_renderer_client.cc
+++ b/content/renderer/mock_content_renderer_client.cc
@@ -37,9 +37,9 @@ bool MockContentRendererClient::OverrideCreatePlugin(
return false;
}
-void MockContentRendererClient::ShowErrorPage(RenderView* render_view,
- WebKit::WebFrame* frame,
- int http_status_code) {
+bool MockContentRendererClient::HasErrorPage(int http_status_code,
+ std::string* error_domain) {
+ return false;
}
std::string MockContentRendererClient::GetNavigationErrorHtml(
diff --git a/content/renderer/mock_content_renderer_client.h b/content/renderer/mock_content_renderer_client.h
index ea25c4f..28dd4a8 100644
--- a/content/renderer/mock_content_renderer_client.h
+++ b/content/renderer/mock_content_renderer_client.h
@@ -27,9 +27,8 @@ class MockContentRendererClient : public ContentRendererClient {
WebKit::WebFrame* frame,
const WebKit::WebPluginParams& params,
WebKit::WebPlugin** plugin) OVERRIDE;
- virtual void ShowErrorPage(RenderView* render_view,
- WebKit::WebFrame* frame,
- int http_status_code) OVERRIDE;
+ virtual bool HasErrorPage(int http_status_code,
+ std::string* error_domain) OVERRIDE;
virtual std::string GetNavigationErrorHtml(
const WebKit::WebURLRequest& failed_request,
const WebKit::WebURLError& error) OVERRIDE;
diff --git a/content/renderer/render_view.cc b/content/renderer/render_view.cc
index 4dfc3f9..ffee00d 100644
--- a/content/renderer/render_view.cc
+++ b/content/renderer/render_view.cc
@@ -2690,8 +2690,17 @@ void RenderView::didFinishResourceLoad(
}
}
- content::GetContentClient()->renderer()->ShowErrorPage(
- this, frame, http_status_code);
+ std::string error_domain;
+ if (content::GetContentClient()->renderer()->HasErrorPage(
+ http_status_code, &error_domain)) {
+ WebURLError error;
+ error.unreachableURL = frame->document().url();
+ error.domain = WebString::fromUTF8(error_domain);
+ error.reason = http_status_code;
+
+ LoadNavigationErrorPage(
+ frame, frame->dataSource()->request(), error, std::string(), true);
+ }
}
void RenderView::didFailResourceLoad(
diff --git a/content/shell/shell_content_renderer_client.cc b/content/shell/shell_content_renderer_client.cc
index ea94b90..0c5f499 100644
--- a/content/shell/shell_content_renderer_client.cc
+++ b/content/shell/shell_content_renderer_client.cc
@@ -36,9 +36,9 @@ bool ShellContentRendererClient::OverrideCreatePlugin(
return false;
}
-void ShellContentRendererClient::ShowErrorPage(RenderView* render_view,
- WebKit::WebFrame* frame,
- int http_status_code) {
+bool ShellContentRendererClient::HasErrorPage(int http_status_code,
+ std::string* error_domain) {
+ return false;
}
std::string ShellContentRendererClient::GetNavigationErrorHtml(
diff --git a/content/shell/shell_content_renderer_client.h b/content/shell/shell_content_renderer_client.h
index 05449ee..aa8011a 100644
--- a/content/shell/shell_content_renderer_client.h
+++ b/content/shell/shell_content_renderer_client.h
@@ -24,9 +24,8 @@ class ShellContentRendererClient : public ContentRendererClient {
WebKit::WebFrame* frame,
const WebKit::WebPluginParams& params,
WebKit::WebPlugin** plugin) OVERRIDE;
- virtual void ShowErrorPage(RenderView* render_view,
- WebKit::WebFrame* frame,
- int http_status_code) OVERRIDE;
+ virtual bool HasErrorPage(int http_status_code,
+ std::string* error_domain) OVERRIDE;
virtual std::string GetNavigationErrorHtml(
const WebKit::WebURLRequest& failed_request,
const WebKit::WebURLError& error) OVERRIDE;