summaryrefslogtreecommitdiffstats
path: root/src/core/renderer/content_renderer_client_qt.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/renderer/content_renderer_client_qt.cpp')
-rw-r--r--src/core/renderer/content_renderer_client_qt.cpp45
1 files changed, 45 insertions, 0 deletions
diff --git a/src/core/renderer/content_renderer_client_qt.cpp b/src/core/renderer/content_renderer_client_qt.cpp
index 0b497a004..ecb469a9d 100644
--- a/src/core/renderer/content_renderer_client_qt.cpp
+++ b/src/core/renderer/content_renderer_client_qt.cpp
@@ -41,10 +41,55 @@
#include "renderer/content_renderer_client_qt.h"
+#include "base/strings/utf_string_conversions.h"
+#include "chrome/common/localized_error.h"
+#include "content/public/renderer/render_thread.h"
+#include "net/base/net_errors.h"
+#include "third_party/WebKit/public/platform/WebURLError.h"
+#include "third_party/WebKit/public/platform/WebURLRequest.h"
+#include "ui/base/resource/resource_bundle.h"
+#include "ui/base/webui/jstemplate_builder.h"
+
#include "renderer/qt_render_view_observer.h"
+#include "grit/renderer_resources.h"
+
+static const char kHttpErrorDomain[] = "http";
+
void ContentRendererClientQt::RenderViewCreated(content::RenderView* render_view)
{
// RenderViewObserver destroys itself with its RenderView.
new QtRenderViewObserver(render_view);
}
+
+// To tap into the chromium localized strings. Ripped from the chrome layer (highly simplified).
+void ContentRendererClientQt::GetNavigationErrorStrings(blink::WebFrame *frame, const blink::WebURLRequest &failed_request, const blink::WebURLError &error, const std::string &accept_languages, std::string *error_html, base::string16 *error_description)
+{
+ Q_UNUSED(frame)
+
+ const bool isPost = EqualsASCII(failed_request.httpMethod(), "POST");
+
+ if (error_html) {
+ // Use a local error page.
+ int resource_id;
+ base::DictionaryValue error_strings;
+
+ const std::string locale = content::RenderThread::Get()->GetLocale();
+ // TODO(elproxy): We could potentially get better diagnostics here by first calling NetErrorHelper::GetErrorStringsForDnsProbe
+ LocalizedError::GetStrings(error.reason, error.domain.utf8(),
+ error.unreachableURL, isPost, locale,
+ accept_languages, &error_strings);
+ resource_id = IDR_NET_ERROR_HTML;
+
+
+ const base::StringPiece template_html(ui::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 = webui::GetTemplatesHtml(template_html, &error_strings, "t");
+ }
+
+ if (error_description) {
+ *error_description = LocalizedError::GetErrorDetails(error, isPost);
+ }
+}