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

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

Issue 2045703003: Enable NQE when Cronet Engine is built (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 6 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; 5 package org.chromium.net;
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 62 matching lines...) Expand 10 before | Expand all | Expand 10 after
73 73
74 @GuardedBy("mNetworkQualityLock") 74 @GuardedBy("mNetworkQualityLock")
75 private final ObserverList<RequestFinishedListener> mFinishedListenerList = 75 private final ObserverList<RequestFinishedListener> mFinishedListenerList =
76 new ObserverList<RequestFinishedListener>(); 76 new ObserverList<RequestFinishedListener>();
77 77
78 @UsedByReflection("CronetEngine.java") 78 @UsedByReflection("CronetEngine.java")
79 public CronetUrlRequestContext(final CronetEngine.Builder builder) { 79 public CronetUrlRequestContext(final CronetEngine.Builder builder) {
80 CronetLibraryLoader.ensureInitialized(builder.getContext(), builder); 80 CronetLibraryLoader.ensureInitialized(builder.getContext(), builder);
81 nativeSetMinLogLevel(getLoggingLevel()); 81 nativeSetMinLogLevel(getLoggingLevel());
82 synchronized (mLock) { 82 synchronized (mLock) {
83 mNetworkQualityEstimatorEnabled = builder.networkQualityEstimatorEna bled();
84 mNetworkQualityExecutor = builder.networkQualityEstimatorExecutor();
83 mUrlRequestContextAdapter = nativeCreateRequestContextAdapter( 85 mUrlRequestContextAdapter = nativeCreateRequestContextAdapter(
84 createNativeUrlRequestContextConfig(builder.getContext(), bu ilder)); 86 createNativeUrlRequestContextConfig(builder.getContext(), bu ilder));
85 if (mUrlRequestContextAdapter == 0) { 87 if (mUrlRequestContextAdapter == 0) {
86 throw new NullPointerException("Context Adapter creation failed. "); 88 throw new NullPointerException("Context Adapter creation failed. ");
87 } 89 }
88 } 90 }
89 91
90 // Init native Chromium URLRequestContext on main UI thread. 92 // Init native Chromium URLRequestContext on main UI thread.
91 Runnable task = new Runnable() { 93 Runnable task = new Runnable() {
92 @Override 94 @Override
(...skipping 17 matching lines...) Expand all
110 112
111 static long createNativeUrlRequestContextConfig( 113 static long createNativeUrlRequestContextConfig(
112 final Context context, CronetEngine.Builder builder) { 114 final Context context, CronetEngine.Builder builder) {
113 final long urlRequestContextConfig = nativeCreateRequestContextConfig( 115 final long urlRequestContextConfig = nativeCreateRequestContextConfig(
114 builder.getUserAgent(), builder.storagePath(), builder.quicEnabl ed(), 116 builder.getUserAgent(), builder.storagePath(), builder.quicEnabl ed(),
115 builder.getDefaultQuicUserAgentId(context), builder.http2Enabled (), 117 builder.getDefaultQuicUserAgentId(context), builder.http2Enabled (),
116 builder.sdchEnabled(), builder.dataReductionProxyKey(), 118 builder.sdchEnabled(), builder.dataReductionProxyKey(),
117 builder.dataReductionProxyPrimaryProxy(), builder.dataReductionP roxyFallbackProxy(), 119 builder.dataReductionProxyPrimaryProxy(), builder.dataReductionP roxyFallbackProxy(),
118 builder.dataReductionProxySecureProxyCheckUrl(), builder.cacheDi sabled(), 120 builder.dataReductionProxySecureProxyCheckUrl(), builder.cacheDi sabled(),
119 builder.httpCacheMode(), builder.httpCacheMaxSize(), builder.exp erimentalOptions(), 121 builder.httpCacheMode(), builder.httpCacheMaxSize(), builder.exp erimentalOptions(),
120 builder.mockCertVerifier()); 122 builder.mockCertVerifier(), builder.networkQualityEstimatorEnabl ed());
121 for (Builder.QuicHint quicHint : builder.quicHints()) { 123 for (Builder.QuicHint quicHint : builder.quicHints()) {
122 nativeAddQuicHint(urlRequestContextConfig, quicHint.mHost, quicHint. mPort, 124 nativeAddQuicHint(urlRequestContextConfig, quicHint.mHost, quicHint. mPort,
123 quicHint.mAlternatePort); 125 quicHint.mAlternatePort);
124 } 126 }
125 for (Builder.Pkp pkp : builder.publicKeyPins()) { 127 for (Builder.Pkp pkp : builder.publicKeyPins()) {
126 nativeAddPkp(urlRequestContextConfig, pkp.mHost, pkp.mHashes, pkp.mI ncludeSubdomains, 128 nativeAddPkp(urlRequestContextConfig, pkp.mHost, pkp.mHashes, pkp.mI ncludeSubdomains,
127 pkp.mExpirationDate.getTime()); 129 pkp.mExpirationDate.getTime());
128 } 130 }
129 return urlRequestContextConfig; 131 return urlRequestContextConfig;
130 } 132 }
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
215 } 217 }
216 } 218 }
217 219
218 // This method is intentionally non-static to ensure Cronet native library 220 // This method is intentionally non-static to ensure Cronet native library
219 // is loaded by class constructor. 221 // is loaded by class constructor.
220 @Override 222 @Override
221 public byte[] getGlobalMetricsDeltas() { 223 public byte[] getGlobalMetricsDeltas() {
222 return nativeGetHistogramDeltas(); 224 return nativeGetHistogramDeltas();
223 } 225 }
224 226
227 // TODO(tbansal): http://crbug.com/618034 Remove this API.
225 @Override 228 @Override
226 public void enableNetworkQualityEstimator(Executor executor) { 229 public void enableNetworkQualityEstimator(Executor executor) {
227 enableNetworkQualityEstimatorForTesting(false, false, executor);
228 }
229
230 @VisibleForTesting
231 @Override
232 void enableNetworkQualityEstimatorForTesting(
233 boolean useLocalHostRequests, boolean useSmallerResponses, Executor executor) {
234 if (mNetworkQualityEstimatorEnabled) { 230 if (mNetworkQualityEstimatorEnabled) {
235 throw new IllegalStateException("Network quality estimator already e nabled"); 231 throw new IllegalStateException("Network quality estimator already e nabled");
236 } 232 }
237 mNetworkQualityEstimatorEnabled = true; 233 mNetworkQualityEstimatorEnabled = true;
238 if (executor == null) { 234 if (executor == null) {
239 throw new NullPointerException("Network quality estimator requires a n executor"); 235 throw new NullPointerException("Network quality estimator requires a n executor");
240 } 236 }
241 mNetworkQualityExecutor = executor; 237 mNetworkQualityExecutor = executor;
242 synchronized (mLock) { 238 synchronized (mLock) {
243 checkHaveAdapter(); 239 checkHaveAdapter();
244 nativeEnableNetworkQualityEstimator( 240 nativeEnableNetworkQualityEstimator(mUrlRequestContextAdapter);
241 }
242 }
243
244 @VisibleForTesting
245 @Override
246 void configureNetworkQualityEstimatorForTesting(
247 boolean useLocalHostRequests, boolean useSmallerResponses) {
248 if (!mNetworkQualityEstimatorEnabled) {
bengr 2016/06/07 20:53:16 I was wondering if you even need this variable. E.
tbansal1 2016/06/07 21:37:17 Done.
249 throw new IllegalStateException("Network quality estimator must be e nabled");
250 }
251 synchronized (mLock) {
252 checkHaveAdapter();
253 nativeConfigureNetworkQualityEstimatorForTesting(
245 mUrlRequestContextAdapter, useLocalHostRequests, useSmallerR esponses); 254 mUrlRequestContextAdapter, useLocalHostRequests, useSmallerR esponses);
246 } 255 }
247 } 256 }
248 257
249 @Override 258 @Override
250 public void addRttListener(NetworkQualityRttListener listener) { 259 public void addRttListener(NetworkQualityRttListener listener) {
251 if (!mNetworkQualityEstimatorEnabled) { 260 if (!mNetworkQualityEstimatorEnabled) {
252 throw new IllegalStateException("Network quality estimator must be e nabled"); 261 throw new IllegalStateException("Network quality estimator must be e nabled");
253 } 262 }
254 synchronized (mNetworkQualityLock) { 263 synchronized (mNetworkQualityLock) {
(...skipping 216 matching lines...) Expand 10 before | Expand all | Expand 10 after
471 failException); 480 failException);
472 } 481 }
473 } 482 }
474 483
475 // Native methods are implemented in cronet_url_request_context_adapter.cc. 484 // Native methods are implemented in cronet_url_request_context_adapter.cc.
476 private static native long nativeCreateRequestContextConfig(String userAgent , 485 private static native long nativeCreateRequestContextConfig(String userAgent ,
477 String storagePath, boolean quicEnabled, String quicUserAgentId, boo lean http2Enabled, 486 String storagePath, boolean quicEnabled, String quicUserAgentId, boo lean http2Enabled,
478 boolean sdchEnabled, String dataReductionProxyKey, 487 boolean sdchEnabled, String dataReductionProxyKey,
479 String dataReductionProxyPrimaryProxy, String dataReductionProxyFall backProxy, 488 String dataReductionProxyPrimaryProxy, String dataReductionProxyFall backProxy,
480 String dataReductionProxySecureProxyCheckUrl, boolean disableCache, int httpCacheMode, 489 String dataReductionProxySecureProxyCheckUrl, boolean disableCache, int httpCacheMode,
481 long httpCacheMaxSize, String experimentalOptions, long mockCertVeri fier); 490 long httpCacheMaxSize, String experimentalOptions, long mockCertVeri fier,
491 boolean enableNetworkQualityEstimator);
482 492
483 private static native void nativeAddQuicHint( 493 private static native void nativeAddQuicHint(
484 long urlRequestContextConfig, String host, int port, int alternatePo rt); 494 long urlRequestContextConfig, String host, int port, int alternatePo rt);
485 495
486 private static native void nativeAddPkp(long urlRequestContextConfig, String host, 496 private static native void nativeAddPkp(long urlRequestContextConfig, String host,
487 byte[][] hashes, boolean includeSubdomains, long expirationTime); 497 byte[][] hashes, boolean includeSubdomains, long expirationTime);
488 498
489 private static native long nativeCreateRequestContextAdapter(long urlRequest ContextConfig); 499 private static native long nativeCreateRequestContextAdapter(long urlRequest ContextConfig);
490 500
491 private static native int nativeSetMinLogLevel(int loggingLevel); 501 private static native int nativeSetMinLogLevel(int loggingLevel);
492 502
493 private static native byte[] nativeGetHistogramDeltas(); 503 private static native byte[] nativeGetHistogramDeltas();
494 504
495 @NativeClassQualifiedName("CronetURLRequestContextAdapter") 505 @NativeClassQualifiedName("CronetURLRequestContextAdapter")
496 private native void nativeDestroy(long nativePtr); 506 private native void nativeDestroy(long nativePtr);
497 507
498 @NativeClassQualifiedName("CronetURLRequestContextAdapter") 508 @NativeClassQualifiedName("CronetURLRequestContextAdapter")
499 private native void nativeStartNetLogToFile(long nativePtr, 509 private native void nativeStartNetLogToFile(long nativePtr,
500 String fileName, boolean logAll); 510 String fileName, boolean logAll);
501 511
502 @NativeClassQualifiedName("CronetURLRequestContextAdapter") 512 @NativeClassQualifiedName("CronetURLRequestContextAdapter")
503 private native void nativeStopNetLog(long nativePtr); 513 private native void nativeStopNetLog(long nativePtr);
504 514
505 @NativeClassQualifiedName("CronetURLRequestContextAdapter") 515 @NativeClassQualifiedName("CronetURLRequestContextAdapter")
506 private native void nativeInitRequestContextOnMainThread(long nativePtr); 516 private native void nativeInitRequestContextOnMainThread(long nativePtr);
507 517
508 @NativeClassQualifiedName("CronetURLRequestContextAdapter") 518 @NativeClassQualifiedName("CronetURLRequestContextAdapter")
509 private native void nativeEnableNetworkQualityEstimator( 519 private native void nativeConfigureNetworkQualityEstimatorForTesting(
510 long nativePtr, boolean useLocalHostRequests, boolean useSmallerResp onses); 520 long nativePtr, boolean useLocalHostRequests, boolean useSmallerResp onses);
511 521
512 @NativeClassQualifiedName("CronetURLRequestContextAdapter") 522 @NativeClassQualifiedName("CronetURLRequestContextAdapter")
523 private native void nativeEnableNetworkQualityEstimator(long nativePtr);
524
525 @NativeClassQualifiedName("CronetURLRequestContextAdapter")
513 private native void nativeProvideRTTObservations(long nativePtr, boolean sho uld); 526 private native void nativeProvideRTTObservations(long nativePtr, boolean sho uld);
514 527
515 @NativeClassQualifiedName("CronetURLRequestContextAdapter") 528 @NativeClassQualifiedName("CronetURLRequestContextAdapter")
516 private native void nativeProvideThroughputObservations(long nativePtr, bool ean should); 529 private native void nativeProvideThroughputObservations(long nativePtr, bool ean should);
517 } 530 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698