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 e38f93fcd35cabe0f45fba5e52b30ac4b031a3d4..6d96870761a3bc48df8768abb89ca7742bdafba9 100644 |
| --- a/components/cronet/android/org_chromium_net_UrlRequest.cc |
| +++ b/components/cronet/android/org_chromium_net_UrlRequest.cc |
| @@ -11,14 +11,15 @@ |
| #include "components/cronet/android/url_request_context_adapter.h" |
| #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; |
| +using base::android::CheckException; |
| namespace cronet { |
| namespace { |
| net::RequestPriority ConvertRequestPriority(jint request_priority) { |
| switch (request_priority) { |
| case REQUEST_PRIORITY_IDLE: |
| @@ -57,14 +58,19 @@ void SetPostContentType(JNIEnv* env, |
| class JniURLRequestAdapterDelegate |
| : public URLRequestAdapter::URLRequestAdapterDelegate { |
| public: |
| JniURLRequestAdapterDelegate(JNIEnv* env, jobject owner) { |
| owner_ = env->NewGlobalRef(owner); |
| } |
| + virtual void OnAppendChunkCompleted(URLRequestAdapter* request) OVERRIDE { |
| + JNIEnv* env = base::android::AttachCurrentThread(); |
| + cronet::Java_UrlRequest_onAppendChunkCompleted(env, owner_); |
| + } |
| + |
| virtual void OnResponseStarted(URLRequestAdapter* request) OVERRIDE { |
| JNIEnv* env = base::android::AttachCurrentThread(); |
| cronet::Java_UrlRequest_onResponseStarted(env, owner_); |
| } |
| virtual void OnBytesRead(URLRequestAdapter* request) OVERRIDE { |
| int bytes_read = request->bytes_read(); |
| @@ -192,14 +198,40 @@ static void SetUploadChannel(JNIEnv* env, |
| URLRequestAdapter* request = |
| reinterpret_cast<URLRequestAdapter*>(urlRequestAdapter); |
| SetPostContentType(env, request, content_type); |
| request->SetUploadChannel(env, content_length); |
| } |
| +static void EnableChunkedUpload(JNIEnv* env, |
| + jobject object, |
| + jlong urlRequestAdapter, |
| + jstring content_type) { |
| + URLRequestAdapter* request = |
| + reinterpret_cast<URLRequestAdapter*>(urlRequestAdapter); |
| + SetPostContentType(env, request, content_type); |
| + |
| + request->EnableChunkedUpload(); |
| +} |
| + |
| +static void AppendChunk(JNIEnv* env, |
| + jobject object, |
| + jlong urlRequestAdapter, |
| + jobject chunk_byte_buffer, |
| + jint chunk_size, |
| + jboolean is_last_chunk) { |
| + URLRequestAdapter* request = |
| + reinterpret_cast<URLRequestAdapter*>(urlRequestAdapter); |
| + CHECK(request != NULL); |
| + CHECK(chunk_byte_buffer != NULL); |
|
mmenke
2014/08/15 16:09:24
Again, I don't think we need all these CHECKs. Th
mdumitrescu
2014/08/15 18:20:15
Done.
|
| + |
| + void* chunk = env->GetDirectBufferAddress(chunk_byte_buffer); |
| + request->AppendChunk( |
| + reinterpret_cast<const char*>(chunk), chunk_size, is_last_chunk); |
| +} |
| /* synchronized */ |
| static void Start(JNIEnv* env, jobject object, jlong urlRequestAdapter) { |
| URLRequestAdapter* request = |
| reinterpret_cast<URLRequestAdapter*>(urlRequestAdapter); |
| if (request != NULL) { |
| request->Start(); |