From 58b0db74ccecf07cb2c9cb87a1b9a90006e28489 Mon Sep 17 00:00:00 2001 From: Sidhanth B H Date: Mon, 16 Jun 2025 18:20:15 +0530 Subject: [PATCH 1/3] testing commit donot merge --- include/JavaScriptContextBase.h | 4 ++ src/JavaScriptContextBase.cpp | 67 ++++++++++++++++++++++++++------- src/jsc/JavaScriptContext.cpp | 37 ++++++++++-------- 3 files changed, 78 insertions(+), 30 deletions(-) diff --git a/include/JavaScriptContextBase.h b/include/JavaScriptContextBase.h index 412ae26..37f3d6b 100644 --- a/include/JavaScriptContextBase.h +++ b/include/JavaScriptContextBase.h @@ -68,5 +68,9 @@ class JavaScriptContextBase:public IJavaScriptContext, public JavaScriptKeyListe bool mEmbedWebBridge; bool mEnableWebSockerServer; ModuleSettings mModuleSettings; + + static std::string sModulesPath; + static void populateModulesPath(); + }; #endif diff --git a/src/JavaScriptContextBase.cpp b/src/JavaScriptContextBase.cpp index c649c94..89bce0d 100644 --- a/src/JavaScriptContextBase.cpp +++ b/src/JavaScriptContextBase.cpp @@ -25,9 +25,12 @@ #ifdef ENABLE_ESSOS #include #endif +#include +#include std::string JavaScriptContextBase::sThunderJSCode = ""; std::string JavaScriptContextBase::sWebBridgeCode = ""; +std::string JavaScriptContextBase::sModulesPath = "" ; JavaScriptContextFeatures::JavaScriptContextFeatures(bool embedThunderJS, bool embedWebBridge, bool enableWebSockerServer, ModuleSettings& moduleSettings):mEmbedThunderJS(embedThunderJS), mEmbedWebBridge(embedWebBridge), mEnableWebSockerServer(enableWebSockerServer), mModuleSettings(moduleSettings) { @@ -35,20 +38,22 @@ JavaScriptContextFeatures::JavaScriptContextFeatures(bool embedThunderJS, bool e JavaScriptContextBase::JavaScriptContextBase(JavaScriptContextFeatures& features, std::string url, IJavaScriptEngine* jsEngine): mApplicationUrl(url), mEngine(jsEngine), mEmbedThunderJS(features.mEmbedThunderJS), mEmbedWebBridge(features.mEmbedWebBridge), mEnableWebSockerServer(features.mEnableWebSockerServer), mModuleSettings(features.mModuleSettings) { + populateModulesPath(); if (mEmbedThunderJS) { if (sThunderJSCode.empty()) - { - sThunderJSCode = readFile("modules/thunderJS.js"); + { + sThunderJSCode = readFile("thunderJS.js"); } } if (mEmbedWebBridge) { if (sWebBridgeCode.empty()) - { - sWebBridgeCode = readFile("modules/webbridgesdk.js"); + { + sWebBridgeCode = readFile("webbridgesdk.js"); } } + #ifdef ENABLE_ESSOS EssosInstance::instance()->registerKeyListener(this); #endif @@ -75,9 +80,25 @@ void JavaScriptContextBase::registerCommonUtils() std::string JavaScriptContextBase::readFile(const char *file) { - std::ifstream src_file(file); + bool isModules = true; + std::ifstream src_file; std::stringstream src_script; - src_script << src_file.rdbuf(); + struct stat path; + if(stat(file.c_str(), &path) == 0) + { + isModule=false; + } + if(!isModules) + { + src_file.open(file); + src_script << src_file.rdbuf(); + } + else{ + std::string fileName=sModulesPath; + fileName.append(file); + src_file.open(fileName); + src_script << src_file.rdbuf(); + } return src_script.str(); } @@ -85,7 +106,7 @@ bool JavaScriptContextBase::runFile(const char *file, const char* args, bool isA { if (!file) { - NativeJSLogger::log(WARN, "%s ... no script given.\n", __PRETTY_FUNCTION__); + NativeJSLogger::log(" %s ... no script given.",__PRETTY_FUNCTION__); fflush(stdout); return false; } @@ -94,16 +115,9 @@ bool JavaScriptContextBase::runFile(const char *file, const char* args, bool isA scriptToRun = readFile(file); if(scriptToRun.empty()) { - std::string fileName("/home/root/"); - fileName.append(file); - scriptToRun = readFile(fileName.c_str()); - NativeJSLogger::log(INFO, "Checking in [%s]\n", fileName.c_str()); - if(scriptToRun.empty()) - { NativeJSLogger::log(ERROR, "%s ... load error / not found. %s\n", __PRETTY_FUNCTION__, file); fflush(stdout); return false; - } } return evaluateScript(scriptToRun.c_str(), isApplication?file:nullptr, args, isApplication); } @@ -127,3 +141,28 @@ void JavaScriptContextBase::onKeyRelease(struct JavaScriptKeyDetails& details) { processKeyEvent(details, false); } + +void JavaScriptContextBase::populateModulesPath(){ + if(getenv("JSRUNTIME_MODULES_PATH")) + { + std::cout<<"JSRUNTIME_MODULES_PATH variable is set"< Date: Tue, 17 Jun 2025 17:59:02 +0530 Subject: [PATCH 2/3] Testing commit Do not merge --- src/JavaScriptContextBase.cpp | 17 +++++++++-------- src/jsc/JavaScriptContext.cpp | 2 ++ 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/src/JavaScriptContextBase.cpp b/src/JavaScriptContextBase.cpp index 89bce0d..f08d0b1 100644 --- a/src/JavaScriptContextBase.cpp +++ b/src/JavaScriptContextBase.cpp @@ -84,9 +84,9 @@ std::string JavaScriptContextBase::readFile(const char *file) std::ifstream src_file; std::stringstream src_script; struct stat path; - if(stat(file.c_str(), &path) == 0) + if(stat(file, &path) == 0) { - isModule=false; + isModules=false; } if(!isModules) { @@ -106,17 +106,18 @@ bool JavaScriptContextBase::runFile(const char *file, const char* args, bool isA { if (!file) { - NativeJSLogger::log(" %s ... no script given.",__PRETTY_FUNCTION__); - fflush(stdout); + NativeJSLogger::log(WARN, "%s ... no script given.\n", __PRETTY_FUNCTION__); + fflush(stdout); return false; } std::string scriptToRun; scriptToRun = readFile(file); + NativeJSLogger::log(INFO, "Checking in [%s]\n", file); if(scriptToRun.empty()) { NativeJSLogger::log(ERROR, "%s ... load error / not found. %s\n", __PRETTY_FUNCTION__, file); - fflush(stdout); + fflush(stdout); return false; } return evaluateScript(scriptToRun.c_str(), isApplication?file:nullptr, args, isApplication); @@ -158,11 +159,11 @@ void JavaScriptContextBase::populateModulesPath(){ { PWD = "/runtime"; } - sModulesPath=PWD+"/modules/"; - setenv("JSRUNTIME_MODULES_PATH",sModulesPath.c_str(),1) + sModulesPath=PWD+"/modules/"; + setenv("JSRUNTIME_MODULES_PATH",sModulesPath.c_str(),1); } - std::cout<<"Modules Path:"< #endif #endif +#include +#include extern "C" JS_EXPORT void JSSynchronousGarbageCollectForDebugging(JSContextRef); #ifdef ENABLE_AAMP_JSBINDINGS_STATIC From d60ea20d602a08a90236f2f35fec9ff9663b4ff8 Mon Sep 17 00:00:00 2001 From: Sidhanth B H Date: Wed, 18 Jun 2025 10:41:40 +0530 Subject: [PATCH 3/3] RDKEMW-3106 : Ensure modules path works in all environments Reason for change: Cleaned up the code Test Procedure: build should be successful. Risks: low Priority: P2 --- src/JavaScriptContextBase.cpp | 15 ++++----------- src/jsc/JavaScriptContext.cpp | 9 ++------- 2 files changed, 6 insertions(+), 18 deletions(-) diff --git a/src/JavaScriptContextBase.cpp b/src/JavaScriptContextBase.cpp index f08d0b1..fdb6b7e 100644 --- a/src/JavaScriptContextBase.cpp +++ b/src/JavaScriptContextBase.cpp @@ -84,12 +84,10 @@ std::string JavaScriptContextBase::readFile(const char *file) std::ifstream src_file; std::stringstream src_script; struct stat path; - if(stat(file, &path) == 0) - { + if(stat(file, &path) == 0){ isModules=false; } - if(!isModules) - { + if(!isModules){ src_file.open(file); src_script << src_file.rdbuf(); } @@ -110,7 +108,6 @@ bool JavaScriptContextBase::runFile(const char *file, const char* args, bool isA fflush(stdout); return false; } - std::string scriptToRun; scriptToRun = readFile(file); NativeJSLogger::log(INFO, "Checking in [%s]\n", file); @@ -144,24 +141,20 @@ void JavaScriptContextBase::onKeyRelease(struct JavaScriptKeyDetails& details) } void JavaScriptContextBase::populateModulesPath(){ - if(getenv("JSRUNTIME_MODULES_PATH")) - { + if(getenv("JSRUNTIME_MODULES_PATH")){ std::cout<<"JSRUNTIME_MODULES_PATH variable is set"< #endif #endif -#include +#include #include extern "C" JS_EXPORT void JSSynchronousGarbageCollectForDebugging(JSContextRef); @@ -417,14 +417,12 @@ if (mModuleSettings.enablePlayer) { runFile("http.js", nullptr); runFile("https.js", nullptr); - } if (mModuleSettings.enableFetch) { runFile("node-fetch.js" , nullptr/*, true*/); } runFile("utils.js", nullptr); - if (mModuleSettings.enableWebSocketEnhanced) { runFile("event.js", nullptr); @@ -438,7 +436,7 @@ if (mModuleSettings.enablePlayer) if (mEnableWebSockerServer) { NativeJSLogger::log(INFO, "enabling websocket server\n"); - runFile("wsserver.js", nullptr); + runFile("wsserver.js", nullptr); } #endif if (mModuleSettings.enableWindow) @@ -556,6 +554,3 @@ void JavaScriptContext::setPlaybackStartTime(double time) double launchTime = mPerformanceMetrics.playbackStartTime - mPerformanceMetrics.createApplicationStartTime; NativeJSLogger::log(INFO, "Launch_Duration for ID %d | URL %s : %.3f ms\n", mIds, mUrls.c_str(), launchTime); } - - -