| Index: components/cronet/android/java/src/org/chromium/net/impl/CronetUrlRequestContext.java
|
| diff --git a/components/cronet/android/java/src/org/chromium/net/impl/CronetUrlRequestContext.java b/components/cronet/android/java/src/org/chromium/net/impl/CronetUrlRequestContext.java
|
| index 819347d57a1cad185362e7e0315d0afc3d09fe71..6b2022fa9bda9f4a4c9915b14cbbc69094685248 100644
|
| --- a/components/cronet/android/java/src/org/chromium/net/impl/CronetUrlRequestContext.java
|
| +++ b/components/cronet/android/java/src/org/chromium/net/impl/CronetUrlRequestContext.java
|
| @@ -24,6 +24,7 @@ import org.chromium.net.EffectiveConnectionType;
|
| import org.chromium.net.NetworkQualityRttListener;
|
| import org.chromium.net.NetworkQualityThroughputListener;
|
| import org.chromium.net.RequestFinishedInfo;
|
| +import org.chromium.net.RttThroughputValues;
|
| import org.chromium.net.UrlRequest;
|
| import org.chromium.net.urlconnection.CronetHttpURLConnection;
|
| import org.chromium.net.urlconnection.CronetURLStreamHandlerFactory;
|
| @@ -94,6 +95,27 @@ public class CronetUrlRequestContext extends CronetEngine {
|
| @GuardedBy("mNetworkQualityLock")
|
| private int mEffectiveConnectionType = EffectiveConnectionType.TYPE_UNKNOWN;
|
|
|
| + /**
|
| + * Current estimate of the HTTP RTT (in milliseconds) computed by the
|
| + * network quality estimator.
|
| + */
|
| + @GuardedBy("mNetworkQualityLock")
|
| + private int mHttpRttMs = RttThroughputValues.INVALID_RTT_THROUGHPUT;
|
| +
|
| + /**
|
| + * Current estimate of the transport RTT (in milliseconds) computed by the
|
| + * network quality estimator.
|
| + */
|
| + @GuardedBy("mNetworkQualityLock")
|
| + private int mTransportRttMs = RttThroughputValues.INVALID_RTT_THROUGHPUT;
|
| +
|
| + /**
|
| + * Current estimate of the downstream throughput (in kilobits per second)
|
| + * computed by the network quality estimator.
|
| + */
|
| + @GuardedBy("mNetworkQualityLock")
|
| + private int mDownstreamThroughputKbps = RttThroughputValues.INVALID_RTT_THROUGHPUT;
|
| +
|
| @GuardedBy("mNetworkQualityLock")
|
| private final ObserverList<NetworkQualityRttListener> mRttListenerList =
|
| new ObserverList<NetworkQualityRttListener>();
|
| @@ -327,13 +349,40 @@ public class CronetUrlRequestContext extends CronetEngine {
|
| throw new IllegalStateException("Network quality estimator must be enabled");
|
| }
|
| synchronized (mNetworkQualityLock) {
|
| - synchronized (mLock) {
|
| - checkHaveAdapter();
|
| - }
|
| return mEffectiveConnectionType;
|
| }
|
| }
|
|
|
| + @Override
|
| + public int getHttpRttMs() {
|
| + if (!mNetworkQualityEstimatorEnabled) {
|
| + throw new IllegalStateException("Network quality estimator must be enabled");
|
| + }
|
| + synchronized (mNetworkQualityLock) {
|
| + return mHttpRttMs;
|
| + }
|
| + }
|
| +
|
| + @Override
|
| + public int getTransportRttMs() {
|
| + if (!mNetworkQualityEstimatorEnabled) {
|
| + throw new IllegalStateException("Network quality estimator must be enabled");
|
| + }
|
| + synchronized (mNetworkQualityLock) {
|
| + return mTransportRttMs;
|
| + }
|
| + }
|
| +
|
| + @Override
|
| + public int getDownstreamThroughputKbps() {
|
| + if (!mNetworkQualityEstimatorEnabled) {
|
| + throw new IllegalStateException("Network quality estimator must be enabled");
|
| + }
|
| + synchronized (mNetworkQualityLock) {
|
| + return mDownstreamThroughputKbps;
|
| + }
|
| + }
|
| +
|
| @VisibleForTesting
|
| @Override
|
| public void configureNetworkQualityEstimatorForTesting(
|
| @@ -527,6 +576,17 @@ public class CronetUrlRequestContext extends CronetEngine {
|
|
|
| @SuppressWarnings("unused")
|
| @CalledByNative
|
| + private void onRTTOrThroughputEstimatesComputed(
|
| + final int httpRttMs, final int transportRttMs, final int downstreamThroughputKbps) {
|
| + synchronized (mNetworkQualityLock) {
|
| + mHttpRttMs = httpRttMs;
|
| + mTransportRttMs = transportRttMs;
|
| + mDownstreamThroughputKbps = downstreamThroughputKbps;
|
| + }
|
| + }
|
| +
|
| + @SuppressWarnings("unused")
|
| + @CalledByNative
|
| private void onRttObservation(final int rttMs, final long whenMs, final int source) {
|
| synchronized (mNetworkQualityLock) {
|
| for (final NetworkQualityRttListener listener : mRttListenerList) {
|
|
|