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") { ...@@ -422,10 +422,12 @@ android_library("cronet_impl_native_base_java") {
deps = [ deps = [
":cronet_api_java", ":cronet_api_java",
":cronet_impl_common_base_java", ":cronet_impl_common_base_java",
"//base:jni_java",
"//third_party/android_deps:androidx_annotation_annotation_java", "//third_party/android_deps:androidx_annotation_annotation_java",
"//third_party/jsr-305:jsr_305_javalib", "//third_party/jsr-305:jsr_305_javalib",
] ]
deps += cronet_impl_native_java_deps_to_package 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 srcjar_deps = cronet_impl_native_java_srcjar_deps
} }
......
...@@ -11,6 +11,7 @@ import org.chromium.base.VisibleForTesting; ...@@ -11,6 +11,7 @@ import org.chromium.base.VisibleForTesting;
import org.chromium.base.annotations.CalledByNative; import org.chromium.base.annotations.CalledByNative;
import org.chromium.base.annotations.JNINamespace; import org.chromium.base.annotations.JNINamespace;
import org.chromium.base.annotations.NativeClassQualifiedName; import org.chromium.base.annotations.NativeClassQualifiedName;
import org.chromium.base.annotations.NativeMethods;
import org.chromium.net.BidirectionalStream; import org.chromium.net.BidirectionalStream;
import org.chromium.net.CallbackException; import org.chromium.net.CallbackException;
import org.chromium.net.CronetException; import org.chromium.net.CronetException;
...@@ -76,8 +77,8 @@ public class CronetBidirectionalStream extends ExperimentalBidirectionalStream { ...@@ -76,8 +77,8 @@ public class CronetBidirectionalStream extends ExperimentalBidirectionalStream {
int ERROR = 6; int ERROR = 6;
/* Reading and writing are done, and the stream is closed successfully. */ /* Reading and writing are done, and the stream is closed successfully. */
int SUCCESS = 7; int SUCCESS = 7;
/* Waiting for {@code nativeSendRequestHeaders()} or {@code nativeWritevData()} to be /* Waiting for {@code CronetBidirectionalStreamJni.get().sendRequestHeaders()} or {@code
called. */ CronetBidirectionalStreamJni.get().writevData()} to be called. */
int WAITING_FOR_FLUSH = 8; int WAITING_FOR_FLUSH = 8;
/* Writing to the remote, {@code onWritevCompleted()} callback will be called when done. */ /* Writing to the remote, {@code onWritevCompleted()} callback will be called when done. */
int WRITING = 9; int WRITING = 9;
...@@ -111,7 +112,7 @@ public class CronetBidirectionalStream extends ExperimentalBidirectionalStream { ...@@ -111,7 +112,7 @@ public class CronetBidirectionalStream extends ExperimentalBidirectionalStream {
@GuardedBy("mNativeStreamLock") @GuardedBy("mNativeStreamLock")
// Flush data queue that should be pushed to the native stack when the previous // Flush data queue that should be pushed to the native stack when the previous
// nativeWritevData completes. // CronetBidirectionalStreamJni.get().writevData completes.
private LinkedList<ByteBuffer> mFlushData; private LinkedList<ByteBuffer> mFlushData;
@GuardedBy("mNativeStreamLock") @GuardedBy("mNativeStreamLock")
...@@ -265,14 +266,16 @@ public class CronetBidirectionalStream extends ExperimentalBidirectionalStream { ...@@ -265,14 +266,16 @@ public class CronetBidirectionalStream extends ExperimentalBidirectionalStream {
throw new IllegalStateException("Stream is already started."); throw new IllegalStateException("Stream is already started.");
} }
try { try {
mNativeStream = nativeCreateBidirectionalStream( mNativeStream = CronetBidirectionalStreamJni.get().createBidirectionalStream(
CronetBidirectionalStream.this,
mRequestContext.getUrlRequestContextAdapter(), mRequestContext.getUrlRequestContextAdapter(),
!mDelayRequestHeadersUntilFirstFlush, !mDelayRequestHeadersUntilFirstFlush,
mRequestContext.hasRequestFinishedListener(), mTrafficStatsTagSet, mRequestContext.hasRequestFinishedListener(), mTrafficStatsTagSet,
mTrafficStatsTag, mTrafficStatsUidSet, mTrafficStatsUid); mTrafficStatsTag, mTrafficStatsUidSet, mTrafficStatsUid);
mRequestContext.onRequestStarted(); mRequestContext.onRequestStarted();
// Non-zero startResult means an argument error. // 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)); mInitialMethod, mRequestHeaders, !doesMethodAllowWriteData(mInitialMethod));
if (startResult == -1) { if (startResult == -1) {
throw new IllegalArgumentException("Invalid http method " + mInitialMethod); throw new IllegalArgumentException("Invalid http method " + mInitialMethod);
...@@ -307,7 +310,9 @@ public class CronetBidirectionalStream extends ExperimentalBidirectionalStream { ...@@ -307,7 +310,9 @@ public class CronetBidirectionalStream extends ExperimentalBidirectionalStream {
mOnReadCompletedTask = new OnReadCompletedRunnable(); mOnReadCompletedTask = new OnReadCompletedRunnable();
} }
mReadState = State.READING; 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 // Still waiting on read. This is just to have consistent
// behavior with the other error cases. // behavior with the other error cases.
mReadState = State.WAITING_FOR_READ; mReadState = State.WAITING_FOR_READ;
...@@ -348,7 +353,8 @@ public class CronetBidirectionalStream extends ExperimentalBidirectionalStream { ...@@ -348,7 +353,8 @@ public class CronetBidirectionalStream extends ExperimentalBidirectionalStream {
// request headers need to be flushed. // request headers need to be flushed.
if (!mRequestHeadersSent) { if (!mRequestHeadersSent) {
mRequestHeadersSent = true; mRequestHeadersSent = true;
nativeSendRequestHeaders(mNativeStream); CronetBidirectionalStreamJni.get().sendRequestHeaders(
mNativeStream, CronetBidirectionalStream.this);
if (!doesMethodAllowWriteData(mInitialMethod)) { if (!doesMethodAllowWriteData(mInitialMethod)) {
mWriteState = State.WRITING_DONE; mWriteState = State.WRITING_DONE;
} }
...@@ -393,7 +399,8 @@ public class CronetBidirectionalStream extends ExperimentalBidirectionalStream { ...@@ -393,7 +399,8 @@ public class CronetBidirectionalStream extends ExperimentalBidirectionalStream {
assert buffers.length >= 1; assert buffers.length >= 1;
mWriteState = State.WRITING; mWriteState = State.WRITING;
mRequestHeadersSent = true; mRequestHeadersSent = true;
if (!nativeWritevData(mNativeStream, buffers, positions, limits, if (!CronetBidirectionalStreamJni.get().writevData(mNativeStream,
CronetBidirectionalStream.this, buffers, positions, limits,
mEndOfStreamWritten && mPendingData.isEmpty())) { mEndOfStreamWritten && mPendingData.isEmpty())) {
// Still waiting on flush. This is just to have consistent // Still waiting on flush. This is just to have consistent
// behavior with the other error cases. // behavior with the other error cases.
...@@ -760,7 +767,8 @@ public class CronetBidirectionalStream extends ExperimentalBidirectionalStream { ...@@ -760,7 +767,8 @@ public class CronetBidirectionalStream extends ExperimentalBidirectionalStream {
if (mNativeStream == 0) { if (mNativeStream == 0) {
return; return;
} }
nativeDestroy(mNativeStream, sendOnCanceled); CronetBidirectionalStreamJni.get().destroy(
mNativeStream, CronetBidirectionalStream.this, sendOnCanceled);
mRequestContext.onRequestDestroyed(); mRequestContext.onRequestDestroyed();
mNativeStream = 0; mNativeStream = 0;
if (mOnDestroyedCallbackForTesting != null) { if (mOnDestroyedCallbackForTesting != null) {
...@@ -813,27 +821,30 @@ public class CronetBidirectionalStream extends ExperimentalBidirectionalStream { ...@@ -813,27 +821,30 @@ public class CronetBidirectionalStream extends ExperimentalBidirectionalStream {
}); });
} }
@NativeMethods
interface Natives {
// Native methods are implemented in cronet_bidirectional_stream_adapter.cc. // Native methods are implemented in cronet_bidirectional_stream_adapter.cc.
private native long nativeCreateBidirectionalStream(long urlRequestContextAdapter, long createBidirectionalStream(CronetBidirectionalStream caller,
boolean sendRequestHeadersAutomatically, boolean enableMetricsCollection, long urlRequestContextAdapter, boolean sendRequestHeadersAutomatically,
boolean trafficStatsTagSet, int trafficStatsTag, boolean trafficStatsUidSet, boolean enableMetricsCollection, boolean trafficStatsTagSet, int trafficStatsTag,
int trafficStatsUid); boolean trafficStatsUidSet, int trafficStatsUid);
@NativeClassQualifiedName("CronetBidirectionalStreamAdapter") @NativeClassQualifiedName("CronetBidirectionalStreamAdapter")
private native int nativeStart(long nativePtr, String url, int priority, String method, int start(long nativePtr, CronetBidirectionalStream caller, String url, int priority,
String[] headers, boolean endOfStream); String method, String[] headers, boolean endOfStream);
@NativeClassQualifiedName("CronetBidirectionalStreamAdapter") @NativeClassQualifiedName("CronetBidirectionalStreamAdapter")
private native void nativeSendRequestHeaders(long nativePtr); void sendRequestHeaders(long nativePtr, CronetBidirectionalStream caller);
@NativeClassQualifiedName("CronetBidirectionalStreamAdapter") @NativeClassQualifiedName("CronetBidirectionalStreamAdapter")
private native boolean nativeReadData( boolean readData(long nativePtr, CronetBidirectionalStream caller, ByteBuffer byteBuffer,
long nativePtr, ByteBuffer byteBuffer, int position, int limit); int position, int limit);
@NativeClassQualifiedName("CronetBidirectionalStreamAdapter") @NativeClassQualifiedName("CronetBidirectionalStreamAdapter")
private native boolean nativeWritevData(long nativePtr, ByteBuffer[] buffers, int[] positions, boolean writevData(long nativePtr, CronetBidirectionalStream caller, ByteBuffer[] buffers,
int[] limits, boolean endOfStream); int[] positions, int[] limits, boolean endOfStream);
@NativeClassQualifiedName("CronetBidirectionalStreamAdapter") @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; ...@@ -16,6 +16,7 @@ import org.chromium.base.Log;
import org.chromium.base.VisibleForTesting; import org.chromium.base.VisibleForTesting;
import org.chromium.base.annotations.CalledByNative; import org.chromium.base.annotations.CalledByNative;
import org.chromium.base.annotations.JNINamespace; import org.chromium.base.annotations.JNINamespace;
import org.chromium.base.annotations.NativeMethods;
import org.chromium.net.NetworkChangeNotifier; import org.chromium.net.NetworkChangeNotifier;
/** /**
...@@ -69,10 +70,10 @@ public class CronetLibraryLoader { ...@@ -69,10 +70,10 @@ public class CronetLibraryLoader {
System.loadLibrary(LIBRARY_NAME); System.loadLibrary(LIBRARY_NAME);
} }
String implVersion = ImplVersion.getCronetVersion(); String implVersion = ImplVersion.getCronetVersion();
if (!implVersion.equals(nativeGetCronetVersion())) { if (!implVersion.equals(CronetLibraryLoaderJni.get().getCronetVersion())) {
throw new RuntimeException(String.format("Expected Cronet version number %s, " throw new RuntimeException(String.format("Expected Cronet version number %s, "
+ "actual version number %s.", + "actual version number %s.",
implVersion, nativeGetCronetVersion())); implVersion, CronetLibraryLoaderJni.get().getCronetVersion()));
} }
Log.i(TAG, "Cronet version: %s, arch: %s", implVersion, Log.i(TAG, "Cronet version: %s, arch: %s", implVersion,
System.getProperty("os.arch")); System.getProperty("os.arch"));
...@@ -117,7 +118,7 @@ public class CronetLibraryLoader { ...@@ -117,7 +118,7 @@ public class CronetLibraryLoader {
// NetworkChangeNotifierAndroid is created, so as to avoid receiving // NetworkChangeNotifierAndroid is created, so as to avoid receiving
// the undesired initial network change observer notification, which // the undesired initial network change observer notification, which
// will cause active requests to fail with ERR_NETWORK_CHANGED. // will cause active requests to fail with ERR_NETWORK_CHANGED.
nativeCronetInitOnInitThread(); CronetLibraryLoaderJni.get().cronetInitOnInitThread();
sInitThreadInitDone = true; sInitThreadInitDone = true;
} }
...@@ -180,7 +181,11 @@ public class CronetLibraryLoader { ...@@ -180,7 +181,11 @@ public class CronetLibraryLoader {
Process.setThreadPriority(priority); Process.setThreadPriority(priority);
} }
@NativeMethods
interface Natives {
// Native methods are implemented in cronet_library_loader.cc. // Native methods are implemented in cronet_library_loader.cc.
private static native void nativeCronetInitOnInitThread(); void cronetInitOnInitThread();
private static native String nativeGetCronetVersion();
String getCronetVersion();
}
} }
...@@ -13,6 +13,7 @@ import org.chromium.base.VisibleForTesting; ...@@ -13,6 +13,7 @@ import org.chromium.base.VisibleForTesting;
import org.chromium.base.annotations.CalledByNative; import org.chromium.base.annotations.CalledByNative;
import org.chromium.base.annotations.JNINamespace; import org.chromium.base.annotations.JNINamespace;
import org.chromium.base.annotations.NativeClassQualifiedName; import org.chromium.base.annotations.NativeClassQualifiedName;
import org.chromium.base.annotations.NativeMethods;
import org.chromium.net.UploadDataProvider; import org.chromium.net.UploadDataProvider;
import org.chromium.net.UploadDataSink; import org.chromium.net.UploadDataSink;
...@@ -240,7 +241,8 @@ public final class CronetUploadDataStream extends UploadDataSink { ...@@ -240,7 +241,8 @@ public final class CronetUploadDataStream extends UploadDataSink {
if (mUploadDataStreamAdapter == 0) { if (mUploadDataStreamAdapter == 0) {
return; return;
} }
nativeOnReadSucceeded(mUploadDataStreamAdapter, bytesRead, lastChunk); CronetUploadDataStreamJni.get().onReadSucceeded(
mUploadDataStreamAdapter, CronetUploadDataStream.this, bytesRead, lastChunk);
} }
} }
...@@ -262,7 +264,8 @@ public final class CronetUploadDataStream extends UploadDataSink { ...@@ -262,7 +264,8 @@ public final class CronetUploadDataStream extends UploadDataSink {
if (mUploadDataStreamAdapter == 0) { if (mUploadDataStreamAdapter == 0) {
return; return;
} }
nativeOnRewindSucceeded(mUploadDataStreamAdapter); CronetUploadDataStreamJni.get().onRewindSucceeded(
mUploadDataStreamAdapter, CronetUploadDataStream.this);
} }
} }
...@@ -302,7 +305,7 @@ public final class CronetUploadDataStream extends UploadDataSink { ...@@ -302,7 +305,7 @@ public final class CronetUploadDataStream extends UploadDataSink {
if (mUploadDataStreamAdapter == 0) { if (mUploadDataStreamAdapter == 0) {
return; return;
} }
nativeDestroy(mUploadDataStreamAdapter); CronetUploadDataStreamJni.get().destroy(mUploadDataStreamAdapter);
mUploadDataStreamAdapter = 0; mUploadDataStreamAdapter = 0;
if (mOnDestroyedCallbackForTesting != null) { if (mOnDestroyedCallbackForTesting != null) {
mOnDestroyedCallbackForTesting.run(); mOnDestroyedCallbackForTesting.run();
...@@ -367,7 +370,8 @@ public final class CronetUploadDataStream extends UploadDataSink { ...@@ -367,7 +370,8 @@ public final class CronetUploadDataStream extends UploadDataSink {
*/ */
void attachNativeAdapterToRequest(final long requestAdapter) { void attachNativeAdapterToRequest(final long requestAdapter) {
synchronized (mLock) { synchronized (mLock) {
mUploadDataStreamAdapter = nativeAttachUploadDataToRequest(requestAdapter, mLength); mUploadDataStreamAdapter = CronetUploadDataStreamJni.get().attachUploadDataToRequest(
CronetUploadDataStream.this, requestAdapter, mLength);
} }
} }
...@@ -379,10 +383,12 @@ public final class CronetUploadDataStream extends UploadDataSink { ...@@ -379,10 +383,12 @@ public final class CronetUploadDataStream extends UploadDataSink {
@VisibleForTesting @VisibleForTesting
public long createUploadDataStreamForTesting() throws IOException { public long createUploadDataStreamForTesting() throws IOException {
synchronized (mLock) { synchronized (mLock) {
mUploadDataStreamAdapter = nativeCreateAdapterForTesting(); mUploadDataStreamAdapter = CronetUploadDataStreamJni.get().createAdapterForTesting(
CronetUploadDataStream.this);
mLength = mDataProvider.getLength(); mLength = mDataProvider.getLength();
mRemainingLength = mLength; mRemainingLength = mLength;
return nativeCreateUploadDataStreamForTesting(mLength, mUploadDataStreamAdapter); return CronetUploadDataStreamJni.get().createUploadDataStreamForTesting(
CronetUploadDataStream.this, mLength, mUploadDataStreamAdapter);
} }
} }
...@@ -392,19 +398,22 @@ public final class CronetUploadDataStream extends UploadDataSink { ...@@ -392,19 +398,22 @@ public final class CronetUploadDataStream extends UploadDataSink {
} }
// Native methods are implemented in upload_data_stream_adapter.cc. // Native methods are implemented in upload_data_stream_adapter.cc.
@NativeMethods
private native long nativeAttachUploadDataToRequest(long urlRequestAdapter, long length); interface Natives {
long attachUploadDataToRequest(
private native long nativeCreateAdapterForTesting(); CronetUploadDataStream caller, long urlRequestAdapter, long length);
private native long nativeCreateUploadDataStreamForTesting(long length, long adapter); long createAdapterForTesting(CronetUploadDataStream caller);
long createUploadDataStreamForTesting(
CronetUploadDataStream caller, long length, long adapter);
@NativeClassQualifiedName("CronetUploadDataStreamAdapter") @NativeClassQualifiedName("CronetUploadDataStreamAdapter")
private native void nativeOnReadSucceeded(long nativePtr, int bytesRead, boolean finalChunk); void onReadSucceeded(
long nativePtr, CronetUploadDataStream caller, int bytesRead, boolean finalChunk);
@NativeClassQualifiedName("CronetUploadDataStreamAdapter") @NativeClassQualifiedName("CronetUploadDataStreamAdapter")
private native void nativeOnRewindSucceeded(long nativePtr); void onRewindSucceeded(long nativePtr, CronetUploadDataStream caller);
@NativeClassQualifiedName("CronetUploadDataStreamAdapter") @NativeClassQualifiedName("CronetUploadDataStreamAdapter")
private static native void nativeDestroy(long nativePtr); void destroy(long nativePtr);
}
} }
...@@ -10,6 +10,7 @@ import org.chromium.base.annotations.CalledByNative; ...@@ -10,6 +10,7 @@ import org.chromium.base.annotations.CalledByNative;
import org.chromium.base.annotations.JNIAdditionalImport; import org.chromium.base.annotations.JNIAdditionalImport;
import org.chromium.base.annotations.JNINamespace; import org.chromium.base.annotations.JNINamespace;
import org.chromium.base.annotations.NativeClassQualifiedName; import org.chromium.base.annotations.NativeClassQualifiedName;
import org.chromium.base.annotations.NativeMethods;
import org.chromium.net.CallbackException; import org.chromium.net.CallbackException;
import org.chromium.net.CronetException; import org.chromium.net.CronetException;
import org.chromium.net.InlineExecutionProhibitedException; import org.chromium.net.InlineExecutionProhibitedException;
...@@ -205,8 +206,8 @@ public final class CronetUrlRequest extends UrlRequestBase { ...@@ -205,8 +206,8 @@ public final class CronetUrlRequest extends UrlRequestBase {
checkNotStarted(); checkNotStarted();
try { try {
mUrlRequestAdapter = mUrlRequestAdapter = CronetUrlRequestJni.get().createRequestAdapter(
nativeCreateRequestAdapter(mRequestContext.getUrlRequestContextAdapter(), CronetUrlRequest.this, mRequestContext.getUrlRequestContextAdapter(),
mInitialUrl, mPriority, mDisableCache, mDisableConnectionMigration, mInitialUrl, mPriority, mDisableCache, mDisableConnectionMigration,
mRequestContext.hasRequestFinishedListener() mRequestContext.hasRequestFinishedListener()
|| mRequestFinishedListener != null, || mRequestFinishedListener != null,
...@@ -214,7 +215,8 @@ public final class CronetUrlRequest extends UrlRequestBase { ...@@ -214,7 +215,8 @@ public final class CronetUrlRequest extends UrlRequestBase {
mTrafficStatsUid); mTrafficStatsUid);
mRequestContext.onRequestStarted(); mRequestContext.onRequestStarted();
if (mInitialMethod != null) { if (mInitialMethod != null) {
if (!nativeSetHttpMethod(mUrlRequestAdapter, mInitialMethod)) { if (!CronetUrlRequestJni.get().setHttpMethod(
mUrlRequestAdapter, CronetUrlRequest.this, mInitialMethod)) {
throw new IllegalArgumentException("Invalid http method " + mInitialMethod); throw new IllegalArgumentException("Invalid http method " + mInitialMethod);
} }
} }
...@@ -225,8 +227,8 @@ public final class CronetUrlRequest extends UrlRequestBase { ...@@ -225,8 +227,8 @@ public final class CronetUrlRequest extends UrlRequestBase {
&& !header.getValue().isEmpty()) { && !header.getValue().isEmpty()) {
hasContentType = true; hasContentType = true;
} }
if (!nativeAddRequestHeader( if (!CronetUrlRequestJni.get().addRequestHeader(mUrlRequestAdapter,
mUrlRequestAdapter, header.getKey(), header.getValue())) { CronetUrlRequest.this, header.getKey(), header.getValue())) {
throw new IllegalArgumentException( throw new IllegalArgumentException(
"Invalid header " + header.getKey() + "=" + header.getValue()); "Invalid header " + header.getKey() + "=" + header.getValue());
} }
...@@ -269,7 +271,7 @@ public final class CronetUrlRequest extends UrlRequestBase { ...@@ -269,7 +271,7 @@ public final class CronetUrlRequest extends UrlRequestBase {
*/ */
@GuardedBy("mUrlRequestAdapterLock") @GuardedBy("mUrlRequestAdapterLock")
private void startInternalLocked() { private void startInternalLocked() {
nativeStart(mUrlRequestAdapter); CronetUrlRequestJni.get().start(mUrlRequestAdapter, CronetUrlRequest.this);
} }
@Override @Override
...@@ -284,7 +286,8 @@ public final class CronetUrlRequest extends UrlRequestBase { ...@@ -284,7 +286,8 @@ public final class CronetUrlRequest extends UrlRequestBase {
return; return;
} }
nativeFollowDeferredRedirect(mUrlRequestAdapter); CronetUrlRequestJni.get().followDeferredRedirect(
mUrlRequestAdapter, CronetUrlRequest.this);
} }
} }
...@@ -302,7 +305,8 @@ public final class CronetUrlRequest extends UrlRequestBase { ...@@ -302,7 +305,8 @@ public final class CronetUrlRequest extends UrlRequestBase {
return; 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 // Still waiting on read. This is just to have consistent
// behavior with the other error cases. // behavior with the other error cases.
mWaitingOnRead = true; mWaitingOnRead = true;
...@@ -339,7 +343,8 @@ public final class CronetUrlRequest extends UrlRequestBase { ...@@ -339,7 +343,8 @@ public final class CronetUrlRequest extends UrlRequestBase {
new VersionSafeCallbacks.UrlRequestStatusListener(unsafeListener); new VersionSafeCallbacks.UrlRequestStatusListener(unsafeListener);
synchronized (mUrlRequestAdapterLock) { synchronized (mUrlRequestAdapterLock) {
if (mUrlRequestAdapter != 0) { if (mUrlRequestAdapter != 0) {
nativeGetStatus(mUrlRequestAdapter, listener); CronetUrlRequestJni.get().getStatus(
mUrlRequestAdapter, CronetUrlRequest.this, listener);
return; return;
} }
} }
...@@ -446,7 +451,8 @@ public final class CronetUrlRequest extends UrlRequestBase { ...@@ -446,7 +451,8 @@ public final class CronetUrlRequest extends UrlRequestBase {
} }
mRequestContext.onRequestDestroyed(); mRequestContext.onRequestDestroyed();
// Posts a task to destroy the native adapter. // Posts a task to destroy the native adapter.
nativeDestroy(mUrlRequestAdapter, finishedReason == RequestFinishedInfo.CANCELED); CronetUrlRequestJni.get().destroy(mUrlRequestAdapter, CronetUrlRequest.this,
finishedReason == RequestFinishedInfo.CANCELED);
mUrlRequestAdapter = 0; mUrlRequestAdapter = 0;
} }
...@@ -820,32 +826,35 @@ public final class CronetUrlRequest extends UrlRequestBase { ...@@ -820,32 +826,35 @@ public final class CronetUrlRequest extends UrlRequestBase {
} }
// Native methods are implemented in cronet_url_request_adapter.cc. // Native methods are implemented in cronet_url_request_adapter.cc.
@NativeMethods
private native long nativeCreateRequestAdapter(long urlRequestContextAdapter, String url, interface Natives {
int priority, boolean disableCache, boolean disableConnectionMigration, long createRequestAdapter(CronetUrlRequest caller, long urlRequestContextAdapter,
String url, int priority, boolean disableCache, boolean disableConnectionMigration,
boolean enableMetrics, boolean trafficStatsTagSet, int trafficStatsTag, boolean enableMetrics, boolean trafficStatsTagSet, int trafficStatsTag,
boolean trafficStatsUidSet, int trafficStatsUid); boolean trafficStatsUidSet, int trafficStatsUid);
@NativeClassQualifiedName("CronetURLRequestAdapter") @NativeClassQualifiedName("CronetURLRequestAdapter")
private native boolean nativeSetHttpMethod(long nativePtr, String method); boolean setHttpMethod(long nativePtr, CronetUrlRequest caller, String method);
@NativeClassQualifiedName("CronetURLRequestAdapter") @NativeClassQualifiedName("CronetURLRequestAdapter")
private native boolean nativeAddRequestHeader(long nativePtr, String name, String value); boolean addRequestHeader(
long nativePtr, CronetUrlRequest caller, String name, String value);
@NativeClassQualifiedName("CronetURLRequestAdapter") @NativeClassQualifiedName("CronetURLRequestAdapter")
private native void nativeStart(long nativePtr); void start(long nativePtr, CronetUrlRequest caller);
@NativeClassQualifiedName("CronetURLRequestAdapter") @NativeClassQualifiedName("CronetURLRequestAdapter")
private native void nativeFollowDeferredRedirect(long nativePtr); void followDeferredRedirect(long nativePtr, CronetUrlRequest caller);
@NativeClassQualifiedName("CronetURLRequestAdapter") @NativeClassQualifiedName("CronetURLRequestAdapter")
private native boolean nativeReadData( boolean readData(long nativePtr, CronetUrlRequest caller, ByteBuffer byteBuffer,
long nativePtr, ByteBuffer byteBuffer, int position, int capacity); int position, int capacity);
@NativeClassQualifiedName("CronetURLRequestAdapter") @NativeClassQualifiedName("CronetURLRequestAdapter")
private native void nativeDestroy(long nativePtr, boolean sendOnCanceled); void destroy(long nativePtr, CronetUrlRequest caller, boolean sendOnCanceled);
@NativeClassQualifiedName("CronetURLRequestAdapter") @NativeClassQualifiedName("CronetURLRequestAdapter")
private native void nativeGetStatus( void getStatus(long nativePtr, CronetUrlRequest caller,
long nativePtr, VersionSafeCallbacks.UrlRequestStatusListener listener); VersionSafeCallbacks.UrlRequestStatusListener listener);
}
} }
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