| OLD | NEW |
| 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 861 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 872 | 872 |
| 873 bool ChromeContentRendererClient::ShouldSuppressErrorPage(const GURL& url) { | 873 bool ChromeContentRendererClient::ShouldSuppressErrorPage(const GURL& url) { |
| 874 // Do not flash an error page if the Instant new tab page fails to load. | 874 // Do not flash an error page if the Instant new tab page fails to load. |
| 875 return search_bouncer_.get() && search_bouncer_->IsNewTabPage(url); | 875 return search_bouncer_.get() && search_bouncer_->IsNewTabPage(url); |
| 876 } | 876 } |
| 877 | 877 |
| 878 void ChromeContentRendererClient::GetNavigationErrorStrings( | 878 void ChromeContentRendererClient::GetNavigationErrorStrings( |
| 879 WebKit::WebFrame* frame, | 879 WebKit::WebFrame* frame, |
| 880 const WebKit::WebURLRequest& failed_request, | 880 const WebKit::WebURLRequest& failed_request, |
| 881 const WebKit::WebURLError& error, | 881 const WebKit::WebURLError& error, |
| 882 const std::string& accept_languages, |
| 882 std::string* error_html, | 883 std::string* error_html, |
| 883 string16* error_description) { | 884 string16* error_description) { |
| 884 const GURL failed_url = error.unreachableURL; | 885 const GURL failed_url = error.unreachableURL; |
| 885 const Extension* extension = NULL; | 886 const Extension* extension = NULL; |
| 886 | 887 |
| 887 if (failed_url.is_valid() && | 888 if (failed_url.is_valid() && |
| 888 !failed_url.SchemeIs(extensions::kExtensionScheme)) { | 889 !failed_url.SchemeIs(extensions::kExtensionScheme)) { |
| 889 extension = extension_dispatcher_->extensions()->GetExtensionOrAppByURL( | 890 extension = extension_dispatcher_->extensions()->GetExtensionOrAppByURL( |
| 890 failed_url); | 891 failed_url); |
| 891 } | 892 } |
| 892 | 893 |
| 893 bool is_post = EqualsASCII(failed_request.httpMethod(), "POST"); | 894 bool is_post = EqualsASCII(failed_request.httpMethod(), "POST"); |
| 894 | 895 |
| 895 if (error_html) { | 896 if (error_html) { |
| 896 // Use a local error page. | 897 // Use a local error page. |
| 897 int resource_id; | 898 int resource_id; |
| 898 base::DictionaryValue error_strings; | 899 base::DictionaryValue error_strings; |
| 899 if (extension && !extension->from_bookmark()) { | 900 if (extension && !extension->from_bookmark()) { |
| 900 LocalizedError::GetAppErrorStrings(failed_url, extension, &error_strings); | 901 LocalizedError::GetAppErrorStrings(failed_url, extension, &error_strings); |
| 901 | 902 |
| 902 // TODO(erikkay): Should we use a different template for different | 903 // TODO(erikkay): Should we use a different template for different |
| 903 // error messages? | 904 // error messages? |
| 904 resource_id = IDR_ERROR_APP_HTML; | 905 resource_id = IDR_ERROR_APP_HTML; |
| 905 } else { | 906 } else { |
| 906 const std::string locale = RenderThread::Get()->GetLocale(); | 907 const std::string locale = RenderThread::Get()->GetLocale(); |
| 907 if (!NetErrorHelper::GetErrorStringsForDnsProbe( | 908 if (!NetErrorHelper::GetErrorStringsForDnsProbe( |
| 908 frame, error, is_post, locale, &error_strings)) { | 909 frame, error, is_post, locale, accept_languages, |
| 910 &error_strings)) { |
| 909 // In most cases, the NetErrorHelper won't provide DNS-probe-specific | 911 // In most cases, the NetErrorHelper won't provide DNS-probe-specific |
| 910 // error pages, so fall back to LocalizedError. | 912 // error pages, so fall back to LocalizedError. |
| 911 LocalizedError::GetStrings(error.reason, error.domain.utf8(), | 913 LocalizedError::GetStrings(error.reason, error.domain.utf8(), |
| 912 error.unreachableURL, is_post, locale, | 914 error.unreachableURL, is_post, locale, |
| 913 &error_strings); | 915 accept_languages, &error_strings); |
| 914 } | 916 } |
| 915 resource_id = IDR_NET_ERROR_HTML; | 917 resource_id = IDR_NET_ERROR_HTML; |
| 916 } | 918 } |
| 917 | 919 |
| 918 const base::StringPiece template_html( | 920 const base::StringPiece template_html( |
| 919 ResourceBundle::GetSharedInstance().GetRawDataResource( | 921 ResourceBundle::GetSharedInstance().GetRawDataResource( |
| 920 resource_id)); | 922 resource_id)); |
| 921 if (template_html.empty()) { | 923 if (template_html.empty()) { |
| 922 NOTREACHED() << "unable to load template. ID: " << resource_id; | 924 NOTREACHED() << "unable to load template. ID: " << resource_id; |
| 923 } else { | 925 } else { |
| (...skipping 421 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1345 // SiteIsolationPolicy is off by default. We would like to activate cross-site | 1347 // SiteIsolationPolicy is off by default. We would like to activate cross-site |
| 1346 // document blocking (for UMA data collection) for normal renderer processes | 1348 // document blocking (for UMA data collection) for normal renderer processes |
| 1347 // running a normal web page from the Internet. We only turn on | 1349 // running a normal web page from the Internet. We only turn on |
| 1348 // SiteIsolationPolicy for a renderer process that does not have the extension | 1350 // SiteIsolationPolicy for a renderer process that does not have the extension |
| 1349 // flag on. | 1351 // flag on. |
| 1350 CommandLine* command_line = CommandLine::ForCurrentProcess(); | 1352 CommandLine* command_line = CommandLine::ForCurrentProcess(); |
| 1351 return !command_line->HasSwitch(switches::kExtensionProcess); | 1353 return !command_line->HasSwitch(switches::kExtensionProcess); |
| 1352 } | 1354 } |
| 1353 | 1355 |
| 1354 } // namespace chrome | 1356 } // namespace chrome |
| OLD | NEW |