// Copyright 2014 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.


// This file is autogenerated by
//     third_party/jni_zero/jni_generator.py
// For
//     android/net/connectivity/org/chromium/net/impl/CronetUrlRequest

#ifndef android_net_connectivity_org_chromium_net_impl_CronetUrlRequest_JNI
#define android_net_connectivity_org_chromium_net_impl_CronetUrlRequest_JNI

#include <jni.h>

#include "third_party/jni_zero/jni_export.h"
#include "third_party/jni_zero/jni_zero_helper.h"


// Step 1: Forward declarations.

JNI_ZERO_COMPONENT_BUILD_EXPORT extern const char
    kClassPath_android_net_connectivity_org_chromium_net_impl_CronetUrlRequest[];
const char kClassPath_android_net_connectivity_org_chromium_net_impl_CronetUrlRequest[] =
    "android/net/connectivity/org/chromium/net/impl/CronetUrlRequest";
// Leaking this jclass as we cannot use LazyInstance from some threads.
JNI_ZERO_COMPONENT_BUILD_EXPORT std::atomic<jclass>
    g_android_net_connectivity_org_chromium_net_impl_CronetUrlRequest_clazz(nullptr);
#ifndef android_net_connectivity_org_chromium_net_impl_CronetUrlRequest_clazz_defined
#define android_net_connectivity_org_chromium_net_impl_CronetUrlRequest_clazz_defined
inline jclass android_net_connectivity_org_chromium_net_impl_CronetUrlRequest_clazz(JNIEnv* env) {
  return base::android::LazyGetClass(env,
      kClassPath_android_net_connectivity_org_chromium_net_impl_CronetUrlRequest,
      &g_android_net_connectivity_org_chromium_net_impl_CronetUrlRequest_clazz);
}
#endif


// Step 2: Constants (optional).


