| 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..4f71b6363ee3aa0f6de2c7071da389acf24d0785 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,41 @@ 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);
|
| +
|
| + if (chunk_byte_buffer != NULL) {
|
| + 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();
|
|
|