diff options
author | benm@google.com <benm@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-10-16 19:15:48 +0000 |
---|---|---|
committer | benm@google.com <benm@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-10-16 19:15:48 +0000 |
commit | dd81d183d4691b7941bfd7db7dfeb819754fd512 (patch) | |
tree | 70c41d793241680647f1ec4adcbe7ab092cd9c2a /android_webview/renderer | |
parent | 4b80aecb29f25ee1f5929dbd71f310b8096d2e14 (diff) | |
download | chromium_src-dd81d183d4691b7941bfd7db7dfeb819754fd512.zip chromium_src-dd81d183d4691b7941bfd7db7dfeb819754fd512.tar.gz chromium_src-dd81d183d4691b7941bfd7db7dfeb819754fd512.tar.bz2 |
[Android WebView] Support for fetching Android Java resources.
Add AwResource.java, a class that defines a set of resource IDs and
functionality to resolve those IDs to concrete resources.
Initially, we add three resources - two raw resources to represent
error pags and a string resource for default text encoding.
The embedder should set up the IDs before starting to use Chromium.
Review URL: https://codereview.chromium.org/11145026
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@162205 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'android_webview/renderer')
-rw-r--r-- | android_webview/renderer/aw_content_renderer_client.cc | 27 |
1 files changed, 22 insertions, 5 deletions
diff --git a/android_webview/renderer/aw_content_renderer_client.cc b/android_webview/renderer/aw_content_renderer_client.cc index a1864f4..1fc2522 100644 --- a/android_webview/renderer/aw_content_renderer_client.cc +++ b/android_webview/renderer/aw_content_renderer_client.cc @@ -4,11 +4,16 @@ #include "android_webview/renderer/aw_content_renderer_client.h" +#include "android_webview/common/aw_resource.h" #include "android_webview/common/url_constants.h" #include "android_webview/renderer/aw_render_view_ext.h" #include "base/utf_string_conversions.h" #include "content/public/renderer/render_thread.h" +#include "googleurl/src/gurl.h" #include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebString.h" +#include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebURL.h" +#include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebURLError.h" +#include "third_party/WebKit/Source/WebKit/chromium/public/platform/WebURLRequest.h" #include "third_party/WebKit/Source/WebKit/chromium/public/WebSecurityPolicy.h" namespace android_webview { @@ -35,8 +40,7 @@ void AwContentRendererClient::RenderViewCreated( } std::string AwContentRendererClient::GetDefaultEncoding() { - // TODO(boliu): query android system locale. - return std::string("ISO-8859-1"); + return AwResource::GetDefaultTextEncoding(); } WebKit::WebPlugin* AwContentRendererClient::CreatePluginReplacement( @@ -49,8 +53,7 @@ WebKit::WebPlugin* AwContentRendererClient::CreatePluginReplacement( bool AwContentRendererClient::HasErrorPage(int http_status_code, std::string* error_domain) { - // TODO(boliu): Implement our own error pages. - return false; + return http_status_code >= 400; } void AwContentRendererClient::GetNavigationErrorStrings( @@ -58,7 +61,21 @@ void AwContentRendererClient::GetNavigationErrorStrings( const WebKit::WebURLError& error, std::string* error_html, string16* error_description) { - // TODO(boliu): Implement our own error pages. + if (error_html) { + GURL error_url(failed_request.url()); + std::string err = UTF16ToUTF8(error.localizedDescription); + std::string contents; + if (err.empty()) { + contents = AwResource::GetNoDomainPageContent(); + } else { + contents = AwResource::GetLoadErrorPageContent(); + ReplaceSubstringsAfterOffset(&contents, 0, "%e", err); + } + + ReplaceSubstringsAfterOffset(&contents, 0, "%s", + error_url.possibly_invalid_spec()); + *error_html = contents; + } } unsigned long long AwContentRendererClient::VisitedLinkHash( |