From 8c9a88b2d9ddb2ae0cab89a9d90a3a55b27e5e8e Mon Sep 17 00:00:00 2001 From: ksuprynowicz Date: Sun, 4 Jun 2023 00:29:14 +0200 Subject: [PATCH 1/2] Hide private methods from script engine --- libraries/script-engine/src/v8/ScriptObjectV8Proxy.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/libraries/script-engine/src/v8/ScriptObjectV8Proxy.cpp b/libraries/script-engine/src/v8/ScriptObjectV8Proxy.cpp index e2fd9dfaa6..c60eafc80a 100644 --- a/libraries/script-engine/src/v8/ScriptObjectV8Proxy.cpp +++ b/libraries/script-engine/src/v8/ScriptObjectV8Proxy.cpp @@ -271,7 +271,7 @@ void ScriptObjectV8Proxy::investigate() { QMetaMethod method = metaObject->method(idx); // perhaps keep this comment? Calls (like AudioScriptingInterface::playSound) seem to expect non-public methods to be script-accessible - /* if (method.access() != QMetaMethod::Public) continue;*/ + if (method.access() == QMetaMethod::Private) continue; bool isSignal = false; QByteArray szName = method.name(); @@ -389,6 +389,7 @@ ScriptObjectV8Proxy::QueryFlags ScriptObjectV8Proxy::queryProperty(const V8Scrip v8::Local context = _engine->getContext(); v8::Context::Scope contextScope(context); QString nameStr(*v8::String::Utf8Value(isolate, name.constGet())); + // V8TODO: registering methods on V8 side would make API calls a lot faster // check for methods MethodNameMap::const_iterator method = _methodNameMap.find(nameStr); From da9b9f76aff73a5d5098a27bba1fd8106b172e1d Mon Sep 17 00:00:00 2001 From: ksuprynowicz Date: Sun, 4 Jun 2023 01:07:26 +0200 Subject: [PATCH 2/2] Hide QObject signals from script engine and switch off script memory reporting --- libraries/script-engine/src/v8/ScriptObjectV8Proxy.cpp | 6 ++++++ scripts/defaultScripts.js | 4 ++-- scripts/system/controllers/controllerScripts.js | 3 +-- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/libraries/script-engine/src/v8/ScriptObjectV8Proxy.cpp b/libraries/script-engine/src/v8/ScriptObjectV8Proxy.cpp index c60eafc80a..cd9cd46513 100644 --- a/libraries/script-engine/src/v8/ScriptObjectV8Proxy.cpp +++ b/libraries/script-engine/src/v8/ScriptObjectV8Proxy.cpp @@ -280,6 +280,12 @@ void ScriptObjectV8Proxy::investigate() { case QMetaMethod::Constructor: continue; case QMetaMethod::Signal: + if (szName == "destroyed") { + continue; + } + if (szName == "objectNameChanged") { + continue; + } isSignal = true; break; case QMetaMethod::Slot: diff --git a/scripts/defaultScripts.js b/scripts/defaultScripts.js index 8c44910581..d48974dd94 100644 --- a/scripts/defaultScripts.js +++ b/scripts/defaultScripts.js @@ -39,8 +39,8 @@ var DEFAULT_SCRIPTS_COMBINED = [ "system/onEscape.js", "system/onFirstRun.js", "system/appreciate/appreciate_app.js", - "system/places/places.js", - "developer/debugging/scriptMemoryReport.js" + "system/places/places.js" + //"developer/debugging/scriptMemoryReport.js" ]; var DEFAULT_SCRIPTS_SEPARATE = [ "system/controllers/controllerScripts.js", diff --git a/scripts/system/controllers/controllerScripts.js b/scripts/system/controllers/controllerScripts.js index 6eabce512a..928d1fef86 100644 --- a/scripts/system/controllers/controllerScripts.js +++ b/scripts/system/controllers/controllerScripts.js @@ -41,8 +41,7 @@ var CONTOLLER_SCRIPTS = [ "controllerModules/trackedHandTablet.js" ]; -Script.include("../../developer/debugging/scriptMemoryReport.js"); -//Script.include("developer/debugging/scriptMemoryReport.js"); +//Script.include("../../developer/debugging/scriptMemoryReport.js"); var DEBUG_MENU_ITEM = "Debug defaultScripts.js";