| Index: android_webview/native/aw_contents_client_bridge.cc
|
| diff --git a/android_webview/native/aw_contents_client_bridge.cc b/android_webview/native/aw_contents_client_bridge.cc
|
| index c3c2c0bf2c9b23766ac01528055ddf4626748769..f1d79baa7f7dd6812003e8df7781a48c90a2f3f5 100644
|
| --- a/android_webview/native/aw_contents_client_bridge.cc
|
| +++ b/android_webview/native/aw_contents_client_bridge.cc
|
| @@ -23,6 +23,7 @@
|
| #include "grit/components_strings.h"
|
| #include "jni/AwContentsClientBridge_jni.h"
|
| #include "net/cert/x509_certificate.h"
|
| +#include "net/http/http_response_headers.h"
|
| #include "net/ssl/openssl_client_key_store.h"
|
| #include "net/ssl/ssl_cert_request_info.h"
|
| #include "net/ssl/ssl_client_cert_type.h"
|
| @@ -38,7 +39,9 @@ using base::android::ConvertUTF16ToJavaString;
|
| using base::android::HasException;
|
| using base::android::JavaRef;
|
| using base::android::ScopedJavaLocalRef;
|
| +using base::android::ToJavaArrayOfStrings;
|
| using content::BrowserThread;
|
| +using std::vector;
|
|
|
| namespace android_webview {
|
|
|
| @@ -411,6 +414,77 @@ void AwContentsClientBridge::NewLoginRequest(const std::string& realm,
|
| jargs);
|
| }
|
|
|
| +void AwContentsClientBridge::OnReceivedError(
|
| + const AwWebResourceRequest& request,
|
| + int error_code) {
|
| + DCHECK_CURRENTLY_ON(BrowserThread::UI);
|
| + JNIEnv* env = AttachCurrentThread();
|
| + ScopedJavaLocalRef<jobject> obj = java_ref_.get(env);
|
| + if (obj.is_null())
|
| + return;
|
| +
|
| + ScopedJavaLocalRef<jstring> jstring_description =
|
| + ConvertUTF8ToJavaString(env, net::ErrorToString(error_code));
|
| +
|
| + AwWebResourceRequest::AwJavaWebResourceRequest java_web_resource_request;
|
| + AwWebResourceRequest::ConvertToJava(env, request, &java_web_resource_request);
|
| +
|
| + Java_AwContentsClientBridge_onReceivedError(
|
| + env, obj, java_web_resource_request.jurl, request.is_main_frame,
|
| + request.has_user_gesture, java_web_resource_request.jmethod,
|
| + java_web_resource_request.jheader_names,
|
| + java_web_resource_request.jheader_values, error_code,
|
| + jstring_description);
|
| +}
|
| +
|
| +void AwContentsClientBridge::OnReceivedHttpError(
|
| + const AwWebResourceRequest& request,
|
| + const scoped_refptr<const net::HttpResponseHeaders>& response_headers) {
|
| + DCHECK_CURRENTLY_ON(BrowserThread::UI);
|
| + JNIEnv* env = AttachCurrentThread();
|
| + ScopedJavaLocalRef<jobject> obj = java_ref_.get(env);
|
| + if (obj.is_null())
|
| + return;
|
| +
|
| + AwWebResourceRequest::AwJavaWebResourceRequest java_web_resource_request;
|
| + AwWebResourceRequest::ConvertToJava(env, request, &java_web_resource_request);
|
| +
|
| + vector<std::string> response_header_names;
|
| + vector<std::string> response_header_values;
|
| +
|
| + {
|
| + size_t headers_iterator = 0;
|
| + std::string header_name, header_value;
|
| + while (response_headers->EnumerateHeaderLines(
|
| + &headers_iterator, &header_name, &header_value)) {
|
| + response_header_names.push_back(header_name);
|
| + response_header_values.push_back(header_value);
|
| + }
|
| + }
|
| +
|
| + std::string mime_type, encoding;
|
| + response_headers->GetMimeTypeAndCharset(&mime_type, &encoding);
|
| + ScopedJavaLocalRef<jstring> jstring_mime_type =
|
| + ConvertUTF8ToJavaString(env, mime_type);
|
| + ScopedJavaLocalRef<jstring> jstring_encoding =
|
| + ConvertUTF8ToJavaString(env, encoding);
|
| + int status_code = response_headers->response_code();
|
| + ScopedJavaLocalRef<jstring> jstring_reason =
|
| + ConvertUTF8ToJavaString(env, response_headers->GetStatusText());
|
| + ScopedJavaLocalRef<jobjectArray> jstringArray_response_header_names =
|
| + ToJavaArrayOfStrings(env, response_header_names);
|
| + ScopedJavaLocalRef<jobjectArray> jstringArray_response_header_values =
|
| + ToJavaArrayOfStrings(env, response_header_values);
|
| +
|
| + Java_AwContentsClientBridge_onReceivedHttpError(
|
| + env, obj, java_web_resource_request.jurl, request.is_main_frame,
|
| + request.has_user_gesture, java_web_resource_request.jmethod,
|
| + java_web_resource_request.jheader_names,
|
| + java_web_resource_request.jheader_values, jstring_mime_type,
|
| + jstring_encoding, status_code, jstring_reason,
|
| + jstringArray_response_header_names, jstringArray_response_header_values);
|
| +}
|
| +
|
| void AwContentsClientBridge::ConfirmJsResult(JNIEnv* env,
|
| const JavaRef<jobject>&,
|
| int id,
|
|
|