// Step 3: Method stubs.
namespace cronet {

JNI_BOUNDARY_EXPORT jboolean Java_android_net_connectivity_J_N_MSjljk0f(
    JNIEnv* env,
    jclass jcaller,
    jlong nativePtr,
    jobject caller,
    jstring name,
    jstring value) {
  CronetURLRequestAdapter* native = reinterpret_cast<CronetURLRequestAdapter*>(nativePtr);
  CHECK_NATIVE_PTR(env, jcaller, native, "AddRequestHeader", false);
  return native->AddRequestHeader(env, base::android::JavaParamRef<jobject>(env, caller),
      base::android::JavaParamRef<jstring>(env, name), base::android::JavaParamRef<jstring>(env,
      value));
}

static jlong JNI_CronetUrlRequest_CreateRequestAdapter(JNIEnv* env, const
    base::android::JavaParamRef<jobject>& caller,
    jlong urlRequestContextAdapter,
    const base::android::JavaParamRef<jstring>& url,
    jint priority,
    jboolean disableCache,
    jboolean disableConnectionMigration,
    jboolean trafficStatsTagSet,
    jint trafficStatsTag,
    jboolean trafficStatsUidSet,
    jint trafficStatsUid,
    jint idempotency,
    jlong networkHandle);

JNI_BOUNDARY_EXPORT jlong Java_android_net_connectivity_J_N_MFGBnxaV(
    JNIEnv* env,
    jclass jcaller,
    jobject caller,
    jlong urlRequestContextAdapter,
    jstring url,
    jint priority,
    jboolean disableCache,
    jboolean disableConnectionMigration,
    jboolean trafficStatsTagSet,
    jint trafficStatsTag,
    jboolean trafficStatsUidSet,
    jint trafficStatsUid,
    jint idempotency,
    jlong networkHandle) {
  return JNI_CronetUrlRequest_CreateRequestAdapter(env, base::android::JavaParamRef<jobject>(env,
      caller), urlRequestContextAdapter, base::android::JavaParamRef<jstring>(env, url), priority,
      disableCache, disableConnectionMigration, trafficStatsTagSet, trafficStatsTag,
      trafficStatsUidSet, trafficStatsUid, idempotency, networkHandle);
}

JNI_BOUNDARY_EXPORT void Java_android_net_connectivity_J_N_Mfotd4Ob(
    JNIEnv* env,
    jclass jcaller,
    jlong nativePtr,
    jobject caller,
    jboolean sendOnCanceled) {
  CronetURLRequestAdapter* native = reinterpret_cast<CronetURLRequestAdapter*>(nativePtr);
  CHECK_NATIVE_PTR(env, jcaller, native, "Destroy");
  return native->Destroy(env, base::android::JavaParamRef<jobject>(env, caller), sendOnCanceled);
}

JNI_BOUNDARY_EXPORT void Java_android_net_connectivity_J_N_MSplFy9_00024(
    JNIEnv* env,
    jclass jcaller,
    jlong nativePtr,
    jobject caller) {
  CronetURLRequestAdapter* native = reinterpret_cast<CronetURLRequestAdapter*>(nativePtr);
  CHECK_NATIVE_PTR(env, jcaller, native, "FollowDeferredRedirect");
  return native->FollowDeferredRedirect(env, base::android::JavaParamRef<jobject>(env, caller));
}

JNI_BOUNDARY_EXPORT void Java_android_net_connectivity_J_N_MVbDDTbK(
    JNIEnv* env,
    jclass jcaller,
    jlong nativePtr,
    jobject caller,
    jobject listener) {
  CronetURLRequestAdapter* native = reinterpret_cast<CronetURLRequestAdapter*>(nativePtr);
  CHECK_NATIVE_PTR(env, jcaller, native, "GetStatus");
  return native->GetStatus(env, base::android::JavaParamRef<jobject>(env, caller),
      base::android::JavaParamRef<jobject>(env, listener));
}

JNI_BOUNDARY_EXPORT jboolean Java_android_net_connectivity_J_N_MjZZaeHU(
    JNIEnv* env,
    jclass jcaller,
    jlong nativePtr,
    jobject caller,
    jobject byteBuffer,
    jint position,
    jint capacity) {
  CronetURLRequestAdapter* native = reinterpret_cast<CronetURLRequestAdapter*>(nativePtr);
  CHECK_NATIVE_PTR(env, jcaller, native, "ReadData", false);
  return native->ReadData(env, base::android::JavaParamRef<jobject>(env, caller),
      base::android::JavaParamRef<jobject>(env, byteBuffer), position, capacity);
}

JNI_BOUNDARY_EXPORT jboolean Java_android_net_connectivity_J_N_MdjgNOi3(
    JNIEnv* env,
    jclass jcaller,
    jlong nativePtr,
    jobject caller,
    jstring method) {
  CronetURLRequestAdapter* native = reinterpret_cast<CronetURLRequestAdapter*>(nativePtr);
  CHECK_NATIVE_PTR(env, jcaller, native, "SetHttpMethod", false);
  return native->SetHttpMethod(env, base::android::JavaParamRef<jobject>(env, caller),
      base::android::JavaParamRef<jstring>(env, method));
}

JNI_BOUNDARY_EXPORT void Java_android_net_connectivity_J_N_Mw8upc4T(
    JNIEnv* env,
    jclass jcaller,
    jlong nativePtr,
    jobject caller) {
  CronetURLRequestAdapter* native = reinterpret_cast<CronetURLRequestAdapter*>(nativePtr);
  CHECK_NATIVE_PTR(env, jcaller, native, "Start");
  return native->Start(env, base::android::JavaParamRef<jobject>(env, caller));
}


static std::atomic<jmethodID>
    g_android_net_connectivity_org_chromium_net_impl_CronetUrlRequest_onCanceled0(nullptr);
static void Java_CronetUrlRequest_onCanceled(JNIEnv* env, const base::android::JavaRef<jobject>&
    obj) {
  jclass clazz = android_net_connectivity_org_chromium_net_impl_CronetUrlRequest_clazz(env);
  CHECK_CLAZZ(env, obj.obj(),
      android_net_connectivity_org_chromium_net_impl_CronetUrlRequest_clazz(env));

  jni_generator::JniJavaCallContextChecked call_context;
  call_context.Init<
      base::android::MethodID::TYPE_INSTANCE>(
          env,
          clazz,
          "onCanceled",
          "()V",
          &g_android_net_connectivity_org_chromium_net_impl_CronetUrlRequest_onCanceled0);

     env->CallVoidMethod(obj.obj(),
          call_context.base.method_id);
}

static std::atomic<jmethodID>
    g_android_net_connectivity_org_chromium_net_impl_CronetUrlRequest_onError5(nullptr);
static void Java_CronetUrlRequest_onError(JNIEnv* env, const base::android::JavaRef<jobject>& obj,
    JniIntWrapper errorCode,
    JniIntWrapper nativeError,
    JniIntWrapper nativeQuicError,
    const base::android::JavaRef<jstring>& errorString,
    jlong receivedByteCount) {
  jclass clazz = android_net_connectivity_org_chromium_net_impl_CronetUrlRequest_clazz(env);
  CHECK_CLAZZ(env, obj.obj(),
      android_net_connectivity_org_chromium_net_impl_CronetUrlRequest_clazz(env));

  jni_generator::JniJavaCallContextChecked call_context;
  call_context.Init<
      base::android::MethodID::TYPE_INSTANCE>(
          env,
          clazz,
          "onError",
          "(IIILjava/lang/String;J)V",
          &g_android_net_connectivity_org_chromium_net_impl_CronetUrlRequest_onError5);

     env->CallVoidMethod(obj.obj(),
          call_context.base.method_id, as_jint(errorCode), as_jint(nativeError),
              as_jint(nativeQuicError), errorString.obj(), receivedByteCount);
}

static std::atomic<jmethodID>
    g_android_net_connectivity_org_chromium_net_impl_CronetUrlRequest_onMetricsCollected18(nullptr);
static void Java_CronetUrlRequest_onMetricsCollected(JNIEnv* env, const
    base::android::JavaRef<jobject>& obj, jlong requestStartMs,
    jlong dnsStartMs,
    jlong dnsEndMs,
    jlong connectStartMs,
    jlong connectEndMs,
    jlong sslStartMs,
    jlong sslEndMs,
    jlong sendingStartMs,
    jlong sendingEndMs,
    jlong pushStartMs,
    jlong pushEndMs,
    jlong responseStartMs,
    jlong requestEndMs,
    jboolean socketReused,
    jlong sentByteCount,
    jlong receivedByteCount,
    jboolean quicConnectionMigrationAttempted,
    jboolean quicConnectionMigrationSuccessful) {
  jclass clazz = android_net_connectivity_org_chromium_net_impl_CronetUrlRequest_clazz(env);
  CHECK_CLAZZ(env, obj.obj(),
      android_net_connectivity_org_chromium_net_impl_CronetUrlRequest_clazz(env));

  jni_generator::JniJavaCallContextChecked call_context;
  call_context.Init<
      base::android::MethodID::TYPE_INSTANCE>(
          env,
          clazz,
          "onMetricsCollected",
          "(JJJJJJJJJJJJJZJJZZ)V",
          &g_android_net_connectivity_org_chromium_net_impl_CronetUrlRequest_onMetricsCollected18);

     env->CallVoidMethod(obj.obj(),
          call_context.base.method_id, requestStartMs, dnsStartMs, dnsEndMs, connectStartMs,
              connectEndMs, sslStartMs, sslEndMs, sendingStartMs, sendingEndMs, pushStartMs,
              pushEndMs, responseStartMs, requestEndMs, socketReused, sentByteCount,
              receivedByteCount, quicConnectionMigrationAttempted,
              quicConnectionMigrationSuccessful);
}

static std::atomic<jmethodID>
    g_android_net_connectivity_org_chromium_net_impl_CronetUrlRequest_onNativeAdapterDestroyed0(nullptr);
static void Java_CronetUrlRequest_onNativeAdapterDestroyed(JNIEnv* env, const
    base::android::JavaRef<jobject>& obj) {
  jclass clazz = android_net_connectivity_org_chromium_net_impl_CronetUrlRequest_clazz(env);
  CHECK_CLAZZ(env, obj.obj(),
      android_net_connectivity_org_chromium_net_impl_CronetUrlRequest_clazz(env));

  jni_generator::JniJavaCallContextChecked call_context;
  call_context.Init<
      base::android::MethodID::TYPE_INSTANCE>(
          env,
          clazz,
          "onNativeAdapterDestroyed",
          "()V",
&g_android_net_connectivity_org_chromium_net_impl_CronetUrlRequest_onNativeAdapterDestroyed0);

     env->CallVoidMethod(obj.obj(),
          call_context.base.method_id);
}

static std::atomic<jmethodID>
    g_android_net_connectivity_org_chromium_net_impl_CronetUrlRequest_onReadCompleted5(nullptr);
static void Java_CronetUrlRequest_onReadCompleted(JNIEnv* env, const
    base::android::JavaRef<jobject>& obj, const base::android::JavaRef<jobject>& byteBuffer,
    JniIntWrapper bytesRead,
    JniIntWrapper initialPosition,
    JniIntWrapper initialLimit,
    jlong receivedByteCount) {
  jclass clazz = android_net_connectivity_org_chromium_net_impl_CronetUrlRequest_clazz(env);
  CHECK_CLAZZ(env, obj.obj(),
      android_net_connectivity_org_chromium_net_impl_CronetUrlRequest_clazz(env));

  jni_generator::JniJavaCallContextChecked call_context;
  call_context.Init<
      base::android::MethodID::TYPE_INSTANCE>(
          env,
          clazz,
          "onReadCompleted",
          "(Ljava/nio/ByteBuffer;IIIJ)V",
          &g_android_net_connectivity_org_chromium_net_impl_CronetUrlRequest_onReadCompleted5);

     env->CallVoidMethod(obj.obj(),
          call_context.base.method_id, byteBuffer.obj(), as_jint(bytesRead),
              as_jint(initialPosition), as_jint(initialLimit), receivedByteCount);
}

static std::atomic<jmethodID>
    g_android_net_connectivity_org_chromium_net_impl_CronetUrlRequest_onRedirectReceived8(nullptr);
static void Java_CronetUrlRequest_onRedirectReceived(JNIEnv* env, const
    base::android::JavaRef<jobject>& obj, const base::android::JavaRef<jstring>& newLocation,
    JniIntWrapper httpStatusCode,
    const base::android::JavaRef<jstring>& httpStatusText,
    const base::android::JavaRef<jobjectArray>& headers,
    jboolean wasCached,
    const base::android::JavaRef<jstring>& negotiatedProtocol,
    const base::android::JavaRef<jstring>& proxyServer,
    jlong receivedByteCount) {
  jclass clazz = android_net_connectivity_org_chromium_net_impl_CronetUrlRequest_clazz(env);
  CHECK_CLAZZ(env, obj.obj(),
      android_net_connectivity_org_chromium_net_impl_CronetUrlRequest_clazz(env));

  jni_generator::JniJavaCallContextChecked call_context;
  call_context.Init<
      base::android::MethodID::TYPE_INSTANCE>(
          env,
          clazz,
          "onRedirectReceived",
"(Ljava/lang/String;ILjava/lang/String;[Ljava/lang/String;ZLjava/lang/String;Ljava/lang/String;J)V",
          &g_android_net_connectivity_org_chromium_net_impl_CronetUrlRequest_onRedirectReceived8);

     env->CallVoidMethod(obj.obj(),
          call_context.base.method_id, newLocation.obj(), as_jint(httpStatusCode),
              httpStatusText.obj(), headers.obj(), wasCached, negotiatedProtocol.obj(),
              proxyServer.obj(), receivedByteCount);
}

static std::atomic<jmethodID>
    g_android_net_connectivity_org_chromium_net_impl_CronetUrlRequest_onResponseStarted7(nullptr);
static void Java_CronetUrlRequest_onResponseStarted(JNIEnv* env, const
    base::android::JavaRef<jobject>& obj, JniIntWrapper httpStatusCode,
    const base::android::JavaRef<jstring>& httpStatusText,
    const base::android::JavaRef<jobjectArray>& headers,
    jboolean wasCached,
    const base::android::JavaRef<jstring>& negotiatedProtocol,
    const base::android::JavaRef<jstring>& proxyServer,
    jlong receivedByteCount) {
  jclass clazz = android_net_connectivity_org_chromium_net_impl_CronetUrlRequest_clazz(env);
  CHECK_CLAZZ(env, obj.obj(),
      android_net_connectivity_org_chromium_net_impl_CronetUrlRequest_clazz(env));

  jni_generator::JniJavaCallContextChecked call_context;
  call_context.Init<
      base::android::MethodID::TYPE_INSTANCE>(
          env,
          clazz,
          "onResponseStarted",
          "(ILjava/lang/String;[Ljava/lang/String;ZLjava/lang/String;Ljava/lang/String;J)V",
          &g_android_net_connectivity_org_chromium_net_impl_CronetUrlRequest_onResponseStarted7);

     env->CallVoidMethod(obj.obj(),
          call_context.base.method_id, as_jint(httpStatusCode), httpStatusText.obj(), headers.obj(),
              wasCached, negotiatedProtocol.obj(), proxyServer.obj(), receivedByteCount);
}

static std::atomic<jmethodID>
    g_android_net_connectivity_org_chromium_net_impl_CronetUrlRequest_onStatus2(nullptr);
static void Java_CronetUrlRequest_onStatus(JNIEnv* env, const base::android::JavaRef<jobject>& obj,
    const base::android::JavaRef<jobject>& listener,
    JniIntWrapper loadState) {
  jclass clazz = android_net_connectivity_org_chromium_net_impl_CronetUrlRequest_clazz(env);
  CHECK_CLAZZ(env, obj.obj(),
      android_net_connectivity_org_chromium_net_impl_CronetUrlRequest_clazz(env));

  jni_generator::JniJavaCallContextChecked call_context;
  call_context.Init<
      base::android::MethodID::TYPE_INSTANCE>(
          env,
          clazz,
          "onStatus",
"(Landroid/net/connectivity/org/chromium/net/impl/VersionSafeCallbacks$UrlRequestStatusListener;I)V",
          &g_android_net_connectivity_org_chromium_net_impl_CronetUrlRequest_onStatus2);

     env->CallVoidMethod(obj.obj(),
          call_context.base.method_id, listener.obj(), as_jint(loadState));
}

static std::atomic<jmethodID>
    g_android_net_connectivity_org_chromium_net_impl_CronetUrlRequest_onSucceeded1(nullptr);
static void Java_CronetUrlRequest_onSucceeded(JNIEnv* env, const base::android::JavaRef<jobject>&
    obj, jlong receivedByteCount) {
  jclass clazz = android_net_connectivity_org_chromium_net_impl_CronetUrlRequest_clazz(env);
  CHECK_CLAZZ(env, obj.obj(),
      android_net_connectivity_org_chromium_net_impl_CronetUrlRequest_clazz(env));

  jni_generator::JniJavaCallContextChecked call_context;
  call_context.Init<
      base::android::MethodID::TYPE_INSTANCE>(
          env,
          clazz,
          "onSucceeded",
          "(J)V",
          &g_android_net_connectivity_org_chromium_net_impl_CronetUrlRequest_onSucceeded1);

     env->CallVoidMethod(obj.obj(),
          call_context.base.method_id, receivedByteCount);
}

}  // namespace cronet

#endif  // android_net_connectivity_org_chromium_net_impl_CronetUrlRequest_JNI
