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

Unified Diff: android_webview/native/aw_contents_client_bridge.cc

Issue 2558223002: Move onReceivedError and onReceivedHttpError out of AwContentsIoThreadClientImpl (Closed)
Patch Set: add move assignment Created 4 years 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 side-by-side diff with in-line comments
Download patch
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,
« no previous file with comments | « android_webview/native/aw_contents_client_bridge.h ('k') | android_webview/native/aw_contents_io_thread_client_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698