Chromium Code Reviews| Index: components/cronet/android/java/src/org/chromium/net/CronetUrlRequestContext.java |
| diff --git a/components/cronet/android/java/src/org/chromium/net/CronetUrlRequestContext.java b/components/cronet/android/java/src/org/chromium/net/CronetUrlRequestContext.java |
| index 019288232dc3c90f15e51fa812e22df34c008a4c..0d2e95a60df45274093ee61639eeff36e673910d 100644 |
| --- a/components/cronet/android/java/src/org/chromium/net/CronetUrlRequestContext.java |
| +++ b/components/cronet/android/java/src/org/chromium/net/CronetUrlRequestContext.java |
| @@ -15,6 +15,7 @@ import android.util.Log; |
| import org.chromium.base.CalledByNative; |
| import org.chromium.base.JNINamespace; |
| import org.chromium.base.NativeClassQualifiedName; |
| +import org.chromium.base.ObserverList; |
| import org.chromium.base.VisibleForTesting; |
| import org.chromium.base.annotations.UsedByReflection; |
| @@ -42,6 +43,11 @@ public class CronetUrlRequestContext extends UrlRequestContext { |
| private long mUrlRequestContextAdapter = 0; |
| private Thread mNetworkThread; |
| + private ObserverList<RTTObserver> mRTTObserverList = |
|
mef
2015/08/11 17:16:26
final
bengr
2015/08/25 23:43:34
Done.
|
| + new ObserverList<RTTObserver>(); |
| + private ObserverList<BandwidthObserver> mBandwidthObserverList = |
| + new ObserverList<BandwidthObserver>(); |
| + |
| @UsedByReflection("UrlRequestContext.java") |
| public CronetUrlRequestContext(Context context, |
| UrlRequestContextConfig config) { |
| @@ -148,6 +154,47 @@ public class CronetUrlRequestContext extends UrlRequestContext { |
| } |
| } |
| + @Override |
| + public void configureNetworkQualityEstimator( |
| + boolean useLocalHostRequests, boolean useSmallerResponses) { |
|
mef
2015/08/11 17:16:26
synchronized (mLock) { checkHaveAdapter(); ...
he
bengr
2015/08/25 23:43:34
Done.
|
| + nativeConfigureNetworkQualityEstimator(mUrlRequestContextAdapter, |
| + useLocalHostRequests, useSmallerResponses); |
| + } |
| + |
| + @Override |
| + public void addRTTObserver(RTTObserver observer) { |
| + if (mRTTObserverList.isEmpty()) { |
| + nativeProvideRTTObservations(mUrlRequestContextAdapter, true); |
| + } |
| + mRTTObserverList.addObserver(observer); |
| + } |
| + |
| + @Override |
| + public void removeRTTObserver(RTTObserver observer) { |
| + mRTTObserverList.removeObserver(observer); |
| + if (mRTTObserverList.isEmpty()) { |
| + nativeProvideRTTObservations(mUrlRequestContextAdapter, false); |
| + } |
| + } |
| + |
| + @Override |
| + public void addBandwidthObserver(BandwidthObserver observer) { |
| + if (mBandwidthObserverList.isEmpty()) { |
| + nativeProvideBandwidthObservations(mUrlRequestContextAdapter, true); |
| + } |
| + mBandwidthObserverList.addObserver(observer); |
| + } |
| + |
| + @Override |
| + public void removeBandwidthObserver(BandwidthObserver observer) { |
| + mBandwidthObserverList.removeObserver(observer); |
| + if (mBandwidthObserverList.isEmpty()) { |
| + nativeProvideBandwidthObservations(mUrlRequestContextAdapter, |
| + false); |
| + } |
| + |
| + } |
| + |
| /** |
| * Mark request as started to prevent shutdown when there are active |
| * requests. |
| @@ -209,6 +256,22 @@ public class CronetUrlRequestContext extends UrlRequestContext { |
| Process.setThreadPriority(Process.THREAD_PRIORITY_BACKGROUND); |
| } |
| + @SuppressWarnings("unused") |
| + @CalledByNative |
| + private void onRTTObservation(int value, int when, int source) { |
| + for (RTTObserver observer : mRTTObserverList) { |
|
mef
2015/08/11 17:16:26
protect the list?
bengr
2015/08/25 23:43:34
I don't understand.
|
| + observer.onRTTObservation(value, when, source); |
| + } |
| + } |
| + |
| + @SuppressWarnings("unused") |
| + @CalledByNative |
| + private void onBandwidthObservation(int value, int when, int source) { |
| + for (BandwidthObserver observer : mBandwidthObserverList) { |
| + observer.onBandwidthObservation(value, when, source); |
| + } |
| + } |
| + |
| // Native methods are implemented in cronet_url_request_context.cc. |
| private static native long nativeCreateRequestContextAdapter(String config); |
| @@ -226,4 +289,16 @@ public class CronetUrlRequestContext extends UrlRequestContext { |
| @NativeClassQualifiedName("CronetURLRequestContextAdapter") |
| private native void nativeInitRequestContextOnMainThread(long nativePtr); |
| + |
| + @NativeClassQualifiedName("CronetURLRequestContextAdapter") |
| + private native void nativeConfigureNetworkQualityEstimator(long nativePtr, |
| + boolean useLocalHostRequests, boolean useSmallerResponses); |
| + |
| + @NativeClassQualifiedName("CronetURLRequestContextAdapter") |
| + private native void nativeProvideRTTObservations(long nativePtr, |
| + boolean should); |
| + |
| + @NativeClassQualifiedName("CronetURLRequestContextAdapter") |
| + private native void nativeProvideBandwidthObservations(long nativePtr, |
| + boolean should); |
| } |