Index: chrome/renderer/net/net_error_helper.cc |
=================================================================== |
--- chrome/renderer/net/net_error_helper.cc (revision 248295) |
+++ chrome/renderer/net/net_error_helper.cc (working copy) |
@@ -6,11 +6,11 @@ |
#include <string> |
+#include "base/i18n/rtl.h" |
#include "base/json/json_writer.h" |
#include "base/metrics/histogram.h" |
#include "base/strings/utf_string_conversions.h" |
#include "base/values.h" |
-#include "chrome/common/localized_error.h" |
#include "chrome/common/net/net_error_info.h" |
#include "chrome/common/render_messages.h" |
#include "content/public/common/content_client.h" |
@@ -62,6 +62,18 @@ |
return NetErrorHelperCore::SUB_FRAME; |
} |
+// Copied from localized_error.cc. |
+// TODO(mmenke): Share code? |
+bool LocaleIsRTL() { |
+#if defined(TOOLKIT_GTK) |
+ // base::i18n::IsRTL() uses the GTK text direction, which doesn't work within |
+ // the renderer sandbox. |
+ return base::i18n::ICUIsRTL(); |
+#else |
+ return base::i18n::IsRTL(); |
+#endif |
+} |
+ |
} // namespace |
NetErrorHelper::NetErrorHelper(RenderFrame* render_view) |
@@ -97,7 +109,7 @@ |
IPC_BEGIN_MESSAGE_MAP(NetErrorHelper, message) |
IPC_MESSAGE_HANDLER(ChromeViewMsg_NetErrorInfo, OnNetErrorInfo) |
- IPC_MESSAGE_HANDLER(ChromeViewMsg_SetAltErrorPageURL, OnSetAltErrorPageURL); |
+ IPC_MESSAGE_HANDLER(ChromeViewMsg_SetLinkDoctorInfo, OnSetLinkDoctorInfo); |
IPC_MESSAGE_UNHANDLED(handled = false) |
IPC_END_MESSAGE_MAP() |
@@ -112,9 +124,11 @@ |
core_.GetErrorHTML(GetFrameType(frame), error, is_failed_post, error_html); |
} |
-void NetErrorHelper::GenerateLocalizedErrorPage(const blink::WebURLError& error, |
- bool is_failed_post, |
- std::string* error_html) const { |
+void NetErrorHelper::GenerateLocalizedErrorPage( |
+ const blink::WebURLError& error, |
+ bool is_failed_post, |
+ scoped_ptr<LocalizedError::ErrorPageParams> params, |
+ std::string* error_html) const { |
error_html->clear(); |
int resource_id = IDR_NET_ERROR_HTML; |
@@ -129,7 +143,7 @@ |
RenderThread::Get()->GetLocale(), |
render_frame()->GetRenderView()-> |
GetAcceptLanguages(), |
- &error_strings); |
+ params.Pass(), &error_strings); |
// "t" is the id of the template's root node. |
*error_html = webui::GetTemplatesHtml(template_html, &error_strings, "t"); |
} |
@@ -154,6 +168,7 @@ |
RenderThread::Get()->GetLocale(), |
render_frame()->GetRenderView()-> |
GetAcceptLanguages(), |
+ scoped_ptr<LocalizedError::ErrorPageParams>(), |
&error_strings); |
std::string json; |
@@ -171,7 +186,8 @@ |
render_frame()->GetRenderView()->EvaluateScript(frame_xpath, js16, 0, false); |
} |
-void NetErrorHelper::FetchErrorPage(const GURL& url) { |
+void NetErrorHelper::FetchErrorPage(const GURL& fix_url, |
+ const std::string& fix_url_request_body) { |
DCHECK(!alt_error_page_fetcher_.get()); |
blink::WebView* web_view = render_frame()->GetRenderView()->GetWebView(); |
@@ -179,8 +195,11 @@ |
return; |
blink::WebFrame* frame = web_view->mainFrame(); |
- alt_error_page_fetcher_.reset(content::ResourceFetcher::Create(url)); |
- |
+ alt_error_page_fetcher_.reset( |
+ content::ResourceFetcher::Create(fix_url)); |
+ alt_error_page_fetcher_->SetMethod("POST"); |
+ alt_error_page_fetcher_->SetBody(fix_url_request_body); |
+ alt_error_page_fetcher_->SetHeader("Content-Type", "application/json"); |
alt_error_page_fetcher_->Start( |
frame, blink::WebURLRequest::TargetIsMainFrame, |
base::Bind(&NetErrorHelper::OnAlternateErrorPageRetrieved, |
@@ -202,8 +221,13 @@ |
core_.OnNetErrorInfo(static_cast<DnsProbeStatus>(status_num)); |
} |
-void NetErrorHelper::OnSetAltErrorPageURL(const GURL& alt_error_page_url) { |
- core_.set_alt_error_page_url(alt_error_page_url); |
+void NetErrorHelper::OnSetLinkDoctorInfo(const GURL& link_doctor_url, |
+ const std::string& language, |
+ const std::string& country_code, |
+ const std::string& api_key, |
+ const GURL& search_url) { |
+ core_.OnSetLinkDoctorInfo(link_doctor_url, language, country_code, api_key, |
+ search_url); |
} |
void NetErrorHelper::OnAlternateErrorPageRetrieved( |
@@ -214,8 +238,12 @@ |
scoped_ptr<content::ResourceFetcher> fetcher( |
alt_error_page_fetcher_.release()); |
if (!response.isNull() && response.httpStatusCode() == 200) { |
- core_.OnAlternateErrorPageFetched(data); |
+ core_.OnAlternateErrorPageFetched( |
+ data, render_frame()->GetRenderView()->GetAcceptLanguages(), |
+ LocaleIsRTL()); |
} else { |
- core_.OnAlternateErrorPageFetched(""); |
+ core_.OnAlternateErrorPageFetched( |
+ "", render_frame()->GetRenderView()->GetAcceptLanguages(), |
+ LocaleIsRTL()); |
} |
} |