Implemented missing Lua features
This commit is contained in:
@@ -2,7 +2,6 @@ package org.openautonomousconnection.webclient.settings;
|
||||
|
||||
import org.openautonomousconnection.luascript.security.LuaExecutionPolicy;
|
||||
|
||||
import java.time.Duration;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
@@ -187,6 +186,6 @@ public final class AppSettings {
|
||||
* Resets the Lua policy back to ui default.
|
||||
*/
|
||||
public void resetLuaPolicyToUiDefault() {
|
||||
this.luaPolicy = new LuaExecutionPolicy(Duration.ofMillis(50L), 200_000L, 5_000);
|
||||
this.luaPolicy = LuaExecutionPolicy.uiDefault();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ import javafx.concurrent.Worker;
|
||||
import javafx.scene.web.WebEngine;
|
||||
import javafx.scene.web.WebView;
|
||||
import org.luaj.vm2.Globals;
|
||||
import org.luaj.vm2.LuaError;
|
||||
import org.openautonomousconnection.luascript.fx.FxDomHost;
|
||||
import org.openautonomousconnection.luascript.fx.FxEventHost;
|
||||
import org.openautonomousconnection.luascript.fx.FxWebViewResourceHost;
|
||||
@@ -11,6 +12,8 @@ import org.openautonomousconnection.luascript.hosts.HostServices;
|
||||
import org.openautonomousconnection.luascript.runtime.LuaRuntime;
|
||||
import org.openautonomousconnection.luascript.security.LuaExecutionPolicy;
|
||||
import org.openautonomousconnection.luascript.utils.LuaGlobalsFactory;
|
||||
import org.openautonomousconnection.oacswing.component.OACOptionPane;
|
||||
import org.openautonomousconnection.webclient.Main;
|
||||
import org.openautonomousconnection.webclient.lua.WebLogger;
|
||||
import org.openautonomousconnection.webclient.lua.hosts.ConsoleHostImpl;
|
||||
import org.openautonomousconnection.webclient.lua.hosts.UiHostImpl;
|
||||
@@ -95,17 +98,19 @@ public final class FxEngine implements AutoCloseable {
|
||||
ConsoleHostImpl console = new ConsoleHostImpl(logger);
|
||||
UiHostImpl uiHost = new UiHostImpl(engine, webView, dom);
|
||||
FxWebViewResourceHost resourceHost = new FxWebViewResourceHost(engine);
|
||||
|
||||
LuaRuntime rt = new LuaRuntime(globals, new HostServices.Default(uiHost, dom, null, resourceHost, console), policy);
|
||||
|
||||
FxEventHost eventHost = new FxEventHost(dom, rt.eventRouter());
|
||||
FxEventHost eventHost = new FxEventHost(dom);
|
||||
HostServices services = new HostServices.Default(uiHost, dom, eventHost, resourceHost, console);
|
||||
|
||||
rt.close();
|
||||
rt = new LuaRuntime(globals, services, policy);
|
||||
LuaRuntime rt = new LuaRuntime(globals, services, policy);
|
||||
eventHost.setRouter(rt.eventRouter());
|
||||
|
||||
rt.installStdTables(true);
|
||||
rt.bootstrapFromDom();
|
||||
|
||||
try {
|
||||
rt.bootstrapFromDom();
|
||||
} catch (LuaError error) {
|
||||
Main.getLogger().exception("Failed to start script", error);
|
||||
OACOptionPane.showMessageDialog(Main.getUi(), error.getMessage(), "Script", OACOptionPane.ERROR_MESSAGE);
|
||||
}
|
||||
|
||||
this.runtime = rt;
|
||||
}
|
||||
@@ -135,4 +140,4 @@ public final class FxEngine implements AutoCloseable {
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -87,9 +87,10 @@ public final class SettingsManager {
|
||||
}
|
||||
|
||||
// Lua policy
|
||||
long timeoutMs = parseLong(p.getProperty("lua.timeoutMs"), 50L);
|
||||
long instr = parseLong(p.getProperty("lua.instructionLimit"), 200_000L);
|
||||
int hook = parseInt(p.getProperty("lua.hookStep"), 5_000);
|
||||
LuaExecutionPolicy defaultPolicy = LuaExecutionPolicy.uiDefault();
|
||||
long timeoutMs = parseLong(p.getProperty("lua.timeoutMs"), defaultPolicy.timeout().toMillis());
|
||||
long instr = parseLong(p.getProperty("lua.instructionLimit"), defaultPolicy.instructionLimit());
|
||||
int hook = parseInt(p.getProperty("lua.hookStep"), defaultPolicy.hookStep());
|
||||
try {
|
||||
s.setLuaPolicy(new LuaExecutionPolicy(Duration.ofMillis(timeoutMs), instr, hook));
|
||||
} catch (Exception ignored) {
|
||||
@@ -187,4 +188,4 @@ public final class SettingsManager {
|
||||
return def;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user