Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(92)

Unified Diff: components/cronet/android/java/src/org/chromium/net/impl/CronetUrlRequestContext.java

Issue 2223773003: Expose effective connection type to Cronet (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Rebased, addressed comments Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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 47d4345be6badb8147a47238315ce1610aed2871..7678f8b7cdab541cdff33515d2152a9f6375facd 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
@@ -20,6 +20,7 @@ import org.chromium.base.annotations.NativeClassQualifiedName;
import org.chromium.base.annotations.UsedByReflection;
import org.chromium.net.BidirectionalStream;
import org.chromium.net.CronetEngine;
+import org.chromium.net.EffectiveConnectionType;
import org.chromium.net.NetworkQualityRttListener;
import org.chromium.net.NetworkQualityThroughputListener;
import org.chromium.net.RequestFinishedInfo;
@@ -77,6 +78,14 @@ public class CronetUrlRequestContext extends CronetEngine {
*/
private final Object mFinishedListenerLock = new Object();
+ /**
+ * Current effective connection type as computed by the network quality
+ * estimator.
+ */
+ @GuardedBy("mNetworkQualityLock")
+ private int mEffectiveConnectionType =
+ EffectiveConnectionType.EFFECTIVE_CONNECTION_TYPE_UNKNOWN;
+
@GuardedBy("mNetworkQualityLock")
private final ObserverList<NetworkQualityRttListener> mRttListenerList =
new ObserverList<NetworkQualityRttListener>();
@@ -260,6 +269,17 @@ public class CronetUrlRequestContext extends CronetEngine {
return nativeGetHistogramDeltas();
}
+ @Override
+ public int getEffectiveConnectionType() {
+ if (!mNetworkQualityEstimatorEnabled) {
+ throw new IllegalStateException("Network quality estimator must be enabled");
+ }
+ synchronized (mNetworkQualityLock) {
+ checkHaveAdapter();
+ return mEffectiveConnectionType;
+ }
+ }
+
@VisibleForTesting
@Override
public void configureNetworkQualityEstimatorForTesting(
@@ -437,6 +457,16 @@ public class CronetUrlRequestContext extends CronetEngine {
@SuppressWarnings("unused")
@CalledByNative
+ private void onEffectiveConnectionTypeChanged(int effectiveConnectionType) {
+ synchronized (mNetworkQualityLock) {
+ // Convert the enum returned by the network quality estimator to an enum of type
+ // EffectiveConnectionType.
+ mEffectiveConnectionType = effectiveConnectionType;
+ }
+ }
+
+ @SuppressWarnings("unused")
+ @CalledByNative
private void onRttObservation(final int rttMs, final long whenMs, final int source) {
synchronized (mNetworkQualityLock) {
for (final NetworkQualityRttListener listener : mRttListenerList) {

Powered by Google App Engine
This is Rietveld 408576698