Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3)

Side by Side Diff: chrome/renderer/chrome_content_renderer_client.cc

Issue 24503004: Show IDN in error screens (DNS failure etc.) (Closed) Base URL: https://src.chromium.org/chrome/trunk/src/
Patch Set: Created 7 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/renderer/chrome_content_renderer_client.h" 5 #include "chrome/renderer/chrome_content_renderer_client.h"
6 6
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "base/debug/crash_logging.h" 8 #include "base/debug/crash_logging.h"
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "base/metrics/histogram.h" 10 #include "base/metrics/histogram.h"
(...skipping 847 matching lines...) Expand 10 before | Expand all | Expand 10 after
858 } 858 }
859 859
860 *error_domain = LocalizedError::kHttpErrorDomain; 860 *error_domain = LocalizedError::kHttpErrorDomain;
861 return true; 861 return true;
862 } 862 }
863 863
864 void ChromeContentRendererClient::GetNavigationErrorStrings( 864 void ChromeContentRendererClient::GetNavigationErrorStrings(
865 WebKit::WebFrame* frame, 865 WebKit::WebFrame* frame,
866 const WebKit::WebURLRequest& failed_request, 866 const WebKit::WebURLRequest& failed_request,
867 const WebKit::WebURLError& error, 867 const WebKit::WebURLError& error,
868 const std::string& accept_languages,
868 std::string* error_html, 869 std::string* error_html,
869 string16* error_description) { 870 string16* error_description) {
870 const GURL failed_url = error.unreachableURL; 871 const GURL failed_url = error.unreachableURL;
871 const Extension* extension = NULL; 872 const Extension* extension = NULL;
872 873
873 if (failed_url.is_valid() && 874 if (failed_url.is_valid() &&
874 !failed_url.SchemeIs(extensions::kExtensionScheme)) { 875 !failed_url.SchemeIs(extensions::kExtensionScheme)) {
875 extension = extension_dispatcher_->extensions()->GetExtensionOrAppByURL( 876 extension = extension_dispatcher_->extensions()->GetExtensionOrAppByURL(
876 failed_url); 877 failed_url);
877 } 878 }
878 879
879 bool is_post = EqualsASCII(failed_request.httpMethod(), "POST"); 880 bool is_post = EqualsASCII(failed_request.httpMethod(), "POST");
880 881
881 if (error_html) { 882 if (error_html) {
882 // Use a local error page. 883 // Use a local error page.
883 int resource_id; 884 int resource_id;
884 base::DictionaryValue error_strings; 885 base::DictionaryValue error_strings;
885 if (extension && !extension->from_bookmark()) { 886 if (extension && !extension->from_bookmark()) {
886 LocalizedError::GetAppErrorStrings(failed_url, extension, &error_strings); 887 LocalizedError::GetAppErrorStrings(failed_url, extension, &error_strings);
887 888
888 // TODO(erikkay): Should we use a different template for different 889 // TODO(erikkay): Should we use a different template for different
889 // error messages? 890 // error messages?
890 resource_id = IDR_ERROR_APP_HTML; 891 resource_id = IDR_ERROR_APP_HTML;
891 } else { 892 } else {
892 const std::string locale = RenderThread::Get()->GetLocale(); 893 const std::string locale = RenderThread::Get()->GetLocale();
893 if (!NetErrorHelper::GetErrorStringsForDnsProbe( 894 if (!NetErrorHelper::GetErrorStringsForDnsProbe(
894 frame, error, is_post, locale, &error_strings)) { 895 frame, error, is_post, locale, accept_languages,
896 &error_strings)) {
895 // In most cases, the NetErrorHelper won't provide DNS-probe-specific 897 // In most cases, the NetErrorHelper won't provide DNS-probe-specific
896 // error pages, so fall back to LocalizedError. 898 // error pages, so fall back to LocalizedError.
897 LocalizedError::GetStrings(error.reason, error.domain.utf8(), 899 LocalizedError::GetStrings(error.reason, error.domain.utf8(),
898 error.unreachableURL, is_post, locale, 900 error.unreachableURL, is_post, locale,
899 &error_strings); 901 accept_languages, &error_strings);
900 } 902 }
901 resource_id = IDR_NET_ERROR_HTML; 903 resource_id = IDR_NET_ERROR_HTML;
902 } 904 }
903 905
904 const base::StringPiece template_html( 906 const base::StringPiece template_html(
905 ResourceBundle::GetSharedInstance().GetRawDataResource( 907 ResourceBundle::GetSharedInstance().GetRawDataResource(
906 resource_id)); 908 resource_id));
907 if (template_html.empty()) { 909 if (template_html.empty()) {
908 NOTREACHED() << "unable to load template. ID: " << resource_id; 910 NOTREACHED() << "unable to load template. ID: " << resource_id;
909 } else { 911 } else {
(...skipping 418 matching lines...) Expand 10 before | Expand all | Expand 10 after
1328 // SiteIsolationPolicy is off by default. We would like to activate cross-site 1330 // SiteIsolationPolicy is off by default. We would like to activate cross-site
1329 // document blocking (for UMA data collection) for normal renderer processes 1331 // document blocking (for UMA data collection) for normal renderer processes
1330 // running a normal web page from the Internet. We only turn on 1332 // running a normal web page from the Internet. We only turn on
1331 // SiteIsolationPolicy for a renderer process that does not have the extension 1333 // SiteIsolationPolicy for a renderer process that does not have the extension
1332 // flag on. 1334 // flag on.
1333 CommandLine* command_line = CommandLine::ForCurrentProcess(); 1335 CommandLine* command_line = CommandLine::ForCurrentProcess();
1334 return !command_line->HasSwitch(switches::kExtensionProcess); 1336 return !command_line->HasSwitch(switches::kExtensionProcess);
1335 } 1337 }
1336 1338
1337 } // namespace chrome 1339 } // namespace chrome
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698