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