// 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/CronetUrlRequestContext

#ifndef android_net_connectivity_org_chromium_net_impl_CronetUrlRequestContext_JNI
#define android_net_connectivity_org_chromium_net_impl_CronetUrlRequestContext_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_CronetUrlRequestContext[];
const char kClassPath_android_net_connectivity_org_chromium_net_impl_CronetUrlRequestContext[] =
    "android/net/connectivity/org/chromium/net/impl/CronetUrlRequestContext";
// 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_CronetUrlRequestContext_clazz(nullptr);
#ifndef android_net_connectivity_org_chromium_net_impl_CronetUrlRequestContext_clazz_defined
#define android_net_connectivity_org_chromium_net_impl_CronetUrlRequestContext_clazz_defined
inline jclass android_net_connectivity_org_chromium_net_impl_CronetUrlRequestContext_clazz(JNIEnv*
    env) {
  return base::android::LazyGetClass(env,
      kClassPath_android_net_connectivity_org_chromium_net_impl_CronetUrlRequestContext,
      &g_android_net_connectivity_org_chromium_net_impl_CronetUrlRequestContext_clazz);
}
#endif


// Step 2: Constants (optional).


// Step 3: Method stubs.
namespace cronet {

static void JNI_CronetUrlRequestContext_AddPkp(JNIEnv* env, jlong urlRequestContextConfig,
    const base::android::JavaParamRef<jstring>& host,
    const base::android::JavaParamRef<jobjectArray>& hashes,
    jboolean includeSubdomains,
    jlong expirationTime);

JNI_BOUNDARY_EXPORT void Java_android_net_connectivity_J_N_MB198bG8(
    JNIEnv* env,
    jclass jcaller,
    jlong urlRequestContextConfig,
    jstring host,
    jobjectArray hashes,
    jboolean includeSubdomains,
    jlong expirationTime) {
  return JNI_CronetUrlRequestContext_AddPkp(env, urlRequestContextConfig,
      base::android::JavaParamRef<jstring>(env, host),
      base::android::JavaParamRef<jobjectArray>(env, hashes), includeSubdomains, expirationTime);
}

static void JNI_CronetUrlRequestContext_AddQuicHint(JNIEnv* env, jlong urlRequestContextConfig,
    const base::android::JavaParamRef<jstring>& host,
    jint port,
    jint alternatePort);

JNI_BOUNDARY_EXPORT void Java_android_net_connectivity_J_N_M2KdtUrg(
    JNIEnv* env,
    jclass jcaller,
    jlong urlRequestContextConfig,
    jstring host,
    jint port,
    jint alternatePort) {
  return JNI_CronetUrlRequestContext_AddQuicHint(env, urlRequestContextConfig,
      base::android::JavaParamRef<jstring>(env, host), port, alternatePort);
}

JNI_BOUNDARY_EXPORT void Java_android_net_connectivity_J_N_Mj6B5jcc_1ForTesting(
    JNIEnv* env,
    jclass jcaller,
    jlong nativePtr,
    jobject caller,
    jboolean useLocalHostRequests,
    jboolean useSmallerResponses,
    jboolean disableOfflineCheck) {
  CronetContextAdapter* native = reinterpret_cast<CronetContextAdapter*>(nativePtr);
  CHECK_NATIVE_PTR(env, jcaller, native, "ConfigureNetworkQualityEstimatorForTesting");
  return native->ConfigureNetworkQualityEstimatorForTesting(env,
      base::android::JavaParamRef<jobject>(env, caller), useLocalHostRequests, useSmallerResponses,
      disableOfflineCheck);
}

static jlong JNI_CronetUrlRequestContext_CreateRequestContextAdapter(JNIEnv* env, jlong
    urlRequestContextConfig);

JNI_BOUNDARY_EXPORT jlong Java_android_net_connectivity_J_N_MM9GSMn8(
    JNIEnv* env,
    jclass jcaller,
    jlong urlRequestContextConfig) {
  return JNI_CronetUrlRequestContext_CreateRequestContextAdapter(env, urlRequestContextConfig);
}

static jlong JNI_CronetUrlRequestContext_CreateRequestContextConfig(JNIEnv* env, const
    base::android::JavaParamRef<jbyteArray>& serializedRequestContextConfigOptions);

JNI_BOUNDARY_EXPORT jlong Java_android_net_connectivity_J_N_MdJIXtYk(
    JNIEnv* env,
    jclass jcaller,
    jbyteArray serializedRequestContextConfigOptions) {
  return JNI_CronetUrlRequestContext_CreateRequestContextConfig(env,
      base::android::JavaParamRef<jbyteArray>(env, serializedRequestContextConfigOptions));
}

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

JNI_BOUNDARY_EXPORT jboolean Java_android_net_connectivity_J_N_MqeULATd(
    JNIEnv* env,
    jclass jcaller,
    jlong nativePtr,
    jobject caller) {
  CronetContextAdapter* native = reinterpret_cast<CronetContextAdapter*>(nativePtr);
  CHECK_NATIVE_PTR(env, jcaller, native, "GetEnableTelemetry", false);
  return native->GetEnableTelemetry(env, base::android::JavaParamRef<jobject>(env, caller));
}

static base::android::ScopedJavaLocalRef<jbyteArray>
    JNI_CronetUrlRequestContext_GetHistogramDeltas(JNIEnv* env);

JNI_BOUNDARY_EXPORT jbyteArray Java_android_net_connectivity_J_N_MbrYstV8(
    JNIEnv* env,
    jclass jcaller) {
  return JNI_CronetUrlRequestContext_GetHistogramDeltas(env).Release();
}

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

JNI_BOUNDARY_EXPORT void Java_android_net_connectivity_J_N_MpnFUGkW(
    JNIEnv* env,
    jclass jcaller,
    jlong nativePtr,
    jobject caller,
    jboolean should) {
  CronetContextAdapter* native = reinterpret_cast<CronetContextAdapter*>(nativePtr);
  CHECK_NATIVE_PTR(env, jcaller, native, "ProvideRTTObservations");
  return native->ProvideRTTObservations(env, base::android::JavaParamRef<jobject>(env, caller),
      should);
}

JNI_BOUNDARY_EXPORT void Java_android_net_connectivity_J_N_MMi3i5BF(
    JNIEnv* env,
    jclass jcaller,
    jlong nativePtr,
    jobject caller,
    jboolean should) {
  CronetContextAdapter* native = reinterpret_cast<CronetContextAdapter*>(nativePtr);
  CHECK_NATIVE_PTR(env, jcaller, native, "ProvideThroughputObservations");
  return native->ProvideThroughputObservations(env, base::android::JavaParamRef<jobject>(env,
      caller), should);
}

JNI_BOUNDARY_EXPORT void Java_android_net_connectivity_J_N_MQxqWopQ(
    JNIEnv* env,
    jclass jcaller,
    jlong nativePtr,
    jobject caller,
    jstring dirPath,
    jboolean logAll,
    jint maxSize) {
  CronetContextAdapter* native = reinterpret_cast<CronetContextAdapter*>(nativePtr);
  CHECK_NATIVE_PTR(env, jcaller, native, "StartNetLogToDisk");
  return native->StartNetLogToDisk(env, base::android::JavaParamRef<jobject>(env, caller),
      base::android::JavaParamRef<jstring>(env, dirPath), logAll, maxSize);
}

JNI_BOUNDARY_EXPORT jboolean Java_android_net_connectivity_J_N_MnbMPIwt(
    JNIEnv* env,
    jclass jcaller,
    jlong nativePtr,
    jobject caller,
    jstring fileName,
    jboolean logAll) {
  CronetContextAdapter* native = reinterpret_cast<CronetContextAdapter*>(nativePtr);
  CHECK_NATIVE_PTR(env, jcaller, native, "StartNetLogToFile", false);
  return native->StartNetLogToFile(env, base::android::JavaParamRef<jobject>(env, caller),
      base::android::JavaParamRef<jstring>(env, fileName), logAll);
}

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


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

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

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

static std::atomic<jmethodID>
    g_android_net_connectivity_org_chromium_net_impl_CronetUrlRequestContext_onEffectiveConnectionTypeChanged1(nullptr);
static void Java_CronetUrlRequestContext_onEffectiveConnectionTypeChanged(JNIEnv* env, const
    base::android::JavaRef<jobject>& obj, JniIntWrapper effectiveConnectionType) {
  jclass clazz = android_net_connectivity_org_chromium_net_impl_CronetUrlRequestContext_clazz(env);
  CHECK_CLAZZ(env, obj.obj(),
      android_net_connectivity_org_chromium_net_impl_CronetUrlRequestContext_clazz(env));

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

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

static std::atomic<jmethodID>
    g_android_net_connectivity_org_chromium_net_impl_CronetUrlRequestContext_onRTTOrThroughputEstimatesComputed3(nullptr);
static void Java_CronetUrlRequestContext_onRTTOrThroughputEstimatesComputed(JNIEnv* env, const
    base::android::JavaRef<jobject>& obj, JniIntWrapper httpRttMs,
    JniIntWrapper transportRttMs,
    JniIntWrapper downstreamThroughputKbps) {
  jclass clazz = android_net_connectivity_org_chromium_net_impl_CronetUrlRequestContext_clazz(env);
  CHECK_CLAZZ(env, obj.obj(),
      android_net_connectivity_org_chromium_net_impl_CronetUrlRequestContext_clazz(env));

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

     env->CallVoidMethod(obj.obj(),
          call_context.base.method_id, as_jint(httpRttMs), as_jint(transportRttMs),
              as_jint(downstreamThroughputKbps));
}

static std::atomic<jmethodID>
    g_android_net_connectivity_org_chromium_net_impl_CronetUrlRequestContext_onRttObservation3(nullptr);
static void Java_CronetUrlRequestContext_onRttObservation(JNIEnv* env, const
    base::android::JavaRef<jobject>& obj, JniIntWrapper rttMs,
    jlong whenMs,
    JniIntWrapper source) {
  jclass clazz = android_net_connectivity_org_chromium_net_impl_CronetUrlRequestContext_clazz(env);
  CHECK_CLAZZ(env, obj.obj(),
      android_net_connectivity_org_chromium_net_impl_CronetUrlRequestContext_clazz(env));

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

     env->CallVoidMethod(obj.obj(),
          call_context.base.method_id, as_jint(rttMs), whenMs, as_jint(source));
}

static std::atomic<jmethodID>
    g_android_net_connectivity_org_chromium_net_impl_CronetUrlRequestContext_onThroughputObservation3(nullptr);
static void Java_CronetUrlRequestContext_onThroughputObservation(JNIEnv* env, const
    base::android::JavaRef<jobject>& obj, JniIntWrapper throughputKbps,
    jlong whenMs,
    JniIntWrapper source) {
  jclass clazz = android_net_connectivity_org_chromium_net_impl_CronetUrlRequestContext_clazz(env);
  CHECK_CLAZZ(env, obj.obj(),
      android_net_connectivity_org_chromium_net_impl_CronetUrlRequestContext_clazz(env));

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

     env->CallVoidMethod(obj.obj(),
          call_context.base.method_id, as_jint(throughputKbps), whenMs, as_jint(source));
}

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

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

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

}  // namespace cronet

#endif  // android_net_connectivity_org_chromium_net_impl_CronetUrlRequestContext_JNI
