summaryrefslogtreecommitdiffstats
path: root/android_webview/renderer
diff options
context:
space:
mode:
authorbenm@google.com <benm@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2012-10-16 19:15:48 +0000
committerbenm@google.com <benm@google.com@0039d316-1c4b-4281-b951-d872f2087c98>2012-10-16 19:15:48 +0000
commitdd81d183d4691b7941bfd7db7dfeb819754fd512 (patch)
tree70c41d793241680647f1ec4adcbe7ab092cd9c2a /android_webview/renderer
parent4b80aecb29f25ee1f5929dbd71f310b8096d2e14 (diff)
downloadchromium_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.cc27
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(