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

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

Issue 2178053002: Change RequestFinishedListener to provide executor (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: add back old NQE API Created 4 years, 5 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 345692dc565c1e8efbbb3e1241d0c14a3e41c3bf..b4f990f77669b20e4a3e4896a47107aa7069ee71 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
@@ -22,6 +22,7 @@ import org.chromium.net.BidirectionalStream;
import org.chromium.net.CronetEngine;
import org.chromium.net.NetworkQualityRttListener;
import org.chromium.net.NetworkQualityThroughputListener;
+import org.chromium.net.RequestFinishedListener;
import org.chromium.net.UrlRequest;
import org.chromium.net.urlconnection.CronetHttpURLConnection;
import org.chromium.net.urlconnection.CronetURLStreamHandlerFactory;
@@ -68,6 +69,7 @@ public class CronetUrlRequestContext extends CronetEngine {
* addition and removal may occur on a different thread from notification.
*/
private final Object mNetworkQualityLock = new Object();
+ private final Object mFinishedListenerLock = new Object();
tbansal1 2016/07/26 20:37:26 May be add a separate comment block for this.
xunjieli 2016/07/26 21:11:09 Can you add a comment here?
mgersh 2016/07/27 20:54:12 Done.
mgersh 2016/07/27 20:54:12 Done.
@GuardedBy("mNetworkQualityLock")
private final ObserverList<NetworkQualityRttListener> mRttListenerList =
@@ -77,7 +79,7 @@ public class CronetUrlRequestContext extends CronetEngine {
private final ObserverList<NetworkQualityThroughputListener> mThroughputListenerList =
new ObserverList<NetworkQualityThroughputListener>();
- @GuardedBy("mNetworkQualityLock")
+ @GuardedBy("mFinishedListenerLock")
private final ObserverList<RequestFinishedListener> mFinishedListenerList =
new ObserverList<RequestFinishedListener>();
@@ -153,11 +155,9 @@ public class CronetUrlRequestContext extends CronetEngine {
boolean disableConnectionMigration) {
synchronized (mLock) {
checkHaveAdapter();
- boolean metricsCollectionEnabled = mNetworkQualityEstimatorEnabled;
- if (metricsCollectionEnabled) { // Collect metrics only if someone is listening.
- synchronized (mNetworkQualityLock) {
- metricsCollectionEnabled = !mFinishedListenerList.isEmpty();
- }
+ boolean metricsCollectionEnabled = false;
+ synchronized (mFinishedListenerLock) {
+ metricsCollectionEnabled = !mFinishedListenerList.isEmpty();
}
return new CronetUrlRequest(this, url, priority, callback, executor, requestAnnotations,
metricsCollectionEnabled, disableCache, disableConnectionMigration);
@@ -379,14 +379,7 @@ public class CronetUrlRequestContext extends CronetEngine {
*/
@Override
public void addRequestFinishedListener(RequestFinishedListener listener) {
- if (!mNetworkQualityEstimatorEnabled) {
- throw new IllegalStateException("Network quality estimator must be enabled");
- }
- // RequestFinishedListener does not provide its own executor.
- if (mNetworkQualityExecutor == null) {
- throw new IllegalStateException("Executor must not be null");
- }
- synchronized (mNetworkQualityLock) {
+ synchronized (mFinishedListenerLock) {
mFinishedListenerList.addObserver(listener);
}
}
@@ -396,10 +389,7 @@ public class CronetUrlRequestContext extends CronetEngine {
*/
@Override
public void removeRequestFinishedListener(RequestFinishedListener listener) {
- if (!mNetworkQualityEstimatorEnabled) {
- throw new IllegalStateException("Network quality estimator must be enabled");
- }
- synchronized (mNetworkQualityLock) {
+ synchronized (mFinishedListenerLock) {
mFinishedListenerList.removeObserver(listener);
}
}
@@ -528,30 +518,18 @@ public class CronetUrlRequestContext extends CronetEngine {
}
void reportFinished(final CronetUrlRequest request) {
- if (!mNetworkQualityEstimatorEnabled) {
- return;
- }
- // If no request finished listener has been added, then mNetworkQualityExecutor may be
- // null. Exit early to avoid posting to a null executor.
- synchronized (mNetworkQualityLock) {
- if (mFinishedListenerList.isEmpty()) {
- return;
- }
- }
- Runnable task = new Runnable() {
- @Override
- public void run() {
- synchronized (mNetworkQualityLock) {
- UrlRequestInfo requestInfo = request.getRequestInfo();
- for (RequestFinishedListener listener : mFinishedListenerList) {
+ final UrlRequestInfo requestInfo = request.getRequestInfo();
+ synchronized (mFinishedListenerLock) {
+ for (final RequestFinishedListener listener : mFinishedListenerList) {
+ Runnable task = new Runnable() {
+ @Override
+ public void run() {
listener.onRequestFinished(requestInfo);
}
- }
+ };
+ postObservationTaskToExecutor(listener.getExecutor(), task);
xunjieli 2016/07/26 21:11:09 We shouldn't call into the executor, which might h
mgersh 2016/07/27 20:54:12 Done. I also changed mFinishedListenerList from an
xunjieli 2016/07/29 16:35:24 Acknowledged. I agree with you.
}
- };
- // Use {@link mNetworkQualityExecutor} since
- // RequestFInishedListeners do not provide an executor.
- postObservationTaskToExecutor(mNetworkQualityExecutor, task);
+ }
}
private static void postObservationTaskToExecutor(Executor executor, Runnable task) {

Powered by Google App Engine
This is Rietveld 408576698