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

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

Issue 2283243002: Allow direct executors in cronet. (Closed)
Patch Set: Addressed comments, unified request failure logic in CronetUrlRequest Created 4 years, 3 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 unified diff | Download patch
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 package org.chromium.net.impl; 5 package org.chromium.net.impl;
6 6
7 import android.content.Context; 7 import android.content.Context;
8 import android.os.Build; 8 import android.os.Build;
9 import android.os.ConditionVariable; 9 import android.os.ConditionVariable;
10 import android.os.Handler; 10 import android.os.Handler;
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
55 static final String LOG_TAG = "ChromiumNetwork"; 55 static final String LOG_TAG = "ChromiumNetwork";
56 56
57 /** 57 /**
58 * Synchronize access to mUrlRequestContextAdapter and shutdown routine. 58 * Synchronize access to mUrlRequestContextAdapter and shutdown routine.
59 */ 59 */
60 private final Object mLock = new Object(); 60 private final Object mLock = new Object();
61 private final ConditionVariable mInitCompleted = new ConditionVariable(false ); 61 private final ConditionVariable mInitCompleted = new ConditionVariable(false );
62 private final AtomicInteger mActiveRequestCount = new AtomicInteger(0); 62 private final AtomicInteger mActiveRequestCount = new AtomicInteger(0);
63 63
64 private long mUrlRequestContextAdapter = 0; 64 private long mUrlRequestContextAdapter = 0;
65 private Thread mNetworkThread; 65 private volatile Thread mNetworkThread;
66 66
67 private boolean mNetworkQualityEstimatorEnabled; 67 private boolean mNetworkQualityEstimatorEnabled;
68 68
69 /** 69 /**
70 * Locks operations on network quality listeners, because listener 70 * Locks operations on network quality listeners, because listener
71 * addition and removal may occur on a different thread from notification. 71 * addition and removal may occur on a different thread from notification.
72 */ 72 */
73 private final Object mNetworkQualityLock = new Object(); 73 private final Object mNetworkQualityLock = new Object();
74 74
75 /** 75 /**
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
175 for (Builder.Pkp pkp : builder.publicKeyPins()) { 175 for (Builder.Pkp pkp : builder.publicKeyPins()) {
176 nativeAddPkp(urlRequestContextConfig, pkp.mHost, pkp.mHashes, pkp.mI ncludeSubdomains, 176 nativeAddPkp(urlRequestContextConfig, pkp.mHost, pkp.mHashes, pkp.mI ncludeSubdomains,
177 pkp.mExpirationDate.getTime()); 177 pkp.mExpirationDate.getTime());
178 } 178 }
179 return urlRequestContextConfig; 179 return urlRequestContextConfig;
180 } 180 }
181 181
182 @Override 182 @Override
183 public UrlRequest createRequest(String url, UrlRequest.Callback callback, Ex ecutor executor, 183 public UrlRequest createRequest(String url, UrlRequest.Callback callback, Ex ecutor executor,
184 int priority, Collection<Object> requestAnnotations, boolean disable Cache, 184 int priority, Collection<Object> requestAnnotations, boolean disable Cache,
185 boolean disableConnectionMigration) { 185 boolean disableConnectionMigration, boolean allowDirectExecutor) {
186 synchronized (mLock) { 186 synchronized (mLock) {
187 checkHaveAdapter(); 187 checkHaveAdapter();
188 boolean metricsCollectionEnabled = false; 188 boolean metricsCollectionEnabled = false;
189 synchronized (mFinishedListenerLock) { 189 synchronized (mFinishedListenerLock) {
190 metricsCollectionEnabled = !mFinishedListenerList.isEmpty(); 190 metricsCollectionEnabled = !mFinishedListenerList.isEmpty();
191 } 191 }
192 return new CronetUrlRequest(this, url, priority, callback, executor, requestAnnotations, 192 return new CronetUrlRequest(this, url, priority, callback, executor, requestAnnotations,
193 metricsCollectionEnabled, disableCache, disableConnectionMig ration); 193 metricsCollectionEnabled, disableCache, disableConnectionMig ration,
194 allowDirectExecutor);
194 } 195 }
195 } 196 }
196 197
197 @Override 198 @Override
198 public BidirectionalStream createBidirectionalStream(String url, 199 public BidirectionalStream createBidirectionalStream(String url,
199 BidirectionalStream.Callback callback, Executor executor, String htt pMethod, 200 BidirectionalStream.Callback callback, Executor executor, String htt pMethod,
200 List<Map.Entry<String, String>> requestHeaders, 201 List<Map.Entry<String, String>> requestHeaders,
201 @BidirectionalStream.Builder.StreamPriority int priority, 202 @BidirectionalStream.Builder.StreamPriority int priority,
202 boolean delayRequestHeadersUntilFirstFlush) { 203 boolean delayRequestHeadersUntilFirstFlush) {
203 synchronized (mLock) { 204 synchronized (mLock) {
(...skipping 281 matching lines...) Expand 10 before | Expand all | Expand 10 after
485 loggingLevel = LOG_DEBUG; 486 loggingLevel = LOG_DEBUG;
486 } else { 487 } else {
487 loggingLevel = LOG_NONE; 488 loggingLevel = LOG_NONE;
488 } 489 }
489 return loggingLevel; 490 return loggingLevel;
490 } 491 }
491 492
492 @SuppressWarnings("unused") 493 @SuppressWarnings("unused")
493 @CalledByNative 494 @CalledByNative
494 private void initNetworkThread() { 495 private void initNetworkThread() {
495 synchronized (mLock) { 496 mNetworkThread = Thread.currentThread();
496 mNetworkThread = Thread.currentThread(); 497 mInitCompleted.open();
497 mInitCompleted.open();
498 }
499 Thread.currentThread().setName("ChromiumNet"); 498 Thread.currentThread().setName("ChromiumNet");
500 Process.setThreadPriority(Process.THREAD_PRIORITY_BACKGROUND); 499 Process.setThreadPriority(Process.THREAD_PRIORITY_BACKGROUND);
501 } 500 }
502 501
503 @SuppressWarnings("unused") 502 @SuppressWarnings("unused")
504 @CalledByNative 503 @CalledByNative
505 private void onEffectiveConnectionTypeChanged(int effectiveConnectionType) { 504 private void onEffectiveConnectionTypeChanged(int effectiveConnectionType) {
506 synchronized (mNetworkQualityLock) { 505 synchronized (mNetworkQualityLock) {
507 // Convert the enum returned by the network quality estimator to an enum of type 506 // Convert the enum returned by the network quality estimator to an enum of type
508 // EffectiveConnectionType. 507 // EffectiveConnectionType.
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
619 618
620 @NativeClassQualifiedName("CronetURLRequestContextAdapter") 619 @NativeClassQualifiedName("CronetURLRequestContextAdapter")
621 private native void nativeConfigureNetworkQualityEstimatorForTesting( 620 private native void nativeConfigureNetworkQualityEstimatorForTesting(
622 long nativePtr, boolean useLocalHostRequests, boolean useSmallerResp onses); 621 long nativePtr, boolean useLocalHostRequests, boolean useSmallerResp onses);
623 622
624 @NativeClassQualifiedName("CronetURLRequestContextAdapter") 623 @NativeClassQualifiedName("CronetURLRequestContextAdapter")
625 private native void nativeProvideRTTObservations(long nativePtr, boolean sho uld); 624 private native void nativeProvideRTTObservations(long nativePtr, boolean sho uld);
626 625
627 @NativeClassQualifiedName("CronetURLRequestContextAdapter") 626 @NativeClassQualifiedName("CronetURLRequestContextAdapter")
628 private native void nativeProvideThroughputObservations(long nativePtr, bool ean should); 627 private native void nativeProvideThroughputObservations(long nativePtr, bool ean should);
628
629 public boolean isNetworkThread(Thread thread) {
630 return thread == mNetworkThread;
631 }
629 } 632 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698