11320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Copyright 2014 The Chromium Authors. All rights reserved.
21320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Use of this source code is governed by a BSD-style license that can be
31320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// found in the LICENSE file.
41320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
51320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include <jni.h>
61320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
71320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "base/android/base_jni_registrar.h"
81320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "base/android/jni_android.h"
91320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "base/android/jni_registrar.h"
101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "components/cronet/android/cronet_loader.h"
111320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "mock_url_request_job_test.h"
121320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccinamespace {
141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
151320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciconst base::android::RegistrationMethod kCronetTestsRegisteredMethods[] = {
161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  {"MockURLRequestJobTest", cronet::RegisterMockUrlRequestJobTest},
171320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci};
181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}  // namespace
201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// This is called by the VM when the shared library is first loaded.
221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci// Checks the available version of JNI. Also, caches Java reflection artifacts.
231320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciextern "C" jint JNI_OnLoad(JavaVM* vm, void* reserved) {
241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  JNIEnv* env;
251320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  if (vm->GetEnv(reinterpret_cast<void**>(&env), JNI_VERSION_1_6) != JNI_OK) {
261320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    return -1;
271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  }
281320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  jint cronet_onload = cronet::CronetOnLoad(vm, reserved);
301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  if (cronet_onload == -1)
311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    return cronet_onload;
321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  if (!base::android::RegisterNativeMethods(
341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci          env,
351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci          kCronetTestsRegisteredMethods,
361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci          arraysize(kCronetTestsRegisteredMethods))) {
371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci    return -1;
381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  }
391320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  return cronet_onload;
401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}
411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciextern "C" void JNI_OnUnLoad(JavaVM* vm, void* reserved) {
431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  cronet::CronetOnUnLoad(vm, reserved);
441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci}
451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
46