| 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 1c4140cbcdbc4e266121b385596e21bd8f7c73c1..6ecdf894bf4e9bc4edf4524493e1bf2bdb03f3f8 100644
|
| --- a/components/cronet/android/java/src/org/chromium/net/CronetUrlRequestContext.java
|
| +++ b/components/cronet/android/java/src/org/chromium/net/CronetUrlRequestContext.java
|
| @@ -75,6 +75,15 @@ class CronetUrlRequestContext extends CronetEngine {
|
| private final ObserverList<RequestFinishedListener> mFinishedListenerList =
|
| new ObserverList<RequestFinishedListener>();
|
|
|
| + /**
|
| + * Synchronize access to mCertVerifierData.
|
| + */
|
| + private ConditionVariable mWaitGetCertVerifierDataComplete = new ConditionVariable();
|
| + private static final long CERT_VERIFIER_DATA_TIMEOUT_MS = 30;
|
| +
|
| + /** Holds CertVerifier data. */
|
| + private String mCertVerifierData;
|
| +
|
| @UsedByReflection("CronetEngine.java")
|
| public CronetUrlRequestContext(final CronetEngine.Builder builder) {
|
| CronetLibraryLoader.ensureInitialized(builder.getContext(), builder);
|
| @@ -117,7 +126,7 @@ class CronetUrlRequestContext extends CronetEngine {
|
| builder.dataReductionProxyPrimaryProxy(), builder.dataReductionProxyFallbackProxy(),
|
| builder.dataReductionProxySecureProxyCheckUrl(), builder.cacheDisabled(),
|
| builder.httpCacheMode(), builder.httpCacheMaxSize(), builder.experimentalOptions(),
|
| - builder.mockCertVerifier());
|
| + builder.mockCertVerifier(), builder.certVerifierData());
|
| for (Builder.QuicHint quicHint : builder.quicHints()) {
|
| nativeAddQuicHint(urlRequestContextConfig, quicHint.mHost, quicHint.mPort,
|
| quicHint.mAlternatePort);
|
| @@ -213,6 +222,17 @@ class CronetUrlRequestContext extends CronetEngine {
|
| }
|
| }
|
|
|
| + @Override
|
| + public String getCertVerifierData() {
|
| + synchronized (mLock) {
|
| + checkHaveAdapter();
|
| + nativeGetCertVerifierData(mUrlRequestContextAdapter);
|
| + }
|
| + mWaitGetCertVerifierDataComplete.block(CERT_VERIFIER_DATA_TIMEOUT_MS);
|
| + mWaitGetCertVerifierDataComplete.close();
|
| + return mCertVerifierData;
|
| + }
|
| +
|
| // This method is intentionally non-static to ensure Cronet native library
|
| // is loaded by class constructor.
|
| @Override
|
| @@ -444,6 +464,13 @@ class CronetUrlRequestContext extends CronetEngine {
|
| postObservationTaskToNetworkQualityExecutor(task);
|
| }
|
|
|
| + @SuppressWarnings("unused")
|
| + @CalledByNative
|
| + private void onGetCertVerifierData(String certVerifierData) {
|
| + mCertVerifierData = certVerifierData;
|
| + mWaitGetCertVerifierDataComplete.open();
|
| + }
|
| +
|
| void reportFinished(final CronetUrlRequest request) {
|
| if (mNetworkQualityEstimatorEnabled) {
|
| Runnable task = new Runnable() {
|
| @@ -476,7 +503,8 @@ class CronetUrlRequestContext extends CronetEngine {
|
| boolean sdchEnabled, String dataReductionProxyKey,
|
| String dataReductionProxyPrimaryProxy, String dataReductionProxyFallbackProxy,
|
| String dataReductionProxySecureProxyCheckUrl, boolean disableCache, int httpCacheMode,
|
| - long httpCacheMaxSize, String experimentalOptions, long mockCertVerifier);
|
| + long httpCacheMaxSize, String experimentalOptions, long mockCertVerifier,
|
| + String certVerifierData);
|
|
|
| private static native void nativeAddQuicHint(
|
| long urlRequestContextConfig, String host, int port, int alternatePort);
|
| @@ -501,6 +529,9 @@ class CronetUrlRequestContext extends CronetEngine {
|
| private native void nativeStopNetLog(long nativePtr);
|
|
|
| @NativeClassQualifiedName("CronetURLRequestContextAdapter")
|
| + private native void nativeGetCertVerifierData(long nativePtr);
|
| +
|
| + @NativeClassQualifiedName("CronetURLRequestContextAdapter")
|
| private native void nativeInitRequestContextOnMainThread(long nativePtr);
|
|
|
| @NativeClassQualifiedName("CronetURLRequestContextAdapter")
|
|
|