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 746d8b5b53200a1d5c1bd39db1e69ed7cb1fff4f..0f9ea6433bc4508385c6028396d0e00e5cd8b0ee 100644 |
--- a/components/cronet/android/org_chromium_net_UrlRequest.cc |
+++ b/components/cronet/android/org_chromium_net_UrlRequest.cc |
@@ -70,9 +70,9 @@ class JniURLRequestPeerDelegate |
int bytes_read = request->bytes_read(); |
if (bytes_read != 0) { |
JNIEnv* env = base::android::AttachCurrentThread(); |
- jobject bytebuf = env->NewDirectByteBuffer(request->Data(), bytes_read); |
- cronet::Java_UrlRequest_onBytesRead(env, owner_, bytebuf); |
- env->DeleteLocalRef(bytebuf); |
+ base::android::ScopedJavaLocalRef<jobject> java_buffer( |
+ env, env->NewDirectByteBuffer(request->Data(), bytes_read)); |
+ cronet::Java_UrlRequest_onBytesRead(env, owner_, java_buffer.obj()); |
} |
} |
@@ -81,6 +81,16 @@ class JniURLRequestPeerDelegate |
cronet::Java_UrlRequest_finish(env, owner_); |
} |
+ virtual int ReadFromUploadChannel(net::IOBuffer* buf, |
+ int buf_length) OVERRIDE { |
+ JNIEnv* env = base::android::AttachCurrentThread(); |
+ base::android::ScopedJavaLocalRef<jobject> java_buffer( |
+ env, env->NewDirectByteBuffer(buf->data(), buf_length)); |
+ jint bytes_read = cronet::Java_UrlRequest_readFromUploadChannel( |
+ env, owner_, java_buffer.obj()); |
+ return bytes_read; |
+ } |
+ |
protected: |
virtual ~JniURLRequestPeerDelegate() { |
JNIEnv* env = base::android::AttachCurrentThread(); |
@@ -175,12 +185,11 @@ static void SetUploadChannel(JNIEnv* env, |
jobject object, |
jlong urlRequestPeer, |
jstring content_type, |
- jobject content, |
jlong content_length) { |
URLRequestPeer* request = reinterpret_cast<URLRequestPeer*>(urlRequestPeer); |
SetPostContentType(env, request, content_type); |
- request->SetUploadChannel(env, content, content_length); |
+ request->SetUploadChannel(env, content_length); |
} |