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) { |