| 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 2183589bf35fa6bf76977516ab26c61c6bb4dbb9..404de74cb8d725eff5cd1dedde40213a11f510af 100644
|
| --- a/components/cronet/android/org_chromium_net_UrlRequest.cc
|
| +++ b/components/cronet/android/org_chromium_net_UrlRequest.cc
|
| @@ -14,6 +14,7 @@
|
| #include "net/base/request_priority.h"
|
|
|
| using base::android::ConvertUTF8ToJavaString;
|
| +using base::android::CheckException;
|
|
|
| namespace cronet {
|
| namespace {
|
| @@ -317,4 +318,39 @@ static jstring GetHeader(
|
| }
|
| }
|
|
|
| +static jobjectArray GetAllHeaders(JNIEnv* env,
|
| + jobject object,
|
| + jlong urlRequestPeer) {
|
| + URLRequestPeer* request = reinterpret_cast<URLRequestPeer*>(urlRequestPeer);
|
| + net::HttpRequestHeaders headers;
|
| + if (request == NULL || !request->GetFullRequestHeaders(&headers)) {
|
| + return NULL;
|
| + }
|
| +
|
| + // TODO(miloslav): Better to just expose the size instead.
|
| + net::HttpRequestHeaders::Iterator counter(headers);
|
| + int count = 0;
|
| + while (counter.GetNext()) {
|
| + ++count;
|
| + }
|
| +
|
| + jclass string_class = env->FindClass("java/lang/String");
|
| + jobjectArray result = env->NewObjectArray(2 * count, string_class, NULL);
|
| + CheckException(env);
|
| +
|
| + net::HttpRequestHeaders::Iterator iterator(headers);
|
| + int index = 0;
|
| + while (iterator.GetNext()) {
|
| + DCHECK(index <= 2 * count - 2);
|
| + ScopedJavaLocalRef<jstring> name =
|
| + ConvertUTF8ToJavaString(env, iterator.name());
|
| + env->SetObjectArrayElement(result, index++, name.obj());
|
| +
|
| + ScopedJavaLocalRef<jstring> value =
|
| + ConvertUTF8ToJavaString(env, iterator.value());
|
| + env->SetObjectArrayElement(result, index++, value.obj());
|
| + }
|
| + DCHECK(index == 2 * count);
|
| + return result;
|
| +}
|
| } // namespace cronet
|
|
|