Chromium Code Reviews| Index: components/cronet/android/org_chromium_net_UrlRequest.cc |
| diff --git a/components/cronet/android/org_chromium_net_UrlRequest.cc b/components/cronet/android/org_chromium_net_UrlRequest.cc |
| index f96f16422db26e8149403dbd33731ec82b97c459..8ec8b7abdac5f64bba367abcd9204a9b1753de37 100644 |
| --- a/components/cronet/android/org_chromium_net_UrlRequest.cc |
| +++ b/components/cronet/android/org_chromium_net_UrlRequest.cc |
| @@ -12,6 +12,7 @@ |
| #include "jni/UrlRequest_jni.h" |
| #include "net/base/net_errors.h" |
| #include "net/base/request_priority.h" |
| +#include "net/http/http_response_headers.h" |
| using base::android::ConvertUTF8ToJavaString; |
| @@ -307,4 +308,36 @@ static jstring GetHeader( |
| } |
| } |
| +static void GetAllHeaders(JNIEnv* env, |
| + jobject object, |
| + jlong urlRequestPeer, |
| + jobject headersMap) { |
| + URLRequestPeer* request = reinterpret_cast<URLRequestPeer*>(urlRequestPeer); |
| + if (request == NULL) |
| + return; |
| + |
| + net::HttpResponseHeaders* headers = request->GetResponseHeaders(); |
| + if (headers == NULL) |
| + return; |
| + |
| + void* iter = NULL; |
| + std::string header_name; |
| + std::string header_value; |
| + while (headers->EnumerateHeaderLines(&iter, &header_name, &header_value)) { |
| + ScopedJavaLocalRef<jstring> name = |
| + ConvertUTF8ToJavaString(env, header_name); |
| + ScopedJavaLocalRef<jstring> value = |
| + ConvertUTF8ToJavaString(env, header_value); |
| + Java_UrlRequest_onAppendResponseHeader( |
| + env, object, headersMap, name.Release(), value.Release()); |
| + } |
| + |
| + // Some implementations (notably HttpURLConnection) include a mapping for the |
| + // null key; in HTTP's case, this maps to the HTTP status line. |
|
mmenke
2014/08/05 17:34:05
Should this be documented in HttpUrlRequest?
mef
2014/08/05 17:55:09
Done.
|
| + ScopedJavaLocalRef<jstring> status_line = |
| + ConvertUTF8ToJavaString(env, headers->GetStatusLine()); |
| + Java_UrlRequest_onAppendResponseHeader( |
| + env, object, headersMap, NULL, status_line.Release()); |
| +} |
| + |
| } // namespace cronet |