mirror of
https://github.com/LSPosed/LSPlant.git
synced 2025-05-04 20:42:02 +08:00
Fix unit test
This commit is contained in:
parent
620b7cbc60
commit
9a53615f56
@ -17,12 +17,11 @@ import java.util.List;
|
||||
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
|
||||
public class UnitTest {
|
||||
|
||||
private final List<Hooker> hookers = new ArrayList<>();
|
||||
private static final List<Hooker> hookers = new ArrayList<>();
|
||||
|
||||
@Test
|
||||
public void t00_initTest() {
|
||||
boolean result = LSPTest.initHooker();
|
||||
Assert.assertTrue(result);
|
||||
Assert.assertTrue(LSPTest.initHooker());
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@ -12,14 +12,14 @@ public class Hooker {
|
||||
public Executable backup;
|
||||
|
||||
private boolean isStatic;
|
||||
private Executable replacement;
|
||||
private Executable target, replacement;
|
||||
|
||||
private Hooker() {
|
||||
}
|
||||
|
||||
private native Executable doHook(Executable original, Executable callback);
|
||||
|
||||
private native boolean doUnhook(Executable replacement);
|
||||
private native boolean doUnhook(Executable target);
|
||||
|
||||
public Object callback(Object[] args) throws InvocationTargetException, IllegalAccessException, InstantiationException {
|
||||
if (replacement instanceof Method) {
|
||||
@ -36,17 +36,18 @@ public class Hooker {
|
||||
}
|
||||
|
||||
public boolean unhook() {
|
||||
return doUnhook(replacement);
|
||||
return doUnhook(target);
|
||||
}
|
||||
|
||||
public static Hooker hook(Executable original, Executable replacement) {
|
||||
public static Hooker hook(Executable target, Executable replacement) {
|
||||
Hooker hooker = new Hooker();
|
||||
try {
|
||||
var callbackMethod = Hooker.class.getDeclaredMethod("callback", Object[].class);
|
||||
var result = hooker.doHook(original, callbackMethod);
|
||||
var result = hooker.doHook(target, callbackMethod);
|
||||
if (result == null) return null;
|
||||
hooker.isStatic = (replacement.getModifiers() & Modifier.STATIC) != 0;
|
||||
hooker.backup = result;
|
||||
hooker.target = target;
|
||||
hooker.replacement = replacement;
|
||||
} catch (NoSuchMethodException ignored) {
|
||||
}
|
||||
|
@ -39,14 +39,14 @@ Java_org_lsposed_lsplant_LSPTest_initHooker(JNIEnv*, jclass) {
|
||||
|
||||
extern "C"
|
||||
JNIEXPORT jobject JNICALL
|
||||
Java_org_lsposed_lsplant_Hooker_doHook(JNIEnv* env, jobject thiz, jobject original, jobject callback) {
|
||||
return lsplant::Hook(env, original, thiz, callback);
|
||||
Java_org_lsposed_lsplant_Hooker_doHook(JNIEnv* env, jobject thiz, jobject target, jobject callback) {
|
||||
return lsplant::Hook(env, target, thiz, callback);
|
||||
}
|
||||
|
||||
extern "C"
|
||||
JNIEXPORT jboolean JNICALL
|
||||
Java_org_lsposed_lsplant_Hooker_doUnhook(JNIEnv* env, jobject, jobject replacement) {
|
||||
return lsplant::UnHook(env, replacement);
|
||||
Java_org_lsposed_lsplant_Hooker_doUnhook(JNIEnv* env, jobject, jobject target) {
|
||||
return lsplant::UnHook(env, target);
|
||||
}
|
||||
|
||||
JNIEXPORT jint JNICALL
|
||||
|
Loading…
x
Reference in New Issue
Block a user