OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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/cronet_upload_data_stream_adapter.h" | 5 #include "components/cronet/android/cronet_upload_data_stream_adapter.h" |
6 | 6 |
7 #include <string> | 7 #include <string> |
8 #include <utility> | 8 #include <utility> |
9 | 9 |
10 #include "base/android/jni_android.h" | 10 #include "base/android/jni_android.h" |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
45 DCHECK(network_task_runner_->BelongsToCurrentThread()); | 45 DCHECK(network_task_runner_->BelongsToCurrentThread()); |
46 DCHECK_GT(buf_len, 0); | 46 DCHECK_GT(buf_len, 0); |
47 DCHECK(!buffer_.get()); | 47 DCHECK(!buffer_.get()); |
48 buffer_ = buffer; | 48 buffer_ = buffer; |
49 | 49 |
50 // TODO(mmenke): Consider preserving the java buffer across reads, when the | 50 // TODO(mmenke): Consider preserving the java buffer across reads, when the |
51 // IOBuffer's data pointer and its length are unchanged. | 51 // IOBuffer's data pointer and its length are unchanged. |
52 JNIEnv* env = base::android::AttachCurrentThread(); | 52 JNIEnv* env = base::android::AttachCurrentThread(); |
53 base::android::ScopedJavaLocalRef<jobject> java_buffer( | 53 base::android::ScopedJavaLocalRef<jobject> java_buffer( |
54 env, env->NewDirectByteBuffer(buffer->data(), buf_len)); | 54 env, env->NewDirectByteBuffer(buffer->data(), buf_len)); |
55 Java_CronetUploadDataStream_readData(env, jupload_data_stream_.obj(), | 55 Java_CronetUploadDataStream_readData(env, jupload_data_stream_, |
56 java_buffer.obj()); | 56 java_buffer.obj()); |
57 } | 57 } |
58 | 58 |
59 void CronetUploadDataStreamAdapter::Rewind() { | 59 void CronetUploadDataStreamAdapter::Rewind() { |
60 DCHECK(upload_data_stream_); | 60 DCHECK(upload_data_stream_); |
61 DCHECK(network_task_runner_->BelongsToCurrentThread()); | 61 DCHECK(network_task_runner_->BelongsToCurrentThread()); |
62 | 62 |
63 JNIEnv* env = base::android::AttachCurrentThread(); | 63 JNIEnv* env = base::android::AttachCurrentThread(); |
64 Java_CronetUploadDataStream_rewind(env, jupload_data_stream_.obj()); | 64 Java_CronetUploadDataStream_rewind(env, jupload_data_stream_); |
65 } | 65 } |
66 | 66 |
67 void CronetUploadDataStreamAdapter::OnUploadDataStreamDestroyed() { | 67 void CronetUploadDataStreamAdapter::OnUploadDataStreamDestroyed() { |
68 // If CronetUploadDataStream::InitInternal was never called, | 68 // If CronetUploadDataStream::InitInternal was never called, |
69 // |upload_data_stream_| and |network_task_runner_| will be NULL. | 69 // |upload_data_stream_| and |network_task_runner_| will be NULL. |
70 DCHECK(!network_task_runner_ || | 70 DCHECK(!network_task_runner_ || |
71 network_task_runner_->BelongsToCurrentThread()); | 71 network_task_runner_->BelongsToCurrentThread()); |
72 | 72 |
73 JNIEnv* env = base::android::AttachCurrentThread(); | 73 JNIEnv* env = base::android::AttachCurrentThread(); |
74 Java_CronetUploadDataStream_onUploadDataStreamDestroyed( | 74 Java_CronetUploadDataStream_onUploadDataStreamDestroyed(env, |
75 env, jupload_data_stream_.obj()); | 75 jupload_data_stream_); |
76 // |this| is invalid here since the Java call above effectively destroys it. | 76 // |this| is invalid here since the Java call above effectively destroys it. |
77 } | 77 } |
78 | 78 |
79 void CronetUploadDataStreamAdapter::OnReadSucceeded( | 79 void CronetUploadDataStreamAdapter::OnReadSucceeded( |
80 JNIEnv* env, | 80 JNIEnv* env, |
81 const JavaParamRef<jobject>& jcaller, | 81 const JavaParamRef<jobject>& jcaller, |
82 int bytes_read, | 82 int bytes_read, |
83 bool final_chunk) { | 83 bool final_chunk) { |
84 DCHECK(!network_task_runner_->BelongsToCurrentThread()); | 84 DCHECK(!network_task_runner_->BelongsToCurrentThread()); |
85 DCHECK(bytes_read > 0 || (final_chunk && bytes_read == 0)); | 85 DCHECK(bytes_read > 0 || (final_chunk && bytes_read == 0)); |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
144 jlong jlength, | 144 jlong jlength, |
145 jlong jadapter) { | 145 jlong jadapter) { |
146 CronetUploadDataStreamAdapter* adapter = | 146 CronetUploadDataStreamAdapter* adapter = |
147 reinterpret_cast<CronetUploadDataStreamAdapter*>(jadapter); | 147 reinterpret_cast<CronetUploadDataStreamAdapter*>(jadapter); |
148 CronetUploadDataStream* upload_data_stream = | 148 CronetUploadDataStream* upload_data_stream = |
149 new CronetUploadDataStream(adapter, jlength); | 149 new CronetUploadDataStream(adapter, jlength); |
150 return reinterpret_cast<jlong>(upload_data_stream); | 150 return reinterpret_cast<jlong>(upload_data_stream); |
151 } | 151 } |
152 | 152 |
153 } // namespace cronet | 153 } // namespace cronet |
OLD | NEW |