Index: components/cronet/android/cronet_bidirectional_stream_adapter.h |
diff --git a/components/cronet/android/cronet_bidirectional_stream_adapter.h b/components/cronet/android/cronet_bidirectional_stream_adapter.h |
index 82a402bcc4a912b674a60bc7c74a28538d22aaa4..890ab91ee6b31f9d568a88ef64a58d00cc312cae 100644 |
--- a/components/cronet/android/cronet_bidirectional_stream_adapter.h |
+++ b/components/cronet/android/cronet_bidirectional_stream_adapter.h |
@@ -43,7 +43,8 @@ class CronetBidirectionalStreamAdapter |
CronetBidirectionalStreamAdapter( |
CronetURLRequestContextAdapter* context, |
JNIEnv* env, |
- const base::android::JavaParamRef<jobject>& jbidi_stream); |
+ const base::android::JavaParamRef<jobject>& jbidi_stream, |
+ bool jdisable_auto_flush); |
~CronetBidirectionalStreamAdapter() override; |
// Validates method and headers, initializes and starts the request. If |
@@ -81,6 +82,14 @@ class CronetBidirectionalStreamAdapter |
jint jlimit, |
jboolean jend_of_stream); |
+ jboolean WritevData( |
+ JNIEnv* env, |
+ const base::android::JavaParamRef<jobject>& jcaller, |
+ const base::android::JavaParamRef<jobjectArray>& jbyte_buffers, |
+ const base::android::JavaParamRef<jintArray>& jpositions, |
+ const base::android::JavaParamRef<jintArray>& jlimits, |
+ jboolean jend_of_stream); |
+ |
// Releases all resources for the request and deletes the object itself. |
// |jsend_on_canceled| indicates if Java onCanceled callback should be |
// issued to indicate that no more callbacks will be issued. |
@@ -89,8 +98,9 @@ class CronetBidirectionalStreamAdapter |
jboolean jsend_on_canceled); |
private: |
+ typedef std::vector<scoped_refptr<IOBufferWithByteBuffer>> IOByteBufferList; |
// net::BidirectionalStream::Delegate implementations: |
- void OnHeadersSent() override; |
+ void OnStreamReady() override; |
void OnHeadersReceived(const net::SpdyHeaderBlock& response_headers) override; |
void OnDataRead(int bytes_read) override; |
void OnDataSent() override; |
@@ -104,8 +114,9 @@ class CronetBidirectionalStreamAdapter |
int buffer_size); |
void WriteDataOnNetworkThread( |
scoped_refptr<IOBufferWithByteBuffer> read_buffer, |
- int buffer_size, |
bool end_of_stream); |
+ void WritevDataOnNetworkThread(const IOByteBufferList& buffers, |
+ bool end_of_stream); |
void DestroyOnNetworkThread(bool send_on_canceled); |
// Gets headers as a Java array. |
base::android::ScopedJavaLocalRef<jobjectArray> GetHeadersArray( |
@@ -116,9 +127,14 @@ class CronetBidirectionalStreamAdapter |
// Java object that owns this CronetBidirectionalStreamAdapter. |
base::android::ScopedJavaGlobalRef<jobject> owner_; |
+ const bool disable_auto_flush_; |
+ // Whether an end of stream flag is passed in through a write call. |
+ // Not applicable to HTTP methods that do not send data. |
+ bool write_end_of_stream_; |
scoped_refptr<IOBufferWithByteBuffer> read_buffer_; |
scoped_refptr<IOBufferWithByteBuffer> write_buffer_; |
+ IOByteBufferList write_buffer_list_; |
scoped_ptr<net::BidirectionalStream> bidi_stream_; |
DISALLOW_COPY_AND_ASSIGN(CronetBidirectionalStreamAdapter); |