1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 // A simple library that provides JNI_OnLoad() and JNI_OnUnload() hooks. 6 // Used by test_java_vm.cpp 7 8 #include <jni.h> 9 #include <stdio.h> 10 #include <stdlib.h> 11 12 #define VARNAME "TEST_VAR" 13 14 extern "C" int JNI_OnLoad(JavaVM* vm, void* reserved) { 15 printf("%s: Entering\n", __FUNCTION__); 16 const char* env = getenv(VARNAME); 17 if (!env || strcmp(env, "INIT")) { 18 fprintf(stderr, 19 "%s: Env variable %s has invalid value: %s (expected INIT)\n", 20 __FUNCTION__, 21 VARNAME, 22 env); 23 exit(1); 24 } 25 setenv(VARNAME, "LOADED", 1); 26 printf("%s: Exiting\n", __FUNCTION__); 27 return JNI_VERSION_1_4; 28 } 29 30 extern "C" void JNI_OnUnload(JavaVM* vm, void* reserved) { 31 printf("%s: Entering\n", __FUNCTION__); 32 const char* env = getenv(VARNAME); 33 if (!env || strcmp(env, "LOADED")) { 34 fprintf(stderr, 35 "%s: Env variable %s has invalid value: %s (expected LOADED)\n", 36 __FUNCTION__, 37 VARNAME, 38 env); 39 exit(1); 40 } 41 setenv(VARNAME, "UNLOADED", 1); 42 printf("%s: Exiting\n", __FUNCTION__); 43 } 44