Chromium Code Reviews| 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 f30991ac3c7ae2223aaaeabfa683902ab575467f..35972f0d3b55d0d7b2b69a9ee7b160e9c37b42cb 100644 |
| --- a/components/cronet/android/api/src/org/chromium/net/CronetEngine.java |
| +++ b/components/cronet/android/api/src/org/chromium/net/CronetEngine.java |
| @@ -119,6 +119,8 @@ public abstract class CronetEngine { |
| private long mHttpCacheMaxSize; |
| private String mExperimentalOptions; |
| private long mMockCertVerifier; |
| + private boolean mNetworkQualityEstimatorEnabled; |
| + private Executor mNetworkQualityExecutor; |
| /** |
| * Default config enables SPDY, disables QUIC, SDCH and HTTP cache. |
| @@ -132,6 +134,7 @@ public abstract class CronetEngine { |
| enableHTTP2(true); |
| enableSDCH(false); |
| enableHttpCache(HTTP_CACHE_DISABLED, 0); |
| + enableNetworkQualityEstimator(false, null); |
| } |
| /** |
| @@ -601,6 +604,47 @@ 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. |
| + * @param executor an executor that will be used to notified all |
|
bengr
2016/06/07 20:53:16
nit: notified -> notify
tbansal1
2016/06/07 21:37:16
Done.
|
| + * added RTT and throughput listeners. |
| + * @hide as it's a prototype. |
| + * @return the builder to facilitate chaining. |
| + */ |
| + public Builder enableNetworkQualityEstimator(boolean value, Executor executor) { |
|
bengr
2016/06/07 20:53:16
Why do consumers need to call this when they don't
tbansal1
2016/06/07 21:37:16
I kept it consistent with other CronetEngine.Build
bengr
2016/06/07 22:55:12
This seems like a really bad way to do things. Ple
tbansal1
2016/06/08 01:10:33
Sure, but I think this is sensible. e.g., in futur
|
| + mNetworkQualityEstimatorEnabled = value; |
| + mNetworkQualityExecutor = executor; |
| + if (mNetworkQualityEstimatorEnabled && mNetworkQualityExecutor == null) { |
|
bengr
2016/06/07 20:53:16
With the new prototype, the first condition here s
tbansal1
2016/06/07 21:37:16
I did not switch to the new prototype, so this is
|
| + throw new IllegalStateException("Network quality executor must not be NULL"); |
| + } |
| + return this; |
| + } |
| + |
| + /** |
| + * Returns if network quality estimator has been enabled for this builder. |
|
bengr
2016/06/07 20:53:16
Returns if -> Returns true if the
tbansal1
2016/06/07 21:37:16
Done.
|
| + * @hide as it's a prototype. |
| + */ |
| + boolean networkQualityEstimatorEnabled() { |
| + return mNetworkQualityEstimatorEnabled; |
| + } |
| + |
| + /** |
| + * Returns the executor for the network quality estimator for this builder. |
| + * @hide as it's a prototype. |
| + */ |
| + Executor networkQualityEstimatorExecutor() { |
| + return mNetworkQualityExecutor; |
| + } |
| + |
| + /** |
| * Returns {@link Context} for builder. |
| * |
| * @return {@link Context} for builder. |
| @@ -792,8 +836,10 @@ 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 |
| + * various layers of the network stack. This API has been deprecated in |
| + * favor of CronetEngineBuilder.enableNetworkQualityEstimator. |
| + * 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 |
| @@ -801,21 +847,23 @@ public abstract class CronetEngine { |
| * @param executor an executor that will be used to notified all |
| * added RTT and throughput listeners. |
| * @hide as it's a prototype. |
| + * @hide TODO(tbansal): http://crbug.com/618034 Remove this API once all |
| + * consumers have switched to using |
| + * CronetEngineBuilder.enableNetworkQualityEstimator. |
| */ |
| 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 |
| @@ -843,7 +891,7 @@ public abstract class CronetEngine { |
| /** |
| * Registers a listener that gets called whenever the network quality |
| * estimator witnesses a sample throughput measurement. This must be called |
| - * after {@link #enableNetworkQualityEstimator}. Throughput observations |
| + * after network quality estimator has been enabled. Throughput observations |
|
bengr
2016/06/07 20:53:16
network -> the network
tbansal1
2016/06/07 21:37:16
Done.
|
| * are computed by measuring bytes read over the active network interface |
| * at times when at least one URL response is being received. The listener |
| * is called on the {@link java.util.concurrent.Executor} that is passed to |
| @@ -970,8 +1018,7 @@ public abstract class CronetEngine { |
| /** |
| * Registers a listener that gets called after the end of each request with the request info. |
| * |
| - * <p>This must be called after {@link #enableNetworkQualityEstimator} and will throw an |
| - * exception otherwise. |
| + * <p>This must be called after network quality estimator has been enabled. |
|
bengr
2016/06/07 20:53:16
after -> after the
tbansal1
2016/06/07 21:37:16
Done.
|
| * |
| * <p>The listener is called on the {@link java.util.concurrent.Executor} that |
| * is passed to {@link #enableNetworkQualityEstimator}. |