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..422f30f8664dd576a29bf222bd25f4dadbe5e29f 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; |
xunjieli
2016/10/19 23:32:27
Since you are here, could you add a @EffectiveConn
tbansal1
2016/10/20 01:05:53
I think this gives a compilation error. See https:
|
+ /** |
+ * Current estimate of the HTTP RTT (in milliseconds) computed by the |
+ * network quality estimator. |
+ */ |
+ @GuardedBy("mNetworkQualityLock") |
+ private int mHttpRttMs = RttThroughputValues.INVALID_RTT_THROUGHPUT_VALUE; |
+ |
+ /** |
+ * Current estimate of the transport RTT (in milliseconds) computed by the |
+ * network quality estimator. |
+ */ |
+ @GuardedBy("mNetworkQualityLock") |
+ private int mTransportRttMs = RttThroughputValues.INVALID_RTT_THROUGHPUT_VALUE; |
+ |
+ /** |
+ * 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_VALUE; |
+ |
@GuardedBy("mNetworkQualityLock") |
private final ObserverList<NetworkQualityRttListener> mRttListenerList = |
new ObserverList<NetworkQualityRttListener>(); |
@@ -334,6 +356,45 @@ public class CronetUrlRequestContext extends CronetEngine { |
} |
} |
+ @Override |
+ public int getHttpRttMs() { |
+ if (!mNetworkQualityEstimatorEnabled) { |
+ throw new IllegalStateException("Network quality estimator must be enabled"); |
+ } |
+ synchronized (mNetworkQualityLock) { |
+ synchronized (mLock) { |
+ checkHaveAdapter(); |
+ } |
+ return mHttpRttMs; |
+ } |
+ } |
+ |
+ @Override |
+ public int getTransportRttMs() { |
+ if (!mNetworkQualityEstimatorEnabled) { |
+ throw new IllegalStateException("Network quality estimator must be enabled"); |
+ } |
+ synchronized (mNetworkQualityLock) { |
+ synchronized (mLock) { |
+ checkHaveAdapter(); |
+ } |
+ return mTransportRttMs; |
+ } |
+ } |
+ |
+ @Override |
+ public int getDownstreamThroughputKbps() { |
+ if (!mNetworkQualityEstimatorEnabled) { |
+ throw new IllegalStateException("Network quality estimator must be enabled"); |
+ } |
+ synchronized (mNetworkQualityLock) { |
+ synchronized (mLock) { |
+ checkHaveAdapter(); |
+ } |
+ return mDownstreamThroughputKbps; |
+ } |
+ } |
+ |
@VisibleForTesting |
@Override |
public void configureNetworkQualityEstimatorForTesting( |
@@ -527,6 +588,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) { |