| // 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. |
| |
| package org.chromium.base; |
| |
| import org.chromium.base.annotations.CalledByNative; |
| import org.chromium.base.annotations.MainDex; |
| |
| /** |
| * This class provides JNI-related methods to the native library. |
| */ |
| @MainDex |
| public class JNIUtils { |
| private static Boolean sSelectiveJniRegistrationEnabled; |
| |
| /** |
| * This returns a ClassLoader that is capable of loading Chromium Java code. Such a ClassLoader |
| * is needed for the few cases where the JNI mechanism is unable to automatically determine the |
| * appropriate ClassLoader instance. |
| */ |
| @CalledByNative |
| public static Object getClassLoader() { |
| return JNIUtils.class.getClassLoader(); |
| } |
| |
| /** |
| * @return whether or not the current process supports selective JNI registration. |
| */ |
| @CalledByNative |
| public static boolean isSelectiveJniRegistrationEnabled() { |
| if (sSelectiveJniRegistrationEnabled == null) { |
| sSelectiveJniRegistrationEnabled = false; |
| } |
| return sSelectiveJniRegistrationEnabled; |
| } |
| |
| /** |
| * Allow this process to selectively perform JNI registration. This must be called before |
| * loading native libraries or it will have no effect. |
| */ |
| public static void enableSelectiveJniRegistration() { |
| assert sSelectiveJniRegistrationEnabled == null; |
| sSelectiveJniRegistrationEnabled = true; |
| } |
| } |