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

Unified Diff: components/cronet/android/api/src/org/chromium/net/BidirectionalStream.java

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: Address Andrei's comment and self review 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/api/src/org/chromium/net/BidirectionalStream.java
diff --git a/components/cronet/android/api/src/org/chromium/net/BidirectionalStream.java b/components/cronet/android/api/src/org/chromium/net/BidirectionalStream.java
index f7e31d276336373a54f72d96eed60c8d4e0ee40e..abc4c1952f7d8b24238e05dfa850288771d9e7ff 100644
--- a/components/cronet/android/api/src/org/chromium/net/BidirectionalStream.java
+++ b/components/cronet/android/api/src/org/chromium/net/BidirectionalStream.java
@@ -47,7 +47,9 @@ public abstract class BidirectionalStream {
// Priority of the stream. Default is medium.
@StreamPriority private int mPriority = STREAM_PRIORITY_MEDIUM;
+ // TODO(xunjieli): Remove mDisableAutoFlush and make flush() required as part of th API.
private boolean mDisableAutoFlush;
+ private boolean mDelayRequestHeadersUntilNextFlush;
/**
* Creates a builder for {@link BidirectionalStream} objects. All callbacks for
@@ -174,6 +176,22 @@ public abstract class BidirectionalStream {
}
/**
+ * Delays sending request headers until the next {@link BidirectionalStream#flush()}
+ * is called. This flag is currently only respected when QUIC is negotiated.
+ * When true, QUIC will send request header frame along with data frame(s)
+ * as a single packet when possible.
+ *
+ * @param delayRequestHeadersUntilNextFlush if true, sending request headers will
+ * be delayed until the next flush() is called.
+ * @return the builder to facilitate chaining.
+ */
+ public Builder delayRequestHeadersUntilNextFlush(
+ boolean delayRequestHeadersUntilNextFlush) {
+ mDelayRequestHeadersUntilNextFlush = delayRequestHeadersUntilNextFlush;
+ return this;
+ }
+
+ /**
* Creates a {@link BidirectionalStream} using configuration from this
* {@link Builder}. The returned {@code BidirectionalStream} can then be started
* by calling {@link BidirectionalStream#start}.
@@ -183,7 +201,8 @@ public abstract class BidirectionalStream {
*/
public BidirectionalStream build() {
return mCronetEngine.createBidirectionalStream(mUrl, mCallback, mExecutor, mHttpMethod,
- mRequestHeaders, mPriority, mDisableAutoFlush);
+ mRequestHeaders, mPriority, mDisableAutoFlush,
+ mDelayRequestHeadersUntilNextFlush);
}
}
@@ -378,8 +397,8 @@ public abstract class BidirectionalStream {
public abstract void write(ByteBuffer buffer, boolean endOfStream);
/**
- * Flushes pending writes. This method should only be invoked when auto
- * flush is disabled through {@link Builder#disableAutoFlush}.
+ * Flushes pending writes. This method should not be invoked before {@link
mef 2016/06/01 21:33:20 I think this deserves more verbose comment, explai
xunjieli 2016/06/01 22:27:16 Done.
+ * Callback#onStreamReady onStreamReady()}.
*/
public abstract void flush();

Powered by Google App Engine
This is Rietveld 408576698