OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "components/cronet/android/chromium_url_request.h" | 5 #include "components/cronet/android/chromium_url_request.h" |
6 | 6 |
7 #include "base/android/jni_android.h" | 7 #include "base/android/jni_android.h" |
8 #include "base/android/jni_string.h" | 8 #include "base/android/jni_string.h" |
9 #include "base/macros.h" | 9 #include "base/macros.h" |
10 #include "components/cronet/android/url_request_adapter.h" | 10 #include "components/cronet/android/url_request_adapter.h" |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
63 JNIEnv* env = base::android::AttachCurrentThread(); | 63 JNIEnv* env = base::android::AttachCurrentThread(); |
64 cronet::Java_ChromiumUrlRequest_onResponseStarted(env, owner_); | 64 cronet::Java_ChromiumUrlRequest_onResponseStarted(env, owner_); |
65 } | 65 } |
66 | 66 |
67 void OnBytesRead(URLRequestAdapter* request_adapter, | 67 void OnBytesRead(URLRequestAdapter* request_adapter, |
68 int bytes_read) override { | 68 int bytes_read) override { |
69 if (bytes_read != 0) { | 69 if (bytes_read != 0) { |
70 JNIEnv* env = base::android::AttachCurrentThread(); | 70 JNIEnv* env = base::android::AttachCurrentThread(); |
71 base::android::ScopedJavaLocalRef<jobject> java_buffer( | 71 base::android::ScopedJavaLocalRef<jobject> java_buffer( |
72 env, env->NewDirectByteBuffer(request_adapter->Data(), bytes_read)); | 72 env, env->NewDirectByteBuffer(request_adapter->Data(), bytes_read)); |
73 cronet::Java_ChromiumUrlRequest_onBytesRead( | 73 cronet::Java_ChromiumUrlRequest_onBytesRead(env, owner_, java_buffer); |
74 env, owner_, java_buffer.obj()); | |
75 } | 74 } |
76 } | 75 } |
77 | 76 |
78 void OnRequestFinished(URLRequestAdapter* request_adapter) override { | 77 void OnRequestFinished(URLRequestAdapter* request_adapter) override { |
79 JNIEnv* env = base::android::AttachCurrentThread(); | 78 JNIEnv* env = base::android::AttachCurrentThread(); |
80 cronet::Java_ChromiumUrlRequest_finish(env, owner_); | 79 cronet::Java_ChromiumUrlRequest_finish(env, owner_); |
81 } | 80 } |
82 | 81 |
83 int ReadFromUploadChannel(net::IOBuffer* buf, int buf_length) override { | 82 int ReadFromUploadChannel(net::IOBuffer* buf, int buf_length) override { |
84 JNIEnv* env = base::android::AttachCurrentThread(); | 83 JNIEnv* env = base::android::AttachCurrentThread(); |
85 base::android::ScopedJavaLocalRef<jobject> java_buffer( | 84 base::android::ScopedJavaLocalRef<jobject> java_buffer( |
86 env, env->NewDirectByteBuffer(buf->data(), buf_length)); | 85 env, env->NewDirectByteBuffer(buf->data(), buf_length)); |
87 jint bytes_read = cronet::Java_ChromiumUrlRequest_readFromUploadChannel( | 86 jint bytes_read = cronet::Java_ChromiumUrlRequest_readFromUploadChannel( |
88 env, owner_, java_buffer.obj()); | 87 env, owner_, java_buffer); |
89 return bytes_read; | 88 return bytes_read; |
90 } | 89 } |
91 | 90 |
92 protected: | 91 protected: |
93 ~JniURLRequestAdapterDelegate() override { | 92 ~JniURLRequestAdapterDelegate() override { |
94 JNIEnv* env = base::android::AttachCurrentThread(); | 93 JNIEnv* env = base::android::AttachCurrentThread(); |
95 env->DeleteGlobalRef(owner_); | 94 env->DeleteGlobalRef(owner_); |
96 } | 95 } |
97 | 96 |
98 private: | 97 private: |
(...skipping 281 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
380 | 379 |
381 size_t iter = 0; | 380 size_t iter = 0; |
382 std::string header_name; | 381 std::string header_name; |
383 std::string header_value; | 382 std::string header_value; |
384 while (headers->EnumerateHeaderLines(&iter, &header_name, &header_value)) { | 383 while (headers->EnumerateHeaderLines(&iter, &header_name, &header_value)) { |
385 ScopedJavaLocalRef<jstring> name = | 384 ScopedJavaLocalRef<jstring> name = |
386 ConvertUTF8ToJavaString(env, header_name); | 385 ConvertUTF8ToJavaString(env, header_name); |
387 ScopedJavaLocalRef<jstring> value = | 386 ScopedJavaLocalRef<jstring> value = |
388 ConvertUTF8ToJavaString(env, header_value); | 387 ConvertUTF8ToJavaString(env, header_value); |
389 Java_ChromiumUrlRequest_onAppendResponseHeader(env, jcaller, jheaders_map, | 388 Java_ChromiumUrlRequest_onAppendResponseHeader(env, jcaller, jheaders_map, |
390 name.obj(), value.obj()); | 389 name, value); |
391 } | 390 } |
392 | 391 |
393 // Some implementations (notably HttpURLConnection) include a mapping for the | 392 // Some implementations (notably HttpURLConnection) include a mapping for the |
394 // null key; in HTTP's case, this maps to the HTTP status line. | 393 // null key; in HTTP's case, this maps to the HTTP status line. |
395 ScopedJavaLocalRef<jstring> status_line = | 394 ScopedJavaLocalRef<jstring> status_line = |
396 ConvertUTF8ToJavaString(env, headers->GetStatusLine()); | 395 ConvertUTF8ToJavaString(env, headers->GetStatusLine()); |
397 Java_ChromiumUrlRequest_onAppendResponseHeader(env, jcaller, jheaders_map, | 396 Java_ChromiumUrlRequest_onAppendResponseHeader(env, jcaller, jheaders_map, |
398 nullptr, status_line.obj()); | 397 nullptr, status_line); |
399 } | 398 } |
400 | 399 |
401 static ScopedJavaLocalRef<jstring> GetNegotiatedProtocol( | 400 static ScopedJavaLocalRef<jstring> GetNegotiatedProtocol( |
402 JNIEnv* env, | 401 JNIEnv* env, |
403 const JavaParamRef<jobject>& jcaller, | 402 const JavaParamRef<jobject>& jcaller, |
404 jlong jurl_request_adapter) { | 403 jlong jurl_request_adapter) { |
405 URLRequestAdapter* request_adapter = | 404 URLRequestAdapter* request_adapter = |
406 reinterpret_cast<URLRequestAdapter*>(jurl_request_adapter); | 405 reinterpret_cast<URLRequestAdapter*>(jurl_request_adapter); |
407 DCHECK(request_adapter); | 406 DCHECK(request_adapter); |
408 | 407 |
(...skipping 15 matching lines...) Expand all Loading... |
424 static void DisableRedirects(JNIEnv* env, | 423 static void DisableRedirects(JNIEnv* env, |
425 const JavaParamRef<jobject>& jcaller, | 424 const JavaParamRef<jobject>& jcaller, |
426 jlong jrequest_adapter) { | 425 jlong jrequest_adapter) { |
427 URLRequestAdapter* request_adapter = | 426 URLRequestAdapter* request_adapter = |
428 reinterpret_cast<URLRequestAdapter*>(jrequest_adapter); | 427 reinterpret_cast<URLRequestAdapter*>(jrequest_adapter); |
429 DCHECK(request_adapter); | 428 DCHECK(request_adapter); |
430 request_adapter->DisableRedirects(); | 429 request_adapter->DisableRedirects(); |
431 } | 430 } |
432 | 431 |
433 } // namespace cronet | 432 } // namespace cronet |
OLD | NEW |