// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// A simple library that provides JNI_OnLoad() and JNI_OnUnload() hooks.
// Used by test_java_vm.cpp

#include <jni.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#define VARNAME "TEST_VAR"

extern "C" int JNI_OnLoad(JavaVM* vm, void* reserved) {
  printf("%s: Entering\n", __FUNCTION__);
  const char* env = getenv(VARNAME);
  if (!env || strcmp(env, "INIT")) {
    fprintf(stderr,
            "%s: Env variable %s has invalid value: %s (expected INIT)\n",
            __FUNCTION__,
            VARNAME,
            env);
    exit(1);
  }
  setenv(VARNAME, "LOADED", 1);
  printf("%s: Exiting\n", __FUNCTION__);
  return JNI_VERSION_1_4;
}

extern "C" void JNI_OnUnload(JavaVM* vm, void* reserved) {
  printf("%s: Entering\n", __FUNCTION__);
  const char* env = getenv(VARNAME);
  if (!env || strcmp(env, "LOADED")) {
    fprintf(stderr,
            "%s: Env variable %s has invalid value: %s (expected LOADED)\n",
            __FUNCTION__,
            VARNAME,
            env);
    exit(1);
  }
  setenv(VARNAME, "UNLOADED", 1);
  printf("%s: Exiting\n", __FUNCTION__);
}
