mirror of
https://github.com/revanced/smali.git
synced 2025-05-05 17:14:25 +02:00
Add missing read actions in SmaliPositionManager
This commit is contained in:
parent
fa13b13bbd
commit
a15fc84ace
@ -38,6 +38,7 @@ import com.intellij.debugger.engine.DebugProcess;
|
|||||||
import com.intellij.debugger.requests.ClassPrepareRequestor;
|
import com.intellij.debugger.requests.ClassPrepareRequestor;
|
||||||
import com.intellij.openapi.application.ApplicationManager;
|
import com.intellij.openapi.application.ApplicationManager;
|
||||||
import com.intellij.openapi.util.Computable;
|
import com.intellij.openapi.util.Computable;
|
||||||
|
import com.intellij.psi.PsiFile;
|
||||||
import com.intellij.psi.search.GlobalSearchScope;
|
import com.intellij.psi.search.GlobalSearchScope;
|
||||||
import com.sun.jdi.Location;
|
import com.sun.jdi.Location;
|
||||||
import com.sun.jdi.ReferenceType;
|
import com.sun.jdi.ReferenceType;
|
||||||
@ -60,10 +61,16 @@ public class SmaliPositionManager implements PositionManager {
|
|||||||
this.debugProcess = debugProcess;
|
this.debugProcess = debugProcess;
|
||||||
}
|
}
|
||||||
|
|
||||||
public SourcePosition getSourcePosition(String declaringType, String methodName, String methodSignature,
|
public SourcePosition getSourcePosition(final String declaringType, String methodName, String methodSignature,
|
||||||
int codeIndex) throws NoDataException {
|
int codeIndex) throws NoDataException {
|
||||||
Collection<SmaliClass> classes = SmaliClassNameIndex.INSTANCE.get(declaringType,
|
|
||||||
debugProcess.getProject(), GlobalSearchScope.projectScope(debugProcess.getProject()));
|
Collection<SmaliClass> classes = ApplicationManager.getApplication().runReadAction(
|
||||||
|
new Computable<Collection<SmaliClass>>() {
|
||||||
|
@Override public Collection<SmaliClass> compute() {
|
||||||
|
return SmaliClassNameIndex.INSTANCE.get(declaringType, debugProcess.getProject(),
|
||||||
|
GlobalSearchScope.projectScope(debugProcess.getProject()));
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
if (classes.size() > 0) {
|
if (classes.size() > 0) {
|
||||||
SmaliClass smaliClass = classes.iterator().next();
|
SmaliClass smaliClass = classes.iterator().next();
|
||||||
@ -116,7 +123,13 @@ public class SmaliPositionManager implements PositionManager {
|
|||||||
@Override @NotNull
|
@Override @NotNull
|
||||||
public List<Location> locationsOfLine(@NotNull final ReferenceType type,
|
public List<Location> locationsOfLine(@NotNull final ReferenceType type,
|
||||||
@NotNull final SourcePosition position) throws NoDataException {
|
@NotNull final SourcePosition position) throws NoDataException {
|
||||||
if (!(position.getElementAt().getContainingFile() instanceof SmaliFile)) {
|
PsiFile containingFile = ApplicationManager.getApplication().runReadAction(new Computable<PsiFile>() {
|
||||||
|
@Override public PsiFile compute() {
|
||||||
|
return position.getElementAt().getContainingFile();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
if (!(containingFile instanceof SmaliFile)) {
|
||||||
throw NoDataException.INSTANCE;
|
throw NoDataException.INSTANCE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -125,6 +138,8 @@ public class SmaliPositionManager implements PositionManager {
|
|||||||
ApplicationManager.getApplication().runReadAction(new Runnable() {
|
ApplicationManager.getApplication().runReadAction(new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
|
|
||||||
|
|
||||||
String typeName = type.name();
|
String typeName = type.name();
|
||||||
Collection<SmaliClass> classes = SmaliClassNameIndex.INSTANCE.get(typeName, debugProcess.getProject(),
|
Collection<SmaliClass> classes = SmaliClassNameIndex.INSTANCE.get(typeName, debugProcess.getProject(),
|
||||||
GlobalSearchScope.projectScope(debugProcess.getProject()));
|
GlobalSearchScope.projectScope(debugProcess.getProject()));
|
||||||
|
Loading…
x
Reference in New Issue
Block a user