Index: components/cronet/android/api/src/org/chromium/net/CronetEngine.java |
diff --git a/components/cronet/android/api/src/org/chromium/net/CronetEngine.java b/components/cronet/android/api/src/org/chromium/net/CronetEngine.java |
index 2b82f2a8ad2fc9d2ef83cb454e3e5fcc852b602f..bd2f22401d9ab8dbdfe910ae5d20fab1eb00a4ef 100644 |
--- a/components/cronet/android/api/src/org/chromium/net/CronetEngine.java |
+++ b/components/cronet/android/api/src/org/chromium/net/CronetEngine.java |
@@ -120,6 +120,7 @@ public abstract class CronetEngine { |
private long mHttpCacheMaxSize; |
private String mExperimentalOptions; |
private long mMockCertVerifier; |
+ private boolean mNetworkQualityEstimatorEnabled; |
/** |
* Default config enables SPDY, disables QUIC, SDCH and HTTP cache. |
@@ -133,6 +134,7 @@ public abstract class CronetEngine { |
enableHTTP2(true); |
enableSDCH(false); |
enableHttpCache(HTTP_CACHE_DISABLED, 0); |
+ enableNetworkQualityEstimator(false); |
} |
/** |
@@ -604,6 +606,34 @@ public abstract class CronetEngine { |
} |
/** |
+ * Enables the network quality estimator, which collects and reports |
+ * measurements of round trip time (RTT) and downstream throughput at |
+ * various layers of the network stack. After enabling the estimator, |
+ * listeners of RTT and throughput can be added with |
+ * {@link #addRttListener} and {@link #addThroughputListener} and |
+ * removed with {@link #removeRttListener} and |
+ * {@link #removeThroughputListener}. The estimator uses memory and CPU |
+ * only when enabled. |
+ * @param value {@code true} to enable network quality estimator, |
+ * {@code false} to disable. |
+ * @hide as it's a prototype. |
+ * @return the builder to facilitate chaining. |
+ */ |
+ public Builder enableNetworkQualityEstimator(boolean value) { |
+ mNetworkQualityEstimatorEnabled = value; |
+ return this; |
+ } |
+ |
+ /** |
+ * @return true if the network quality estimator has been enabled for |
+ * this builder. |
+ * @hide as it's a prototype. |
+ */ |
+ boolean networkQualityEstimatorEnabled() { |
+ return mNetworkQualityEstimatorEnabled; |
+ } |
+ |
+ /** |
* Returns {@link Context} for builder. |
* |
* @return {@link Context} for builder. |
@@ -803,6 +833,18 @@ public abstract class CronetEngine { |
public abstract byte[] getGlobalMetricsDeltas(); |
/** |
+ * Sets the executor which will be used to notify RequestFinished |
+ * listeners, and to notify network quality RTT listeners |
+ * that do not provide an executor. |
+ * TODO(tbansal): http://crbug.com/618034 Remove this API. In short term, |
+ * once all Cronet embedders supply a valid executor with |
+ * NetworkQualityRTTListener, update the above comment to reflect that |
+ * {@link executor} is only used to notify RequestFinishedListeners. |
+ * @hide as it's a prototype. |
+ */ |
+ public abstract void setRequestFinishedListenerExecutor(Executor executor); |
+ |
+ /** |
* Enables the network quality estimator, which collects and reports |
* measurements of round trip time (RTT) and downstream throughput at |
* various layers of the network stack. After enabling the estimator, |
@@ -813,22 +855,22 @@ public abstract class CronetEngine { |
* only when enabled. |
* @param executor an executor that will be used to notified all |
* added RTT and throughput listeners. |
+ * TODO(tbansal): http://crbug.com/618034 Remove this API. |
* @hide as it's a prototype. |
*/ |
public abstract void enableNetworkQualityEstimator(Executor executor); |
/** |
- * Enables the network quality estimator for testing. This must be called |
- * before round trip time and throughput listeners are added. Set both |
- * boolean parameters to false for default behavior. |
+ * Configures the network quality estimator for testing. This must be called |
+ * before round trip time and throughput listeners are added, and after the |
+ * network quality estimator has been enabled. |
* @param useLocalHostRequests include requests to localhost in estimates. |
- * @param useSmallerResponses include small responses in throughput estimates. |
- * @param executor an {@link java.util.concurrent.Executor} on which all |
- * listeners will be called. |
+ * @param useSmallerResponses include small responses in throughput |
+ * estimates. |
* @hide as it's a prototype. |
*/ |
- abstract void enableNetworkQualityEstimatorForTesting( |
- boolean useLocalHostRequests, boolean useSmallerResponses, Executor executor); |
+ abstract void configureNetworkQualityEstimatorForTesting( |
+ boolean useLocalHostRequests, boolean useSmallerResponses); |
/** |
* Registers a listener that gets called whenever the network quality |
@@ -967,6 +1009,8 @@ public abstract class CronetEngine { |
* |
* @param listener the listener for finished requests. |
* |
+ * TODO(tbansal): http://crbug.com/618034 Remove this API, once all embedders have switched to |
+ * using a request finished listener that provides its own executor. |
* @hide as it's a prototype. |
*/ |
public abstract void addRequestFinishedListener(RequestFinishedListener listener); |
@@ -976,6 +1020,8 @@ public abstract class CronetEngine { |
* |
* @param listener the listener to remove. |
* |
+ * TODO(tbansal): http://crbug.com/618034 Remove this API, once all embedders have switched to |
+ * using a request finished listener that provides its own executor. |
* @hide it's a prototype. |
*/ |
public abstract void removeRequestFinishedListener(RequestFinishedListener listener); |
@@ -1096,9 +1142,11 @@ public abstract class CronetEngine { |
/** |
* Interface to listen for finished requests that were created via this CronetEngine instance. |
* |
+ * TODO(tbansal): http://crbug.com/618034 Remove this API, and replace it with a listener |
+ * whose executor is bound to the lifetime of the listener. |
* @hide as it's a prototype. |
*/ |
- public interface RequestFinishedListener { // TODO(klm): Add a convenience abstract class. |
+ public interface RequestFinishedListener { |
/** |
* Invoked with request info. |
* @param requestInfo {@link UrlRequestInfo} for finished request. |