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

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

Issue 1273173002: Added Network Quality Estimator Real-time interface to Cronet (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 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/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);
}

Powered by Google App Engine
This is Rietveld 408576698