package com.lody.virtual.client.hook.patchs.window;
import android.content.Context;
import android.os.Build;
import com.lody.virtual.client.hook.base.Patch;
import com.lody.virtual.client.hook.base.PatchBinderDelegate;
import com.lody.virtual.client.hook.base.StaticHook;
import mirror.android.view.Display;
import mirror.android.view.IWindowManager;
import mirror.android.view.WindowManagerGlobal;
import mirror.com.android.internal.policy.PhoneWindow;
/**
* @author Lody
*/
@Patch({OverridePendingAppTransition.class, OverridePendingAppTransitionInPlace.class, OpenSession.class,
SetAppStartingWindow.class})
public class WindowManagerPatch extends PatchBinderDelegate {
public WindowManagerPatch() {
super(IWindowManager.Stub.TYPE, Context.WINDOW_SERVICE);
}
@Override
public void inject() throws Throwable {
super.inject();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
if (WindowManagerGlobal.sWindowManagerService != null) {
WindowManagerGlobal.sWindowManagerService.set(getHookDelegate().getProxyInterface());
}
} else {
if (Display.sWindowManager != null) {
Display.sWindowManager.set(getHookDelegate().getProxyInterface());
}
}
if (PhoneWindow.TYPE != null) {
PhoneWindow.sWindowManager.set(getHookDelegate().getProxyInterface());
}
}
@Override
protected void onBindHooks() {
super.onBindHooks();
addHook(new StaticHook("addAppToken"));
addHook(new StaticHook("setScreenCaptureDisabled"));
}
}