Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(26)

Unified Diff: components/cronet/android/cronet_bidirectional_stream_adapter.h

Issue 1992953004: [Cronet] Make delaying sending request headers explicit in bidirectional stream (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: correct a typo Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 2bb80517d1e184e67fc14e3f51c20574757da0c1..5a98a4a40c6c35bd38adae22d5335d05667a8501 100644
--- a/components/cronet/android/cronet_bidirectional_stream_adapter.h
+++ b/components/cronet/android/cronet_bidirectional_stream_adapter.h
@@ -71,7 +71,7 @@ class CronetBidirectionalStreamAdapter
CronetURLRequestContextAdapter* context,
JNIEnv* env,
const base::android::JavaParamRef<jobject>& jbidi_stream,
- bool jdisable_auto_flush);
+ bool jsend_request_headers_automatically);
~CronetBidirectionalStreamAdapter() override;
// Validates method and headers, initializes and starts the request. If
@@ -89,6 +89,19 @@ class CronetBidirectionalStreamAdapter
const base::android::JavaParamRef<jobjectArray>& jheaders,
jboolean jend_of_stream);
+ // Sends request headers to server.
+ // When |send_request_headers_automatically_| is
+ // false and OnStreamReady() is invoked with request_headers_sent = false,
+ // headers will be combined with next WriteData/WritevData unless this
+ // method is called first, in which case headers will be sent separately
+ // without delay.
+ // (This method cannot be called when |send_request_headers_automatically_| is
+ // true nor when OnStreamReady() is invoked with request_headers_sent = true,
+ // since headers have been sent by the stream when stream is negotiated
+ // successfully.)
+ void SendRequestHeaders(JNIEnv* env,
+ const base::android::JavaParamRef<jobject>& jcaller);
+
// Reads more data into |jbyte_buffer| starting at |jposition| and not
// exceeding |jlimit|. Arguments are preserved to ensure that |jbyte_buffer|
// is not modified by the application during read.
@@ -121,7 +134,7 @@ class CronetBidirectionalStreamAdapter
private:
// net::BidirectionalStream::Delegate implementations:
- void OnStreamReady() override;
+ void OnStreamReady(bool request_headers_sent) override;
void OnHeadersReceived(const net::SpdyHeaderBlock& response_headers) override;
void OnDataRead(int bytes_read) override;
void OnDataSent() override;
@@ -130,6 +143,7 @@ class CronetBidirectionalStreamAdapter
void StartOnNetworkThread(
std::unique_ptr<net::BidirectionalStreamRequestInfo> request_info);
+ void SendRequestHeadersOnNetworkThread();
void ReadDataOnNetworkThread(
scoped_refptr<IOBufferWithByteBuffer> read_buffer,
int buffer_size);
@@ -145,7 +159,7 @@ class CronetBidirectionalStreamAdapter
// Java object that owns this CronetBidirectionalStreamAdapter.
base::android::ScopedJavaGlobalRef<jobject> owner_;
- const bool disable_auto_flush_;
+ const bool send_request_headers_automatically_;
scoped_refptr<IOBufferWithByteBuffer> read_buffer_;
std::unique_ptr<PendingWriteData> pending_write_data_;

Powered by Google App Engine
This is Rietveld 408576698