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

Unified Diff: android_webview/native/aw_contents_client_bridge.cc

Issue 2558223002: Move onReceivedError and onReceivedHttpError out of AwContentsIoThreadClientImpl (Closed)
Patch Set: remove stale code 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..40e701a6ae950807e59a33b48b89afef01fb12e3 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,82 @@ 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));
+
+ ScopedJavaLocalRef<jstring> jurl = ConvertUTF8ToJavaString(env, request.url);
+ ScopedJavaLocalRef<jstring> jmethod =
+ ConvertUTF8ToJavaString(env, request.method);
+ ScopedJavaLocalRef<jobjectArray> jheader_names =
+ ToJavaArrayOfStrings(env, request.header_names);
+ ScopedJavaLocalRef<jobjectArray> jheader_values =
+ ToJavaArrayOfStrings(env, request.header_values);
+
+ Java_AwContentsClientBridge_onReceivedError(
+ env, obj, jurl, request.is_main_frame, request.has_user_gesture, jmethod,
+ jheader_names, 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;
+
+ ScopedJavaLocalRef<jstring> jurl = ConvertUTF8ToJavaString(env, request.url);
boliu 2016/12/08 05:48:38 this bunch of stuff is duplicated here and above..
sgurun-gerrit only 2016/12/08 21:56:46 used three times actually. done.
+ ScopedJavaLocalRef<jstring> jmethod =
+ ConvertUTF8ToJavaString(env, request.method);
+ ScopedJavaLocalRef<jobjectArray> jheader_names =
+ ToJavaArrayOfStrings(env, request.header_names);
+ ScopedJavaLocalRef<jobjectArray> jheader_values =
+ ToJavaArrayOfStrings(env, request.header_values);
+
+ 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, jurl, request.is_main_frame, request.has_user_gesture, jmethod,
+ jheader_names, 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,

Powered by Google App Engine
This is Rietveld 408576698