45 lines
1.2 KiB
Java
45 lines
1.2 KiB
Java
// Copyright 2019 The Chromium Authors
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file.
|
|
|
|
package org.jni_zero;
|
|
|
|
import org.chromium.build.BuildConfig;
|
|
|
|
/**
|
|
* Exposes native library loading status.
|
|
*/
|
|
public class NativeLibraryLoadedStatus {
|
|
/**
|
|
* Interface for querying native method availability.
|
|
*/
|
|
public interface NativeLibraryLoadedStatusProvider {
|
|
boolean areNativeMethodsReady();
|
|
}
|
|
|
|
private static NativeLibraryLoadedStatusProvider sProvider;
|
|
|
|
public static class NativeNotLoadedException extends RuntimeException {
|
|
public NativeNotLoadedException(String s) {
|
|
super(s);
|
|
}
|
|
}
|
|
|
|
public static void checkLoaded() {
|
|
if (sProvider == null) return;
|
|
|
|
if (!sProvider.areNativeMethodsReady()) {
|
|
throw new NativeNotLoadedException(
|
|
"Native method called before the native library was ready.");
|
|
}
|
|
}
|
|
|
|
public static void setProvider(NativeLibraryLoadedStatusProvider statusProvider) {
|
|
sProvider = statusProvider;
|
|
}
|
|
|
|
public static NativeLibraryLoadedStatusProvider getProviderForTesting() {
|
|
return sProvider;
|
|
}
|
|
}
|