fix(autojs): use global context factory to enter context to make runtime.loadJar() working

This commit is contained in:
hyb1996
2018-05-22 20:49:06 +08:00
parent 5237ac7ea4
commit 2edb363b39

View File

@@ -7,6 +7,7 @@ import com.stardust.autojs.BuildConfig;
import com.stardust.autojs.rhino.AndroidContextFactory; import com.stardust.autojs.rhino.AndroidContextFactory;
import com.stardust.autojs.rhino.NativeJavaClassWithPrototype; import com.stardust.autojs.rhino.NativeJavaClassWithPrototype;
import com.stardust.autojs.rhino.NativeJavaObjectWithPrototype; import com.stardust.autojs.rhino.NativeJavaObjectWithPrototype;
import com.stardust.autojs.rhino.RhinoAndroidHelper;
import com.stardust.autojs.runtime.exception.ScriptInterruptedException; import com.stardust.autojs.runtime.exception.ScriptInterruptedException;
import com.stardust.autojs.script.JavaScriptSource; import com.stardust.autojs.script.JavaScriptSource;
import com.stardust.autojs.script.StringScriptSource; import com.stardust.autojs.script.StringScriptSource;
@@ -16,6 +17,7 @@ import com.stardust.pio.UncheckedIOException;
import org.mozilla.javascript.Callable; import org.mozilla.javascript.Callable;
import org.mozilla.javascript.Context; import org.mozilla.javascript.Context;
import org.mozilla.javascript.ContextFactory;
import org.mozilla.javascript.ImporterTopLevel; import org.mozilla.javascript.ImporterTopLevel;
import org.mozilla.javascript.NativeJavaClass; import org.mozilla.javascript.NativeJavaClass;
import org.mozilla.javascript.NativeJavaObject; import org.mozilla.javascript.NativeJavaObject;
@@ -146,10 +148,10 @@ public class RhinoJavaScriptEngine extends JavaScriptEngine {
} }
public Context createContext() { public Context createContext() {
// if (!ContextFactory.hasExplicitGlobal()) { if (!ContextFactory.hasExplicitGlobal()) {
// ContextFactory.initGlobal(new InterruptibleAndroidContextFactory(new File(mAndroidContext.getCacheDir(), "classes"))); ContextFactory.initGlobal(new InterruptibleAndroidContextFactory(new File(mAndroidContext.getCacheDir(), "classes")));
//} }
Context context = new InterruptibleAndroidContextFactory(new File(mAndroidContext.getCacheDir(), "classes")).enterContext();//new RhinoAndroidHelper(mAndroidContext).enterContext(); Context context = new RhinoAndroidHelper(mAndroidContext).enterContext();
contextCount++; contextCount++;
setupContext(context); setupContext(context);
return context; return context;
@@ -177,7 +179,7 @@ public class RhinoJavaScriptEngine extends JavaScriptEngine {
} }
} }
private class InterruptibleAndroidContextFactory extends AndroidContextFactory { private static class InterruptibleAndroidContextFactory extends AndroidContextFactory {
public InterruptibleAndroidContextFactory(File cacheDirectory) { public InterruptibleAndroidContextFactory(File cacheDirectory) {
super(cacheDirectory); super(cacheDirectory);