Commit 588fff7a authored by Eric Stevenson's avatar Eric Stevenson Committed by Commit Bot

JNI refactor: @NativeMethods conversion (//components/cronet).

This CL was generated by
//base/android/jni_generator/jni_refactorer.py.

Bug: 929661
Change-Id: I93cfe2c52279c115e2c896aff034ef650c4e6ec2
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1809242Reviewed-by: default avatarPaul Jensen <pauljensen@chromium.org>
Commit-Queue: Eric Stevenson <estevenson@chromium.org>
Cr-Commit-Position: refs/heads/master@{#700319}
parent 9d32d0f2
......@@ -422,10 +422,12 @@ android_library("cronet_impl_native_base_java") {
deps = [
":cronet_api_java",
":cronet_impl_common_base_java",
"//base:jni_java",
"//third_party/android_deps:androidx_annotation_annotation_java",
"//third_party/jsr-305:jsr_305_javalib",
]
deps += cronet_impl_native_java_deps_to_package
annotation_processor_deps = [ "//base/android/jni_generator:jni_processor" ]
srcjar_deps = cronet_impl_native_java_srcjar_deps
}
......
......@@ -11,6 +11,7 @@ import org.chromium.base.VisibleForTesting;
import org.chromium.base.annotations.CalledByNative;
import org.chromium.base.annotations.JNINamespace;
import org.chromium.base.annotations.NativeClassQualifiedName;
import org.chromium.base.annotations.NativeMethods;
import org.chromium.net.BidirectionalStream;
import org.chromium.net.CallbackException;
import org.chromium.net.CronetException;
......@@ -76,8 +77,8 @@ public class CronetBidirectionalStream extends ExperimentalBidirectionalStream {
int ERROR = 6;
/* Reading and writing are done, and the stream is closed successfully. */
int SUCCESS = 7;
/* Waiting for {@code nativeSendRequestHeaders()} or {@code nativeWritevData()} to be
called. */
/* Waiting for {@code CronetBidirectionalStreamJni.get().sendRequestHeaders()} or {@code
CronetBidirectionalStreamJni.get().writevData()} to be called. */
int WAITING_FOR_FLUSH = 8;
/* Writing to the remote, {@code onWritevCompleted()} callback will be called when done. */
int WRITING = 9;
......@@ -111,7 +112,7 @@ public class CronetBidirectionalStream extends ExperimentalBidirectionalStream {
@GuardedBy("mNativeStreamLock")
// Flush data queue that should be pushed to the native stack when the previous
// nativeWritevData completes.
// CronetBidirectionalStreamJni.get().writevData completes.
private LinkedList<ByteBuffer> mFlushData;
@GuardedBy("mNativeStreamLock")
......@@ -265,14 +266,16 @@ public class CronetBidirectionalStream extends ExperimentalBidirectionalStream {
throw new IllegalStateException("Stream is already started.");
}
try {
mNativeStream = nativeCreateBidirectionalStream(
mNativeStream = CronetBidirectionalStreamJni.get().createBidirectionalStream(
CronetBidirectionalStream.this,
mRequestContext.getUrlRequestContextAdapter(),
!mDelayRequestHeadersUntilFirstFlush,
mRequestContext.hasRequestFinishedListener(), mTrafficStatsTagSet,
mTrafficStatsTag, mTrafficStatsUidSet, mTrafficStatsUid);
mRequestContext.onRequestStarted();
// Non-zero startResult means an argument error.
int startResult = nativeStart(mNativeStream, mInitialUrl, mInitialPriority,
int startResult = CronetBidirectionalStreamJni.get().start(mNativeStream,
CronetBidirectionalStream.this, mInitialUrl, mInitialPriority,
mInitialMethod, mRequestHeaders, !doesMethodAllowWriteData(mInitialMethod));
if (startResult == -1) {
throw new IllegalArgumentException("Invalid http method " + mInitialMethod);
......@@ -307,7 +310,9 @@ public class CronetBidirectionalStream extends ExperimentalBidirectionalStream {
mOnReadCompletedTask = new OnReadCompletedRunnable();
}
mReadState = State.READING;
if (!nativeReadData(mNativeStream, buffer, buffer.position(), buffer.limit())) {
if (!CronetBidirectionalStreamJni.get().readData(mNativeStream,
CronetBidirectionalStream.this, buffer, buffer.position(),
buffer.limit())) {
// Still waiting on read. This is just to have consistent
// behavior with the other error cases.
mReadState = State.WAITING_FOR_READ;
......@@ -348,7 +353,8 @@ public class CronetBidirectionalStream extends ExperimentalBidirectionalStream {
// request headers need to be flushed.
if (!mRequestHeadersSent) {
mRequestHeadersSent = true;
nativeSendRequestHeaders(mNativeStream);
CronetBidirectionalStreamJni.get().sendRequestHeaders(
mNativeStream, CronetBidirectionalStream.this);
if (!doesMethodAllowWriteData(mInitialMethod)) {
mWriteState = State.WRITING_DONE;
}
......@@ -393,7 +399,8 @@ public class CronetBidirectionalStream extends ExperimentalBidirectionalStream {
assert buffers.length >= 1;
mWriteState = State.WRITING;
mRequestHeadersSent = true;
if (!nativeWritevData(mNativeStream, buffers, positions, limits,
if (!CronetBidirectionalStreamJni.get().writevData(mNativeStream,
CronetBidirectionalStream.this, buffers, positions, limits,
mEndOfStreamWritten && mPendingData.isEmpty())) {
// Still waiting on flush. This is just to have consistent
// behavior with the other error cases.
......@@ -760,7 +767,8 @@ public class CronetBidirectionalStream extends ExperimentalBidirectionalStream {
if (mNativeStream == 0) {
return;
}
nativeDestroy(mNativeStream, sendOnCanceled);
CronetBidirectionalStreamJni.get().destroy(
mNativeStream, CronetBidirectionalStream.this, sendOnCanceled);
mRequestContext.onRequestDestroyed();
mNativeStream = 0;
if (mOnDestroyedCallbackForTesting != null) {
......@@ -813,27 +821,30 @@ public class CronetBidirectionalStream extends ExperimentalBidirectionalStream {
});
}
@NativeMethods
interface Natives {
// Native methods are implemented in cronet_bidirectional_stream_adapter.cc.
private native long nativeCreateBidirectionalStream(long urlRequestContextAdapter,
boolean sendRequestHeadersAutomatically, boolean enableMetricsCollection,
boolean trafficStatsTagSet, int trafficStatsTag, boolean trafficStatsUidSet,
int trafficStatsUid);
long createBidirectionalStream(CronetBidirectionalStream caller,
long urlRequestContextAdapter, boolean sendRequestHeadersAutomatically,
boolean enableMetricsCollection, boolean trafficStatsTagSet, int trafficStatsTag,
boolean trafficStatsUidSet, int trafficStatsUid);
@NativeClassQualifiedName("CronetBidirectionalStreamAdapter")
private native int nativeStart(long nativePtr, String url, int priority, String method,
String[] headers, boolean endOfStream);
int start(long nativePtr, CronetBidirectionalStream caller, String url, int priority,
String method, String[] headers, boolean endOfStream);
@NativeClassQualifiedName("CronetBidirectionalStreamAdapter")
private native void nativeSendRequestHeaders(long nativePtr);
void sendRequestHeaders(long nativePtr, CronetBidirectionalStream caller);
@NativeClassQualifiedName("CronetBidirectionalStreamAdapter")
private native boolean nativeReadData(
long nativePtr, ByteBuffer byteBuffer, int position, int limit);
boolean readData(long nativePtr, CronetBidirectionalStream caller, ByteBuffer byteBuffer,
int position, int limit);
@NativeClassQualifiedName("CronetBidirectionalStreamAdapter")
private native boolean nativeWritevData(long nativePtr, ByteBuffer[] buffers, int[] positions,
int[] limits, boolean endOfStream);
boolean writevData(long nativePtr, CronetBidirectionalStream caller, ByteBuffer[] buffers,
int[] positions, int[] limits, boolean endOfStream);
@NativeClassQualifiedName("CronetBidirectionalStreamAdapter")
private native void nativeDestroy(long nativePtr, boolean sendOnCanceled);
void destroy(long nativePtr, CronetBidirectionalStream caller, boolean sendOnCanceled);
}
}
......@@ -16,6 +16,7 @@ import org.chromium.base.Log;
import org.chromium.base.VisibleForTesting;
import org.chromium.base.annotations.CalledByNative;
import org.chromium.base.annotations.JNINamespace;
import org.chromium.base.annotations.NativeMethods;
import org.chromium.net.NetworkChangeNotifier;
/**
......@@ -69,10 +70,10 @@ public class CronetLibraryLoader {
System.loadLibrary(LIBRARY_NAME);
}
String implVersion = ImplVersion.getCronetVersion();
if (!implVersion.equals(nativeGetCronetVersion())) {
if (!implVersion.equals(CronetLibraryLoaderJni.get().getCronetVersion())) {
throw new RuntimeException(String.format("Expected Cronet version number %s, "
+ "actual version number %s.",
implVersion, nativeGetCronetVersion()));
implVersion, CronetLibraryLoaderJni.get().getCronetVersion()));
}
Log.i(TAG, "Cronet version: %s, arch: %s", implVersion,
System.getProperty("os.arch"));
......@@ -117,7 +118,7 @@ public class CronetLibraryLoader {
// NetworkChangeNotifierAndroid is created, so as to avoid receiving
// the undesired initial network change observer notification, which
// will cause active requests to fail with ERR_NETWORK_CHANGED.
nativeCronetInitOnInitThread();
CronetLibraryLoaderJni.get().cronetInitOnInitThread();
sInitThreadInitDone = true;
}
......@@ -180,7 +181,11 @@ public class CronetLibraryLoader {
Process.setThreadPriority(priority);
}
@NativeMethods
interface Natives {
// Native methods are implemented in cronet_library_loader.cc.
private static native void nativeCronetInitOnInitThread();
private static native String nativeGetCronetVersion();
void cronetInitOnInitThread();
String getCronetVersion();
}
}
......@@ -13,6 +13,7 @@ import org.chromium.base.VisibleForTesting;
import org.chromium.base.annotations.CalledByNative;
import org.chromium.base.annotations.JNINamespace;
import org.chromium.base.annotations.NativeClassQualifiedName;
import org.chromium.base.annotations.NativeMethods;
import org.chromium.net.UploadDataProvider;
import org.chromium.net.UploadDataSink;
......@@ -240,7 +241,8 @@ public final class CronetUploadDataStream extends UploadDataSink {
if (mUploadDataStreamAdapter == 0) {
return;
}
nativeOnReadSucceeded(mUploadDataStreamAdapter, bytesRead, lastChunk);
CronetUploadDataStreamJni.get().onReadSucceeded(
mUploadDataStreamAdapter, CronetUploadDataStream.this, bytesRead, lastChunk);
}
}
......@@ -262,7 +264,8 @@ public final class CronetUploadDataStream extends UploadDataSink {
if (mUploadDataStreamAdapter == 0) {
return;
}
nativeOnRewindSucceeded(mUploadDataStreamAdapter);
CronetUploadDataStreamJni.get().onRewindSucceeded(
mUploadDataStreamAdapter, CronetUploadDataStream.this);
}
}
......@@ -302,7 +305,7 @@ public final class CronetUploadDataStream extends UploadDataSink {
if (mUploadDataStreamAdapter == 0) {
return;
}
nativeDestroy(mUploadDataStreamAdapter);
CronetUploadDataStreamJni.get().destroy(mUploadDataStreamAdapter);
mUploadDataStreamAdapter = 0;
if (mOnDestroyedCallbackForTesting != null) {
mOnDestroyedCallbackForTesting.run();
......@@ -367,7 +370,8 @@ public final class CronetUploadDataStream extends UploadDataSink {
*/
void attachNativeAdapterToRequest(final long requestAdapter) {
synchronized (mLock) {
mUploadDataStreamAdapter = nativeAttachUploadDataToRequest(requestAdapter, mLength);
mUploadDataStreamAdapter = CronetUploadDataStreamJni.get().attachUploadDataToRequest(
CronetUploadDataStream.this, requestAdapter, mLength);
}
}
......@@ -379,10 +383,12 @@ public final class CronetUploadDataStream extends UploadDataSink {
@VisibleForTesting
public long createUploadDataStreamForTesting() throws IOException {
synchronized (mLock) {
mUploadDataStreamAdapter = nativeCreateAdapterForTesting();
mUploadDataStreamAdapter = CronetUploadDataStreamJni.get().createAdapterForTesting(
CronetUploadDataStream.this);
mLength = mDataProvider.getLength();
mRemainingLength = mLength;
return nativeCreateUploadDataStreamForTesting(mLength, mUploadDataStreamAdapter);
return CronetUploadDataStreamJni.get().createUploadDataStreamForTesting(
CronetUploadDataStream.this, mLength, mUploadDataStreamAdapter);
}
}
......@@ -392,19 +398,22 @@ public final class CronetUploadDataStream extends UploadDataSink {
}
// Native methods are implemented in upload_data_stream_adapter.cc.
private native long nativeAttachUploadDataToRequest(long urlRequestAdapter, long length);
private native long nativeCreateAdapterForTesting();
private native long nativeCreateUploadDataStreamForTesting(long length, long adapter);
@NativeMethods
interface Natives {
long attachUploadDataToRequest(
CronetUploadDataStream caller, long urlRequestAdapter, long length);
long createAdapterForTesting(CronetUploadDataStream caller);
long createUploadDataStreamForTesting(
CronetUploadDataStream caller, long length, long adapter);
@NativeClassQualifiedName("CronetUploadDataStreamAdapter")
private native void nativeOnReadSucceeded(long nativePtr, int bytesRead, boolean finalChunk);
void onReadSucceeded(
long nativePtr, CronetUploadDataStream caller, int bytesRead, boolean finalChunk);
@NativeClassQualifiedName("CronetUploadDataStreamAdapter")
private native void nativeOnRewindSucceeded(long nativePtr);
void onRewindSucceeded(long nativePtr, CronetUploadDataStream caller);
@NativeClassQualifiedName("CronetUploadDataStreamAdapter")
private static native void nativeDestroy(long nativePtr);
void destroy(long nativePtr);
}
}
......@@ -10,6 +10,7 @@ import org.chromium.base.annotations.CalledByNative;
import org.chromium.base.annotations.JNIAdditionalImport;
import org.chromium.base.annotations.JNINamespace;
import org.chromium.base.annotations.NativeClassQualifiedName;
import org.chromium.base.annotations.NativeMethods;
import org.chromium.net.CallbackException;
import org.chromium.net.CronetException;
import org.chromium.net.InlineExecutionProhibitedException;
......@@ -205,8 +206,8 @@ public final class CronetUrlRequest extends UrlRequestBase {
checkNotStarted();
try {
mUrlRequestAdapter =
nativeCreateRequestAdapter(mRequestContext.getUrlRequestContextAdapter(),
mUrlRequestAdapter = CronetUrlRequestJni.get().createRequestAdapter(
CronetUrlRequest.this, mRequestContext.getUrlRequestContextAdapter(),
mInitialUrl, mPriority, mDisableCache, mDisableConnectionMigration,
mRequestContext.hasRequestFinishedListener()
|| mRequestFinishedListener != null,
......@@ -214,7 +215,8 @@ public final class CronetUrlRequest extends UrlRequestBase {
mTrafficStatsUid);
mRequestContext.onRequestStarted();
if (mInitialMethod != null) {
if (!nativeSetHttpMethod(mUrlRequestAdapter, mInitialMethod)) {
if (!CronetUrlRequestJni.get().setHttpMethod(
mUrlRequestAdapter, CronetUrlRequest.this, mInitialMethod)) {
throw new IllegalArgumentException("Invalid http method " + mInitialMethod);
}
}
......@@ -225,8 +227,8 @@ public final class CronetUrlRequest extends UrlRequestBase {
&& !header.getValue().isEmpty()) {
hasContentType = true;
}
if (!nativeAddRequestHeader(
mUrlRequestAdapter, header.getKey(), header.getValue())) {
if (!CronetUrlRequestJni.get().addRequestHeader(mUrlRequestAdapter,
CronetUrlRequest.this, header.getKey(), header.getValue())) {
throw new IllegalArgumentException(
"Invalid header " + header.getKey() + "=" + header.getValue());
}
......@@ -269,7 +271,7 @@ public final class CronetUrlRequest extends UrlRequestBase {
*/
@GuardedBy("mUrlRequestAdapterLock")
private void startInternalLocked() {
nativeStart(mUrlRequestAdapter);
CronetUrlRequestJni.get().start(mUrlRequestAdapter, CronetUrlRequest.this);
}
@Override
......@@ -284,7 +286,8 @@ public final class CronetUrlRequest extends UrlRequestBase {
return;
}
nativeFollowDeferredRedirect(mUrlRequestAdapter);
CronetUrlRequestJni.get().followDeferredRedirect(
mUrlRequestAdapter, CronetUrlRequest.this);
}
}
......@@ -302,7 +305,8 @@ public final class CronetUrlRequest extends UrlRequestBase {
return;
}
if (!nativeReadData(mUrlRequestAdapter, buffer, buffer.position(), buffer.limit())) {
if (!CronetUrlRequestJni.get().readData(mUrlRequestAdapter, CronetUrlRequest.this,
buffer, buffer.position(), buffer.limit())) {
// Still waiting on read. This is just to have consistent
// behavior with the other error cases.
mWaitingOnRead = true;
......@@ -339,7 +343,8 @@ public final class CronetUrlRequest extends UrlRequestBase {
new VersionSafeCallbacks.UrlRequestStatusListener(unsafeListener);
synchronized (mUrlRequestAdapterLock) {
if (mUrlRequestAdapter != 0) {
nativeGetStatus(mUrlRequestAdapter, listener);
CronetUrlRequestJni.get().getStatus(
mUrlRequestAdapter, CronetUrlRequest.this, listener);
return;
}
}
......@@ -446,7 +451,8 @@ public final class CronetUrlRequest extends UrlRequestBase {
}
mRequestContext.onRequestDestroyed();
// Posts a task to destroy the native adapter.
nativeDestroy(mUrlRequestAdapter, finishedReason == RequestFinishedInfo.CANCELED);
CronetUrlRequestJni.get().destroy(mUrlRequestAdapter, CronetUrlRequest.this,
finishedReason == RequestFinishedInfo.CANCELED);
mUrlRequestAdapter = 0;
}
......@@ -820,32 +826,35 @@ public final class CronetUrlRequest extends UrlRequestBase {
}
// Native methods are implemented in cronet_url_request_adapter.cc.
private native long nativeCreateRequestAdapter(long urlRequestContextAdapter, String url,
int priority, boolean disableCache, boolean disableConnectionMigration,
@NativeMethods
interface Natives {
long createRequestAdapter(CronetUrlRequest caller, long urlRequestContextAdapter,
String url, int priority, boolean disableCache, boolean disableConnectionMigration,
boolean enableMetrics, boolean trafficStatsTagSet, int trafficStatsTag,
boolean trafficStatsUidSet, int trafficStatsUid);
@NativeClassQualifiedName("CronetURLRequestAdapter")
private native boolean nativeSetHttpMethod(long nativePtr, String method);
boolean setHttpMethod(long nativePtr, CronetUrlRequest caller, String method);
@NativeClassQualifiedName("CronetURLRequestAdapter")
private native boolean nativeAddRequestHeader(long nativePtr, String name, String value);
boolean addRequestHeader(
long nativePtr, CronetUrlRequest caller, String name, String value);
@NativeClassQualifiedName("CronetURLRequestAdapter")
private native void nativeStart(long nativePtr);
void start(long nativePtr, CronetUrlRequest caller);
@NativeClassQualifiedName("CronetURLRequestAdapter")
private native void nativeFollowDeferredRedirect(long nativePtr);
void followDeferredRedirect(long nativePtr, CronetUrlRequest caller);
@NativeClassQualifiedName("CronetURLRequestAdapter")
private native boolean nativeReadData(
long nativePtr, ByteBuffer byteBuffer, int position, int capacity);
boolean readData(long nativePtr, CronetUrlRequest caller, ByteBuffer byteBuffer,
int position, int capacity);
@NativeClassQualifiedName("CronetURLRequestAdapter")
private native void nativeDestroy(long nativePtr, boolean sendOnCanceled);
void destroy(long nativePtr, CronetUrlRequest caller, boolean sendOnCanceled);
@NativeClassQualifiedName("CronetURLRequestAdapter")
private native void nativeGetStatus(
long nativePtr, VersionSafeCallbacks.UrlRequestStatusListener listener);
void getStatus(long nativePtr, CronetUrlRequest caller,
VersionSafeCallbacks.UrlRequestStatusListener listener);
}
}
......@@ -13,6 +13,7 @@ import org.chromium.base.VisibleForTesting;
import org.chromium.base.annotations.CalledByNative;
import org.chromium.base.annotations.JNINamespace;
import org.chromium.base.annotations.NativeClassQualifiedName;
import org.chromium.base.annotations.NativeMethods;
import org.chromium.base.annotations.UsedByReflection;
import org.chromium.net.BidirectionalStream;
import org.chromium.net.EffectiveConnectionType;
......@@ -151,7 +152,7 @@ public class CronetUrlRequestContext extends CronetEngineBase {
mNetworkQualityEstimatorEnabled = builder.networkQualityEstimatorEnabled();
CronetLibraryLoader.ensureInitialized(builder.getContext(), builder);
if (!IntegratedModeState.INTEGRATED_MODE_ENABLED) {
nativeSetMinLogLevel(getLoggingLevel());
CronetUrlRequestContextJni.get().setMinLogLevel(getLoggingLevel());
}
if (builder.httpCacheMode() == HttpCacheType.DISK) {
mInUseStoragePath = builder.storagePath();
......@@ -165,7 +166,8 @@ public class CronetUrlRequestContext extends CronetEngineBase {
}
synchronized (mLock) {
mUrlRequestContextAdapter =
nativeCreateRequestContextAdapter(createNativeUrlRequestContextConfig(builder));
CronetUrlRequestContextJni.get().createRequestContextAdapter(
createNativeUrlRequestContextConfig(builder));
if (mUrlRequestContextAdapter == 0) {
throw new NullPointerException("Context Adapter creation failed.");
}
......@@ -180,7 +182,8 @@ public class CronetUrlRequestContext extends CronetEngineBase {
// mUrlRequestContextAdapter is guaranteed to exist until
// initialization on init and network threads completes and
// initNetworkThread is called back on network thread.
nativeInitRequestContextOnInitThread(mUrlRequestContextAdapter);
CronetUrlRequestContextJni.get().initRequestContextOnInitThread(
mUrlRequestContextAdapter, CronetUrlRequestContext.this);
}
}
});
......@@ -188,8 +191,9 @@ public class CronetUrlRequestContext extends CronetEngineBase {
@VisibleForTesting
public static long createNativeUrlRequestContextConfig(CronetEngineBuilderImpl builder) {
final long urlRequestContextConfig = nativeCreateRequestContextConfig(
builder.getUserAgent(), builder.storagePath(), builder.quicEnabled(),
final long urlRequestContextConfig =
CronetUrlRequestContextJni.get().createRequestContextConfig(builder.getUserAgent(),
builder.storagePath(), builder.quicEnabled(),
builder.getDefaultQuicUserAgentId(), builder.http2Enabled(),
builder.brotliEnabled(), builder.cacheDisabled(), builder.httpCacheMode(),
builder.httpCacheMaxSize(), builder.experimentalOptions(),
......@@ -197,12 +201,12 @@ public class CronetUrlRequestContext extends CronetEngineBase {
builder.publicKeyPinningBypassForLocalTrustAnchorsEnabled(),
builder.threadPriority(Process.THREAD_PRIORITY_BACKGROUND));
for (CronetEngineBuilderImpl.QuicHint quicHint : builder.quicHints()) {
nativeAddQuicHint(urlRequestContextConfig, quicHint.mHost, quicHint.mPort,
quicHint.mAlternatePort);
CronetUrlRequestContextJni.get().addQuicHint(urlRequestContextConfig, quicHint.mHost,
quicHint.mPort, quicHint.mAlternatePort);
}
for (CronetEngineBuilderImpl.Pkp pkp : builder.publicKeyPins()) {
nativeAddPkp(urlRequestContextConfig, pkp.mHost, pkp.mHashes, pkp.mIncludeSubdomains,
pkp.mExpirationDate.getTime());
CronetUrlRequestContextJni.get().addPkp(urlRequestContextConfig, pkp.mHost, pkp.mHashes,
pkp.mIncludeSubdomains, pkp.mExpirationDate.getTime());
}
return urlRequestContextConfig;
}
......@@ -279,7 +283,8 @@ public class CronetUrlRequestContext extends CronetEngineBase {
if (!haveRequestContextAdapter()) {
return;
}
nativeDestroy(mUrlRequestContextAdapter);
CronetUrlRequestContextJni.get().destroy(
mUrlRequestContextAdapter, CronetUrlRequestContext.this);
mUrlRequestContextAdapter = 0;
}
}
......@@ -288,7 +293,8 @@ public class CronetUrlRequestContext extends CronetEngineBase {
public void startNetLogToFile(String fileName, boolean logAll) {
synchronized (mLock) {
checkHaveAdapter();
if (!nativeStartNetLogToFile(mUrlRequestContextAdapter, fileName, logAll)) {
if (!CronetUrlRequestContextJni.get().startNetLogToFile(mUrlRequestContextAdapter,
CronetUrlRequestContext.this, fileName, logAll)) {
throw new RuntimeException("Unable to start NetLog");
}
mIsLogging = true;
......@@ -299,7 +305,8 @@ public class CronetUrlRequestContext extends CronetEngineBase {
public void startNetLogToDisk(String dirPath, boolean logAll, int maxSize) {
synchronized (mLock) {
checkHaveAdapter();
nativeStartNetLogToDisk(mUrlRequestContextAdapter, dirPath, logAll, maxSize);
CronetUrlRequestContextJni.get().startNetLogToDisk(mUrlRequestContextAdapter,
CronetUrlRequestContext.this, dirPath, logAll, maxSize);
mIsLogging = true;
}
}
......@@ -312,7 +319,8 @@ public class CronetUrlRequestContext extends CronetEngineBase {
}
checkHaveAdapter();
mStopNetLogCompleted = new ConditionVariable();
nativeStopNetLog(mUrlRequestContextAdapter);
CronetUrlRequestContextJni.get().stopNetLog(
mUrlRequestContextAdapter, CronetUrlRequestContext.this);
mIsLogging = false;
}
mStopNetLogCompleted.block();
......@@ -327,7 +335,7 @@ public class CronetUrlRequestContext extends CronetEngineBase {
// is loaded by class constructor.
@Override
public byte[] getGlobalMetricsDeltas() {
return nativeGetHistogramDeltas();
return CronetUrlRequestContextJni.get().getHistogramDeltas();
}
@Override
......@@ -385,8 +393,9 @@ public class CronetUrlRequestContext extends CronetEngineBase {
}
synchronized (mLock) {
checkHaveAdapter();
nativeConfigureNetworkQualityEstimatorForTesting(mUrlRequestContextAdapter,
useLocalHostRequests, useSmallerResponses, disableOfflineCheck);
CronetUrlRequestContextJni.get().configureNetworkQualityEstimatorForTesting(
mUrlRequestContextAdapter, CronetUrlRequestContext.this, useLocalHostRequests,
useSmallerResponses, disableOfflineCheck);
}
}
......@@ -399,7 +408,8 @@ public class CronetUrlRequestContext extends CronetEngineBase {
if (mRttListenerList.isEmpty()) {
synchronized (mLock) {
checkHaveAdapter();
nativeProvideRTTObservations(mUrlRequestContextAdapter, true);
CronetUrlRequestContextJni.get().provideRTTObservations(
mUrlRequestContextAdapter, CronetUrlRequestContext.this, true);
}
}
mRttListenerList.addObserver(
......@@ -418,7 +428,8 @@ public class CronetUrlRequestContext extends CronetEngineBase {
if (mRttListenerList.isEmpty()) {
synchronized (mLock) {
checkHaveAdapter();
nativeProvideRTTObservations(mUrlRequestContextAdapter, false);
CronetUrlRequestContextJni.get().provideRTTObservations(
mUrlRequestContextAdapter, CronetUrlRequestContext.this, false);
}
}
}
......@@ -434,7 +445,8 @@ public class CronetUrlRequestContext extends CronetEngineBase {
if (mThroughputListenerList.isEmpty()) {
synchronized (mLock) {
checkHaveAdapter();
nativeProvideThroughputObservations(mUrlRequestContextAdapter, true);
CronetUrlRequestContextJni.get().provideThroughputObservations(
mUrlRequestContextAdapter, CronetUrlRequestContext.this, true);
}
}
mThroughputListenerList.addObserver(
......@@ -454,7 +466,8 @@ public class CronetUrlRequestContext extends CronetEngineBase {
if (mThroughputListenerList.isEmpty()) {
synchronized (mLock) {
checkHaveAdapter();
nativeProvideThroughputObservations(mUrlRequestContextAdapter, false);
CronetUrlRequestContextJni.get().provideThroughputObservations(
mUrlRequestContextAdapter, CronetUrlRequestContext.this, false);
}
}
}
......@@ -671,53 +684,53 @@ public class CronetUrlRequestContext extends CronetEngineBase {
}
}
public boolean isNetworkThread(Thread thread) {
return thread == mNetworkThread;
}
// Native methods are implemented in cronet_url_request_context_adapter.cc.
private static native long nativeCreateRequestContextConfig(String userAgent,
String storagePath, boolean quicEnabled, String quicUserAgentId, boolean http2Enabled,
boolean brotliEnabled, boolean disableCache, int httpCacheMode, long httpCacheMaxSize,
@NativeMethods
interface Natives {
long createRequestContextConfig(String userAgent, String storagePath, boolean quicEnabled,
String quicUserAgentId, boolean http2Enabled, boolean brotliEnabled,
boolean disableCache, int httpCacheMode, long httpCacheMaxSize,
String experimentalOptions, long mockCertVerifier,
boolean enableNetworkQualityEstimator,
boolean bypassPublicKeyPinningForLocalTrustAnchors, int networkThreadPriority);
private static native void nativeAddQuicHint(
long urlRequestContextConfig, String host, int port, int alternatePort);
private static native void nativeAddPkp(long urlRequestContextConfig, String host,
byte[][] hashes, boolean includeSubdomains, long expirationTime);
private static native long nativeCreateRequestContextAdapter(long urlRequestContextConfig);
private static native int nativeSetMinLogLevel(int loggingLevel);
private static native byte[] nativeGetHistogramDeltas();
void addQuicHint(long urlRequestContextConfig, String host, int port, int alternatePort);
void addPkp(long urlRequestContextConfig, String host, byte[][] hashes,
boolean includeSubdomains, long expirationTime);
long createRequestContextAdapter(long urlRequestContextConfig);
int setMinLogLevel(int loggingLevel);
byte[] getHistogramDeltas();
@NativeClassQualifiedName("CronetURLRequestContextAdapter")
private native void nativeDestroy(long nativePtr);
void destroy(long nativePtr, CronetUrlRequestContext caller);
@NativeClassQualifiedName("CronetURLRequestContextAdapter")
private native boolean nativeStartNetLogToFile(long nativePtr, String fileName, boolean logAll);
boolean startNetLogToFile(
long nativePtr, CronetUrlRequestContext caller, String fileName, boolean logAll);
@NativeClassQualifiedName("CronetURLRequestContextAdapter")
private native void nativeStartNetLogToDisk(
long nativePtr, String dirPath, boolean logAll, int maxSize);
void startNetLogToDisk(long nativePtr, CronetUrlRequestContext caller, String dirPath,
boolean logAll, int maxSize);
@NativeClassQualifiedName("CronetURLRequestContextAdapter")
private native void nativeStopNetLog(long nativePtr);
void stopNetLog(long nativePtr, CronetUrlRequestContext caller);
@NativeClassQualifiedName("CronetURLRequestContextAdapter")
private native void nativeInitRequestContextOnInitThread(long nativePtr);
void initRequestContextOnInitThread(long nativePtr, CronetUrlRequestContext caller);
@NativeClassQualifiedName("CronetURLRequestContextAdapter")
private native void nativeConfigureNetworkQualityEstimatorForTesting(long nativePtr,
boolean useLocalHostRequests, boolean useSmallerResponses, boolean disableOfflineCheck);
void configureNetworkQualityEstimatorForTesting(long nativePtr,
CronetUrlRequestContext caller, boolean useLocalHostRequests,
boolean useSmallerResponses, boolean disableOfflineCheck);
@NativeClassQualifiedName("CronetURLRequestContextAdapter")
private native void nativeProvideRTTObservations(long nativePtr, boolean should);
void provideRTTObservations(long nativePtr, CronetUrlRequestContext caller, boolean should);
@NativeClassQualifiedName("CronetURLRequestContextAdapter")
private native void nativeProvideThroughputObservations(long nativePtr, boolean should);
public boolean isNetworkThread(Thread thread) {
return thread == mNetworkThread;
void provideThroughputObservations(
long nativePtr, CronetUrlRequestContext caller, boolean should);
}
}
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment