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 
JNI_OnLoad(JavaVM * vm,void * reserved)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 
JNI_OnUnload(JavaVM * vm,void * reserved)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