From 82dbc52d7bbaf5c9b615a3d9ac9fe12a79da2145 Mon Sep 17 00:00:00 2001 From: LoveSy Date: Mon, 2 Jan 2023 17:44:06 +0800 Subject: [PATCH] No more default method --- .../libxposed/XposedContextWrapper.java | 30 +++++++++++++++ .../io/github/libxposed/XposedInterface.java | 24 +++++++----- .../io/github/libxposed/XposedModule.java | 10 +++++ .../libxposed/XposedModuleInterface.java | 6 +-- .../io/github/libxposed/XposedTypedArray.java | 2 +- .../org/lsposed/lspd/impl/LSPosedContext.java | 38 ++++++++++++++++++- 6 files changed, 94 insertions(+), 16 deletions(-) diff --git a/api/src/main/java/io/github/libxposed/XposedContextWrapper.java b/api/src/main/java/io/github/libxposed/XposedContextWrapper.java index 09849165..334ce718 100644 --- a/api/src/main/java/io/github/libxposed/XposedContextWrapper.java +++ b/api/src/main/java/io/github/libxposed/XposedContextWrapper.java @@ -60,6 +60,21 @@ public class XposedContextWrapper extends ContextWrapper implements XposedInterf return getBaseContext().hook(origin, hooker); } + @Override + public MethodUnhooker, Method> hookBefore(@NonNull Method origin, int priority, @NonNull BeforeMethodHooker hooker) { + return getBaseContext().hookBefore(origin, priority, hooker); + } + + @Override + public MethodUnhooker, Method> hookAfter(@NonNull Method origin, int priority, @NonNull AfterMethodHooker hooker) { + return getBaseContext().hookAfter(origin, priority, hooker); + } + + @Override + public MethodUnhooker, Method> hook(@NonNull Method origin, int priority, @NonNull MethodHooker hooker) { + return getBaseContext().hook(origin, priority, hooker); + } + @Override public MethodUnhooker>, Constructor> hookBefore(@NonNull Constructor origin, @NonNull BeforeMethodHooker> hooker) { return getBaseContext().hookBefore(origin, hooker); @@ -75,6 +90,21 @@ public class XposedContextWrapper extends ContextWrapper implements XposedInterf return getBaseContext().hook(origin, hooker); } + @Override + public MethodUnhooker>, Constructor> hookBefore(@NonNull Constructor origin, int priority, @NonNull BeforeMethodHooker> hooker) { + return getBaseContext().hookBefore(origin, priority, hooker); + } + + @Override + public MethodUnhooker>, Constructor> hookAfter(@NonNull Constructor origin, int priority, @NonNull AfterMethodHooker> hooker) { + return getBaseContext().hookAfter(origin, priority, hooker); + } + + @Override + public MethodUnhooker>, Constructor> hook(@NonNull Constructor origin, int priority, @NonNull MethodHooker> hooker) { + return getBaseContext().hook(origin, priority, hooker); + } + @Override public boolean deoptimize(@Nullable Method method) { return getBaseContext().deoptimize(method); diff --git a/api/src/main/java/io/github/libxposed/XposedInterface.java b/api/src/main/java/io/github/libxposed/XposedInterface.java index 06df16f3..c066a19d 100644 --- a/api/src/main/java/io/github/libxposed/XposedInterface.java +++ b/api/src/main/java/io/github/libxposed/XposedInterface.java @@ -57,19 +57,11 @@ public interface XposedInterface { U getExtra(@NonNull String key); } - interface PriorityMethodHooker { - int PRIORITY_DEFAULT = 50; - - default int getPriority() { - return PRIORITY_DEFAULT; - } - } - - interface BeforeMethodHooker extends PriorityMethodHooker { + interface BeforeMethodHooker { void before(@NonNull BeforeHookCallback callback); } - interface AfterMethodHooker extends PriorityMethodHooker { + interface AfterMethodHooker { void after(@NonNull AfterHookCallback callback); } @@ -100,12 +92,24 @@ public interface XposedInterface { MethodUnhooker, Method> hook(@NonNull Method origin, @NonNull MethodHooker hooker); + MethodUnhooker, Method> hookBefore(@NonNull Method origin, int priority, @NonNull BeforeMethodHooker hooker); + + MethodUnhooker, Method> hookAfter(@NonNull Method origin, int priority, @NonNull AfterMethodHooker hooker); + + MethodUnhooker, Method> hook(@NonNull Method origin, int priority, @NonNull MethodHooker hooker); + MethodUnhooker>, Constructor> hookBefore(@NonNull Constructor origin, @NonNull BeforeMethodHooker> hooker); MethodUnhooker>, Constructor> hookAfter(@NonNull Constructor origin, @NonNull AfterMethodHooker> hooker); MethodUnhooker>, Constructor> hook(@NonNull Constructor origin, @NonNull MethodHooker> hooker); + MethodUnhooker>, Constructor> hookBefore(@NonNull Constructor origin, int priority, @NonNull BeforeMethodHooker> hooker); + + MethodUnhooker>, Constructor> hookAfter(@NonNull Constructor origin, int priority, @NonNull AfterMethodHooker> hooker); + + MethodUnhooker>, Constructor> hook(@NonNull Constructor origin, int priority, @NonNull MethodHooker> hooker); + boolean deoptimize(@Nullable Method method); boolean deoptimize(@Nullable Constructor constructor); diff --git a/api/src/main/java/io/github/libxposed/XposedModule.java b/api/src/main/java/io/github/libxposed/XposedModule.java index fc8d9c95..14116842 100644 --- a/api/src/main/java/io/github/libxposed/XposedModule.java +++ b/api/src/main/java/io/github/libxposed/XposedModule.java @@ -6,4 +6,14 @@ public abstract class XposedModule extends XposedContextWrapper implements Xpose public XposedModule(XposedContext base, @SuppressWarnings("unused") @NonNull ModuleLoadedParam param) { super(base); } + + @Override + public void onPackageLoaded(@NonNull PackageLoadedParam param) { + + } + + @Override + public void onResourceLoaded(@NonNull ResourcesLoadedParam param) { + + } } diff --git a/api/src/main/java/io/github/libxposed/XposedModuleInterface.java b/api/src/main/java/io/github/libxposed/XposedModuleInterface.java index 664a6f64..ef1cadcd 100644 --- a/api/src/main/java/io/github/libxposed/XposedModuleInterface.java +++ b/api/src/main/java/io/github/libxposed/XposedModuleInterface.java @@ -51,9 +51,7 @@ public interface XposedModuleInterface { Bundle getExtras(); } - default void onPackageLoaded(@NonNull PackageLoadedParam param) { - } + void onPackageLoaded(@NonNull PackageLoadedParam param); - default void onResourceLoaded(@NonNull ResourcesLoadedParam param) { - } + void onResourceLoaded(@NonNull ResourcesLoadedParam param); } diff --git a/api/src/main/java/io/github/libxposed/XposedTypedArray.java b/api/src/main/java/io/github/libxposed/XposedTypedArray.java index d5cb616c..3f62ae58 100644 --- a/api/src/main/java/io/github/libxposed/XposedTypedArray.java +++ b/api/src/main/java/io/github/libxposed/XposedTypedArray.java @@ -3,7 +3,7 @@ package io.github.libxposed; import android.content.res.Resources; import android.content.res.TypedArray; -public class XposedTypedArray extends TypedArray { +public abstract class XposedTypedArray extends TypedArray { public XposedTypedArray(Resources resources) { super(resources); } diff --git a/core/src/main/java/org/lsposed/lspd/impl/LSPosedContext.java b/core/src/main/java/org/lsposed/lspd/impl/LSPosedContext.java index 9f4d371f..85c35270 100644 --- a/core/src/main/java/org/lsposed/lspd/impl/LSPosedContext.java +++ b/core/src/main/java/org/lsposed/lspd/impl/LSPosedContext.java @@ -150,7 +150,7 @@ public class LSPosedContext extends XposedContext { Log.e(TAG, " This class doesn't implement any sub-interface of XposedModule, skipping it"); } try { - if (moduleClass.getMethod("onResourceLoaded", XposedModuleInterface.ResourcesLoadedParam.class).getDeclaringClass() != XposedModuleInterface.class) { + if (moduleClass.getMethod("onResourceLoaded", XposedModuleInterface.ResourcesLoadedParam.class).getDeclaringClass() != XposedModule.class) { XposedInit.hookResources(); } var moduleEntry = moduleClass.getConstructor(XposedContext.class, XposedModuleInterface.ModuleLoadedParam.class); @@ -758,6 +758,24 @@ public class LSPosedContext extends XposedContext { return null; } + // TODO + @Override + public MethodUnhooker, Method> hookBefore(@NonNull Method origin, int priority, @NonNull BeforeMethodHooker hooker) { + return null; + } + + // TODO + @Override + public MethodUnhooker, Method> hookAfter(@NonNull Method origin, int priority, @NonNull AfterMethodHooker hooker) { + return null; + } + + // TODO + @Override + public MethodUnhooker, Method> hook(@NonNull Method origin, int priority, @NonNull MethodHooker hooker) { + return null; + } + // TODO @Override public MethodUnhooker>, Constructor> hookBefore(@NonNull Constructor origin, @NonNull BeforeMethodHooker> hooker) { @@ -776,6 +794,24 @@ public class LSPosedContext extends XposedContext { return null; } + // TODO + @Override + public MethodUnhooker>, Constructor> hookBefore(@NonNull Constructor origin, int priority, @NonNull BeforeMethodHooker> hooker) { + return null; + } + + // TODO + @Override + public MethodUnhooker>, Constructor> hookAfter(@NonNull Constructor origin, int priority, @NonNull AfterMethodHooker> hooker) { + return null; + } + + // TODO + @Override + public MethodUnhooker>, Constructor> hook(@NonNull Constructor origin, int priority, @NonNull MethodHooker> hooker) { + return null; + } + // TODO @Override public boolean deoptimize(@Nullable Method method) {