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 {
});
}
// 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);
@NativeMethods
interface Natives {
// Native methods are implemented in cronet_bidirectional_stream_adapter.cc.
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);
@NativeClassQualifiedName("CronetBidirectionalStreamAdapter")
int start(long nativePtr, CronetBidirectionalStream caller, String url, int priority,
String method, String[] headers, boolean endOfStream);
@NativeClassQualifiedName("CronetBidirectionalStreamAdapter")
private native void nativeSendRequestHeaders(long nativePtr);
@NativeClassQualifiedName("CronetBidirectionalStreamAdapter")
void sendRequestHeaders(long nativePtr, CronetBidirectionalStream caller);
@NativeClassQualifiedName("CronetBidirectionalStreamAdapter")
private native boolean nativeReadData(
long nativePtr, ByteBuffer byteBuffer, int position, int limit);
@NativeClassQualifiedName("CronetBidirectionalStreamAdapter")
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);
@NativeClassQualifiedName("CronetBidirectionalStreamAdapter")
boolean writevData(long nativePtr, CronetBidirectionalStream caller, ByteBuffer[] buffers,
int[] positions, int[] limits, boolean endOfStream);
@NativeClassQualifiedName("CronetBidirectionalStreamAdapter")
private native void nativeDestroy(long nativePtr, boolean sendOnCanceled);
@NativeClassQualifiedName("CronetBidirectionalStreamAdapter")
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);
}
// Native methods are implemented in cronet_library_loader.cc.
private static native void nativeCronetInitOnInitThread();
private static native String nativeGetCronetVersion();
@NativeMethods
interface Natives {
// Native methods are implemented in cronet_library_loader.cc.
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);
@NativeClassQualifiedName("CronetUploadDataStreamAdapter")
private native void nativeOnReadSucceeded(long nativePtr, int bytesRead, boolean finalChunk);
@NativeClassQualifiedName("CronetUploadDataStreamAdapter")
private native void nativeOnRewindSucceeded(long nativePtr);
@NativeClassQualifiedName("CronetUploadDataStreamAdapter")
private static native void nativeDestroy(long nativePtr);
@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")
void onReadSucceeded(
long nativePtr, CronetUploadDataStream caller, int bytesRead, boolean finalChunk);
@NativeClassQualifiedName("CronetUploadDataStreamAdapter")
void onRewindSucceeded(long nativePtr, CronetUploadDataStream caller);
@NativeClassQualifiedName("CronetUploadDataStreamAdapter")
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,16 +206,17 @@ public final class CronetUrlRequest extends UrlRequestBase {
checkNotStarted();
try {
mUrlRequestAdapter =
nativeCreateRequestAdapter(mRequestContext.getUrlRequestContextAdapter(),
mInitialUrl, mPriority, mDisableCache, mDisableConnectionMigration,
mRequestContext.hasRequestFinishedListener()
|| mRequestFinishedListener != null,
mTrafficStatsTagSet, mTrafficStatsTag, mTrafficStatsUidSet,
mTrafficStatsUid);
mUrlRequestAdapter = CronetUrlRequestJni.get().createRequestAdapter(
CronetUrlRequest.this, mRequestContext.getUrlRequestContextAdapter(),
mInitialUrl, mPriority, mDisableCache, mDisableConnectionMigration,
mRequestContext.hasRequestFinishedListener()
|| mRequestFinishedListener != null,
mTrafficStatsTagSet, mTrafficStatsTag, mTrafficStatsUidSet,
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.
@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);
private native long nativeCreateRequestAdapter(long urlRequestContextAdapter, String url,
int priority, boolean disableCache, boolean disableConnectionMigration,
boolean enableMetrics, boolean trafficStatsTagSet, int trafficStatsTag,
boolean trafficStatsUidSet, int trafficStatsUid);
@NativeClassQualifiedName("CronetURLRequestAdapter")
boolean setHttpMethod(long nativePtr, CronetUrlRequest caller, String method);
@NativeClassQualifiedName("CronetURLRequestAdapter")
private native boolean nativeSetHttpMethod(long nativePtr, String method);
@NativeClassQualifiedName("CronetURLRequestAdapter")
boolean addRequestHeader(
long nativePtr, CronetUrlRequest caller, String name, String value);
@NativeClassQualifiedName("CronetURLRequestAdapter")
private native boolean nativeAddRequestHeader(long nativePtr, String name, String value);
@NativeClassQualifiedName("CronetURLRequestAdapter")
void start(long nativePtr, CronetUrlRequest caller);
@NativeClassQualifiedName("CronetURLRequestAdapter")
private native void nativeStart(long nativePtr);
@NativeClassQualifiedName("CronetURLRequestAdapter")
void followDeferredRedirect(long nativePtr, CronetUrlRequest caller);
@NativeClassQualifiedName("CronetURLRequestAdapter")
private native void nativeFollowDeferredRedirect(long nativePtr);
@NativeClassQualifiedName("CronetURLRequestAdapter")
boolean readData(long nativePtr, CronetUrlRequest caller, ByteBuffer byteBuffer,
int position, int capacity);
@NativeClassQualifiedName("CronetURLRequestAdapter")
private native boolean nativeReadData(
long nativePtr, ByteBuffer byteBuffer, int position, int capacity);
@NativeClassQualifiedName("CronetURLRequestAdapter")
void destroy(long nativePtr, CronetUrlRequest caller, boolean sendOnCanceled);
@NativeClassQualifiedName("CronetURLRequestAdapter")
private native void nativeDestroy(long nativePtr, boolean sendOnCanceled);
@NativeClassQualifiedName("CronetURLRequestAdapter")
private native void nativeGetStatus(
long nativePtr, VersionSafeCallbacks.UrlRequestStatusListener listener);
@NativeClassQualifiedName("CronetURLRequestAdapter")
void getStatus(long nativePtr, CronetUrlRequest caller,
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