Index: chrome/renderer/chrome_content_renderer_client.cc |
diff --git a/chrome/renderer/chrome_content_renderer_client.cc b/chrome/renderer/chrome_content_renderer_client.cc |
index 561574d781d6709e42d5e24451694bd928dd13df..0c1057428fb6be9a19ffb25fdda7bfcce236b0fc 100644 |
--- a/chrome/renderer/chrome_content_renderer_client.cc |
+++ b/chrome/renderer/chrome_content_renderer_client.cc |
@@ -533,47 +533,56 @@ bool ChromeContentRendererClient::HasErrorPage(int http_status_code, |
return true; |
} |
-std::string ChromeContentRendererClient::GetNavigationErrorHtml( |
- const WebURLRequest& failed_request, |
- const WebURLError& error) { |
- GURL failed_url = error.unreachableURL; |
- std::string html; |
+void ChromeContentRendererClient::GetNavigationErrorStrings( |
+ const WebKit::WebURLRequest& failed_request, |
+ const WebKit::WebURLError& error, |
+ std::string* error_html, |
+ string16* error_description) { |
+ const GURL failed_url = error.unreachableURL; |
const Extension* extension = NULL; |
+ const bool is_repost = |
+ error.reason == net::ERR_CACHE_MISS && |
+ error.domain == WebString::fromUTF8(net::kErrorDomain) && |
+ EqualsASCII(failed_request.httpMethod(), "POST"); |
- // Use a local error page. |
- int resource_id; |
- DictionaryValue error_strings; |
if (failed_url.is_valid() && !failed_url.SchemeIs(chrome::kExtensionScheme)) |
extension = extension_dispatcher_->extensions()->GetByURL(failed_url); |
- if (extension) { |
- LocalizedError::GetAppErrorStrings(error, failed_url, extension, |
- &error_strings); |
- // TODO(erikkay): Should we use a different template for different |
- // error messages? |
- resource_id = IDR_ERROR_APP_HTML; |
- } else { |
- if (error.domain == WebString::fromUTF8(net::kErrorDomain) && |
- error.reason == net::ERR_CACHE_MISS && |
- EqualsASCII(failed_request.httpMethod(), "POST")) { |
- LocalizedError::GetFormRepostStrings(failed_url, &error_strings); |
+ if (error_html) { |
+ // Use a local error page. |
+ int resource_id; |
+ DictionaryValue error_strings; |
+ if (extension) { |
+ LocalizedError::GetAppErrorStrings(error, failed_url, extension, |
+ &error_strings); |
+ |
+ // TODO(erikkay): Should we use a different template for different |
+ // error messages? |
+ resource_id = IDR_ERROR_APP_HTML; |
} else { |
- LocalizedError::GetStrings(error, &error_strings); |
+ if (is_repost) { |
+ LocalizedError::GetFormRepostStrings(failed_url, &error_strings); |
+ } else { |
+ LocalizedError::GetStrings(error, &error_strings); |
+ } |
+ resource_id = IDR_NET_ERROR_HTML; |
} |
- resource_id = IDR_NET_ERROR_HTML; |
- } |
- const base::StringPiece template_html( |
- ResourceBundle::GetSharedInstance().GetRawDataResource(resource_id)); |
- if (template_html.empty()) { |
- NOTREACHED() << "unable to load template. ID: " << resource_id; |
- } else { |
- // "t" is the id of the templates root node. |
- html = jstemplate_builder::GetTemplatesHtml( |
- template_html, &error_strings, "t"); |
+ const base::StringPiece template_html( |
+ ResourceBundle::GetSharedInstance().GetRawDataResource(resource_id)); |
+ if (template_html.empty()) { |
+ NOTREACHED() << "unable to load template. ID: " << resource_id; |
+ } else { |
+ // "t" is the id of the templates root node. |
+ *error_html = jstemplate_builder::GetTemplatesHtml( |
+ template_html, &error_strings, "t"); |
+ } |
} |
- return html; |
+ if (error_description) { |
+ if (!extension && !is_repost) |
+ *error_description = LocalizedError::GetErrorDetails(error); |
+ } |
} |
bool ChromeContentRendererClient::RunIdleHandlerWhenWidgetsHidden() { |