From d8faa441df1ab3e46f38423e3a3d65e51c32ee49 Mon Sep 17 00:00:00 2001 From: Sidhanth B H Date: Tue, 8 Apr 2025 14:01:28 +0530 Subject: [PATCH 1/6] RDKEMW-3106 : Module Path in generic way Reason for change: Cleaned up the code Test Procedure: build should be successful. Risks: low Priority: P2 --- include/JavaScriptContextBase.h | 8 ++++ src/JavaScriptContextBase.cpp | 71 ++++++++++++++++++++++++++++++--- src/jsc/JavaScriptContext.cpp | 49 ++++++++++++++--------- 3 files changed, 105 insertions(+), 23 deletions(-) diff --git a/include/JavaScriptContextBase.h b/include/JavaScriptContextBase.h index 412ae26..b1d0383 100644 --- a/include/JavaScriptContextBase.h +++ b/include/JavaScriptContextBase.h @@ -55,6 +55,10 @@ class JavaScriptContextBase:public IJavaScriptContext, public JavaScriptKeyListe std::string getUrl(); virtual void onKeyPress(struct JavaScriptKeyDetails& details); virtual void onKeyRelease(struct JavaScriptKeyDetails& details); + + //newly added + static void setEnvVariable(const char* name, const char* value); + protected: virtual void processKeyEvent(struct JavaScriptKeyDetails& details, bool keyPress) = 0; virtual bool evaluateScript(const char* script, const char* name, const char *args, bool module=false) = 0; @@ -68,5 +72,9 @@ class JavaScriptContextBase:public IJavaScriptContext, public JavaScriptKeyListe bool mEmbedWebBridge; bool mEnableWebSockerServer; ModuleSettings mModuleSettings; + + //newly added + static std::string sModulesPath; + std::string getModulesPath(); }; #endif diff --git a/src/JavaScriptContextBase.cpp b/src/JavaScriptContextBase.cpp index 117b3e8..39c69cd 100644 --- a/src/JavaScriptContextBase.cpp +++ b/src/JavaScriptContextBase.cpp @@ -25,27 +25,40 @@ #include #endif +//newly added +#include +#include + std::string JavaScriptContextBase::sThunderJSCode = ""; std::string JavaScriptContextBase::sWebBridgeCode = ""; +//newly added +std::string JavaScriptContextBase::sModulesPath = "" ; + JavaScriptContextFeatures::JavaScriptContextFeatures(bool embedThunderJS, bool embedWebBridge, bool enableWebSockerServer, ModuleSettings& moduleSettings):mEmbedThunderJS(embedThunderJS), mEmbedWebBridge(embedWebBridge), mEnableWebSockerServer(enableWebSockerServer), mModuleSettings(moduleSettings) { } 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) { +//newly added + JavaScriptContextBase::setEnvVariable("JSRUNTIME_MODULES_PATH", ""); + + sModulesPath = std::getenv("JSRUNTIME_MODULES_PATH"); + getModulesPath(); + if (mEmbedThunderJS) { if (sThunderJSCode.empty()) { - sThunderJSCode = readFile("modules/thunderJS.js"); + sThunderJSCode = readFile(sModulesPath.c_str()); } } if (mEmbedWebBridge) { if (sWebBridgeCode.empty()) { - sWebBridgeCode = readFile("modules/webbridgesdk.js"); + sWebBridgeCode = readFile(sModulesPath.c_str()); } } #ifdef ENABLE_ESSOS @@ -93,10 +106,13 @@ bool JavaScriptContextBase::runFile(const char *file, const char* args, bool isA scriptToRun = readFile(file); if(scriptToRun.empty()) { - std::string fileName("/home/root/"); + //newly added + std::string fileName=sModulesPath; fileName.append(file); - scriptToRun = readFile(fileName.c_str()); - printf("checking in [%s] \n", fileName.c_str()); + std::cout << "File:" << fileName << std::endl; + + scriptToRun = readFile(fileName.c_str()); + //printf("checking in [%s] \n", fileName.c_str()); if(scriptToRun.empty()) { printf(" %s ... load error / not found. %s",__PRETTY_FUNCTION__, file); @@ -104,6 +120,9 @@ bool JavaScriptContextBase::runFile(const char *file, const char* args, bool isA return false; } } + //newly added + std::cout<<"File:" << file << std::endl; + return evaluateScript(scriptToRun.c_str(), isApplication?file:nullptr, args, isApplication); } @@ -126,3 +145,45 @@ void JavaScriptContextBase::onKeyRelease(struct JavaScriptKeyDetails& details) { processKeyEvent(details, false); } + +//newly added +void JavaScriptContextBase::setEnvVariable(const char* name, const char* value) { + if (setenv(name, value, 1) == 0) { + std::cout << "Environment variable set: " << name << std::endl; + } else { + std::cerr << "Failed to set environment variable!" << std::endl; + } +} +std::string JavaScriptContextBase::getModulesPath(){ + if(!sModulesPath.empty()){ + return sModulesPath; + } + else{ + struct stat info; + std::string home; + char* cwd = getcwd(nullptr,0); + std::string PWD=cwd; + if (stat("/home/root/modules/", &info) == 0 && (info.st_mode & S_IFDIR)){ + home =PWD + "/home/root/modules/"; + } + else if(stat("/runtime/modules/", &info) == 0 && (info.st_mode & S_IFDIR)){ + home = PWD + "/runtime/modules/"; + } + else if("/modules/", &info) == 0 && (info.st_mode & S_IFDIR)){ + home = PWD +"/modules/"; + } + else{ + std::cerr << "Modules Directory not found!" << std::endl; + } + sModulesPath = home; + if(setenv("JSRUNTIME_MODULES_PATH",home.c_str(),1)==0){ + std::cout<<"JSRUNTIME_MODULES_PATH:"< Date: Tue, 8 Apr 2025 14:10:35 +0530 Subject: [PATCH 2/6] RDKEMW-3106 : added new if statement Reason for change: Cleaned up the code Test Procedure: build should be successful. Risks: low Priority: P2 --- src/JavaScriptContextBase.cpp | 8 +++++--- src/jsc/JavaScriptContext.cpp | 4 ++++ 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/JavaScriptContextBase.cpp b/src/JavaScriptContextBase.cpp index 39c69cd..2e669c3 100644 --- a/src/JavaScriptContextBase.cpp +++ b/src/JavaScriptContextBase.cpp @@ -51,14 +51,16 @@ JavaScriptContextBase::JavaScriptContextBase(JavaScriptContextFeatures& features { if (sThunderJSCode.empty()) { - sThunderJSCode = readFile(sModulesPath.c_str()); + std::string ThunderJS= sModulesPath + "thunderJS.js" + sThunderJSCode = readFile(ThunderJS.c_str()); } } if (mEmbedWebBridge) { if (sWebBridgeCode.empty()) - { - sWebBridgeCode = readFile(sModulesPath.c_str()); + { + std::string WebBridge = sModulesPath + "webbridgesdk.js" + sWebBridgeCode = readFile(WebBridge.c_str()); } } #ifdef ENABLE_ESSOS diff --git a/src/jsc/JavaScriptContext.cpp b/src/jsc/JavaScriptContext.cpp index 08f2b4a..65010cd 100644 --- a/src/jsc/JavaScriptContext.cpp +++ b/src/jsc/JavaScriptContext.cpp @@ -388,6 +388,10 @@ if (mModuleSettings.enablePlayer) }; injectFun(mContext, "require", requireCallback); //Module Path Changes + if(mModuleSettings.enablePlayer) + { + runFile("video.js", nullptr); + } if (mModuleSettings.enableXHR) { std::string xhr = "xhr.js"; From 093e915ba33483d4e95ab5a33e49bf2a23236be9 Mon Sep 17 00:00:00 2001 From: "Jain, Vinod Kumar" Date: Fri, 11 Apr 2025 14:50:35 -0500 Subject: [PATCH 3/6] RDKEMW-3106 : Module Path in generic way Reason for change: Removed unwanted comments newly added Test Procedure: build should be successful. Risks: low Priority: P2 --- include/JavaScriptContextBase.h | 8 +-- src/JavaScriptContextBase.cpp | 119 ++++++++++++++------------------ src/jsc/JavaScriptContext.cpp | 51 +++++--------- 3 files changed, 72 insertions(+), 106 deletions(-) diff --git a/include/JavaScriptContextBase.h b/include/JavaScriptContextBase.h index b1d0383..dba8f89 100644 --- a/include/JavaScriptContextBase.h +++ b/include/JavaScriptContextBase.h @@ -55,10 +55,6 @@ class JavaScriptContextBase:public IJavaScriptContext, public JavaScriptKeyListe std::string getUrl(); virtual void onKeyPress(struct JavaScriptKeyDetails& details); virtual void onKeyRelease(struct JavaScriptKeyDetails& details); - - //newly added - static void setEnvVariable(const char* name, const char* value); - protected: virtual void processKeyEvent(struct JavaScriptKeyDetails& details, bool keyPress) = 0; virtual bool evaluateScript(const char* script, const char* name, const char *args, bool module=false) = 0; @@ -73,8 +69,8 @@ class JavaScriptContextBase:public IJavaScriptContext, public JavaScriptKeyListe bool mEnableWebSockerServer; ModuleSettings mModuleSettings; - //newly added static std::string sModulesPath; - std::string getModulesPath(); + static std::string getModulesPath(); + }; #endif diff --git a/src/JavaScriptContextBase.cpp b/src/JavaScriptContextBase.cpp index 2e669c3..862fc06 100644 --- a/src/JavaScriptContextBase.cpp +++ b/src/JavaScriptContextBase.cpp @@ -24,15 +24,11 @@ #ifdef ENABLE_ESSOS #include #endif - -//newly added -#include -#include +#include +#include std::string JavaScriptContextBase::sThunderJSCode = ""; std::string JavaScriptContextBase::sWebBridgeCode = ""; - -//newly added std::string JavaScriptContextBase::sModulesPath = "" ; JavaScriptContextFeatures::JavaScriptContextFeatures(bool embedThunderJS, bool embedWebBridge, bool enableWebSockerServer, ModuleSettings& moduleSettings):mEmbedThunderJS(embedThunderJS), mEmbedWebBridge(embedWebBridge), mEnableWebSockerServer(enableWebSockerServer), mModuleSettings(moduleSettings) @@ -41,28 +37,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) { -//newly added - JavaScriptContextBase::setEnvVariable("JSRUNTIME_MODULES_PATH", ""); - - sModulesPath = std::getenv("JSRUNTIME_MODULES_PATH"); getModulesPath(); - if (mEmbedThunderJS) { if (sThunderJSCode.empty()) - { - std::string ThunderJS= sModulesPath + "thunderJS.js" - sThunderJSCode = readFile(ThunderJS.c_str()); + { + sThunderJSCode = readFile("thunderJS.js"); } } if (mEmbedWebBridge) { if (sWebBridgeCode.empty()) { - std::string WebBridge = sModulesPath + "webbridgesdk.js" - sWebBridgeCode = readFile(WebBridge.c_str()); + sWebBridgeCode = readFile("webbridgesdk.js"); } } + #ifdef ENABLE_ESSOS EssosInstance::instance()->registerKeyListener(this); #endif @@ -92,6 +82,22 @@ std::string JavaScriptContextBase::readFile(const char *file) std::ifstream src_file(file); std::stringstream src_script; src_script << src_file.rdbuf(); + if(src_script.str().empty()) + { + std::string fileName=sModulesPath; + fileName.append(file); + struct stat path; + if (stat(fileName.c_str(), &path) == 0) { + std::cout << "File exists at: " << fileName << std::endl; + std::ifstream src_file(fileName.c_str()); + src_script.str(""); + src_script.clear(); + src_script << src_file.rdbuf(); + } + else { + std::cout << file << "does not exist at: " << fileName << std::endl; + } + } return src_script.str(); } @@ -108,23 +114,10 @@ bool JavaScriptContextBase::runFile(const char *file, const char* args, bool isA scriptToRun = readFile(file); if(scriptToRun.empty()) { - //newly added - std::string fileName=sModulesPath; - fileName.append(file); - std::cout << "File:" << fileName << std::endl; - - scriptToRun = readFile(fileName.c_str()); - //printf("checking in [%s] \n", fileName.c_str()); - if(scriptToRun.empty()) - { printf(" %s ... load error / not found. %s",__PRETTY_FUNCTION__, file); fflush(stdout); return false; - } } - //newly added - std::cout<<"File:" << file << std::endl; - return evaluateScript(scriptToRun.c_str(), isApplication?file:nullptr, args, isApplication); } @@ -148,44 +141,34 @@ void JavaScriptContextBase::onKeyRelease(struct JavaScriptKeyDetails& details) processKeyEvent(details, false); } -//newly added -void JavaScriptContextBase::setEnvVariable(const char* name, const char* value) { - if (setenv(name, value, 1) == 0) { - std::cout << "Environment variable set: " << name << std::endl; - } else { - std::cerr << "Failed to set environment variable!" << std::endl; - } -} std::string JavaScriptContextBase::getModulesPath(){ - if(!sModulesPath.empty()){ - return sModulesPath; - } - else{ - struct stat info; - std::string home; - char* cwd = getcwd(nullptr,0); - std::string PWD=cwd; - if (stat("/home/root/modules/", &info) == 0 && (info.st_mode & S_IFDIR)){ - home =PWD + "/home/root/modules/"; - } - else if(stat("/runtime/modules/", &info) == 0 && (info.st_mode & S_IFDIR)){ - home = PWD + "/runtime/modules/"; - } - else if("/modules/", &info) == 0 && (info.st_mode & S_IFDIR)){ - home = PWD +"/modules/"; - } - else{ - std::cerr << "Modules Directory not found!" << std::endl; - } - sModulesPath = home; - if(setenv("JSRUNTIME_MODULES_PATH",home.c_str(),1)==0){ - std::cout<<"JSRUNTIME_MODULES_PATH:"< Date: Tue, 8 Apr 2025 14:01:28 +0530 Subject: [PATCH 4/6] RDKEMW-3106 : Module Path in generic way Reason for change: Cleaned up the code Test Procedure: build should be successful. Risks: low Priority: P2 --- include/JavaScriptContextBase.h | 8 ++++ src/JavaScriptContextBase.cpp | 65 +++++++++++++++++++++++++++++++-- src/jsc/JavaScriptContext.cpp | 37 ++++++++++++------- 3 files changed, 93 insertions(+), 17 deletions(-) diff --git a/include/JavaScriptContextBase.h b/include/JavaScriptContextBase.h index 412ae26..b1d0383 100644 --- a/include/JavaScriptContextBase.h +++ b/include/JavaScriptContextBase.h @@ -55,6 +55,10 @@ class JavaScriptContextBase:public IJavaScriptContext, public JavaScriptKeyListe std::string getUrl(); virtual void onKeyPress(struct JavaScriptKeyDetails& details); virtual void onKeyRelease(struct JavaScriptKeyDetails& details); + + //newly added + static void setEnvVariable(const char* name, const char* value); + protected: virtual void processKeyEvent(struct JavaScriptKeyDetails& details, bool keyPress) = 0; virtual bool evaluateScript(const char* script, const char* name, const char *args, bool module=false) = 0; @@ -68,5 +72,9 @@ class JavaScriptContextBase:public IJavaScriptContext, public JavaScriptKeyListe bool mEmbedWebBridge; bool mEnableWebSockerServer; ModuleSettings mModuleSettings; + + //newly added + static std::string sModulesPath; + std::string getModulesPath(); }; #endif diff --git a/src/JavaScriptContextBase.cpp b/src/JavaScriptContextBase.cpp index c649c94..3f5f21c 100644 --- a/src/JavaScriptContextBase.cpp +++ b/src/JavaScriptContextBase.cpp @@ -26,27 +26,40 @@ #include #endif +//newly added +#include +#include + std::string JavaScriptContextBase::sThunderJSCode = ""; std::string JavaScriptContextBase::sWebBridgeCode = ""; +//newly added +std::string JavaScriptContextBase::sModulesPath = "" ; + JavaScriptContextFeatures::JavaScriptContextFeatures(bool embedThunderJS, bool embedWebBridge, bool enableWebSockerServer, ModuleSettings& moduleSettings):mEmbedThunderJS(embedThunderJS), mEmbedWebBridge(embedWebBridge), mEnableWebSockerServer(enableWebSockerServer), mModuleSettings(moduleSettings) { } 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) { +//newly added + JavaScriptContextBase::setEnvVariable("JSRUNTIME_MODULES_PATH", ""); + + sModulesPath = std::getenv("JSRUNTIME_MODULES_PATH"); + getModulesPath(); + if (mEmbedThunderJS) { if (sThunderJSCode.empty()) { - sThunderJSCode = readFile("modules/thunderJS.js"); + sThunderJSCode = readFile(sModulesPath.c_str()); } } if (mEmbedWebBridge) { if (sWebBridgeCode.empty()) { - sWebBridgeCode = readFile("modules/webbridgesdk.js"); + sWebBridgeCode = readFile(sModulesPath.c_str()); } } #ifdef ENABLE_ESSOS @@ -94,7 +107,8 @@ bool JavaScriptContextBase::runFile(const char *file, const char* args, bool isA scriptToRun = readFile(file); if(scriptToRun.empty()) { - std::string fileName("/home/root/"); + //newly added + std::string fileName=sModulesPath; fileName.append(file); scriptToRun = readFile(fileName.c_str()); NativeJSLogger::log(INFO, "Checking in [%s]\n", fileName.c_str()); @@ -105,6 +119,9 @@ bool JavaScriptContextBase::runFile(const char *file, const char* args, bool isA return false; } } + //newly added + std::cout<<"File:" << file << std::endl; + return evaluateScript(scriptToRun.c_str(), isApplication?file:nullptr, args, isApplication); } @@ -127,3 +144,45 @@ void JavaScriptContextBase::onKeyRelease(struct JavaScriptKeyDetails& details) { processKeyEvent(details, false); } + +//newly added +void JavaScriptContextBase::setEnvVariable(const char* name, const char* value) { + if (setenv(name, value, 1) == 0) { + std::cout << "Environment variable set: " << name << std::endl; + } else { + std::cerr << "Failed to set environment variable!" << std::endl; + } +} +std::string JavaScriptContextBase::getModulesPath(){ + if(!sModulesPath.empty()){ + return sModulesPath; + } + else{ + struct stat info; + std::string home; + char* cwd = getcwd(nullptr,0); + std::string PWD=cwd; + if (stat("/home/root/modules/", &info) == 0 && (info.st_mode & S_IFDIR)){ + home =PWD + "/home/root/modules/"; + } + else if(stat("/runtime/modules/", &info) == 0 && (info.st_mode & S_IFDIR)){ + home = PWD + "/runtime/modules/"; + } + else if("/modules/", &info) == 0 && (info.st_mode & S_IFDIR)){ + home = PWD +"/modules/"; + } + else{ + std::cerr << "Modules Directory not found!" << std::endl; + } + sModulesPath = home; + if(setenv("JSRUNTIME_MODULES_PATH",home.c_str(),1)==0){ + std::cout<<"JSRUNTIME_MODULES_PATH:"< Date: Tue, 8 Apr 2025 14:10:35 +0530 Subject: [PATCH 5/6] RDKEMW-3106 : added new if statement Reason for change: Cleaned up the code Test Procedure: build should be successful. Risks: low Priority: P2 --- src/JavaScriptContextBase.cpp | 8 +++++--- src/jsc/JavaScriptContext.cpp | 4 ++++ 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/JavaScriptContextBase.cpp b/src/JavaScriptContextBase.cpp index 3f5f21c..3ca8af2 100644 --- a/src/JavaScriptContextBase.cpp +++ b/src/JavaScriptContextBase.cpp @@ -52,14 +52,16 @@ JavaScriptContextBase::JavaScriptContextBase(JavaScriptContextFeatures& features { if (sThunderJSCode.empty()) { - sThunderJSCode = readFile(sModulesPath.c_str()); + std::string ThunderJS= sModulesPath + "thunderJS.js" + sThunderJSCode = readFile(ThunderJS.c_str()); } } if (mEmbedWebBridge) { if (sWebBridgeCode.empty()) - { - sWebBridgeCode = readFile(sModulesPath.c_str()); + { + std::string WebBridge = sModulesPath + "webbridgesdk.js" + sWebBridgeCode = readFile(WebBridge.c_str()); } } #ifdef ENABLE_ESSOS diff --git a/src/jsc/JavaScriptContext.cpp b/src/jsc/JavaScriptContext.cpp index df3170d..ce4eab9 100644 --- a/src/jsc/JavaScriptContext.cpp +++ b/src/jsc/JavaScriptContext.cpp @@ -404,6 +404,10 @@ if (mModuleSettings.enablePlayer) }; injectFun(mContext, "require", requireCallback); //Module Path Changes + if(mModuleSettings.enablePlayer) + { + runFile("video.js", nullptr); + } if (mModuleSettings.enableXHR) { std::string xhr = "xhr.js"; From cca96750df56dde127a954ed6baf0616861ade0a Mon Sep 17 00:00:00 2001 From: Sidhanth B H Date: Mon, 16 Jun 2025 16:27:00 +0530 Subject: [PATCH 6/6] RDKEMW-3106 : Module Path in generic way Reason for change: Removed unwanted comments newly added Test Procedure: build should be successful. Risks: low Priority: P2 --- include/JavaScriptContextBase.h | 8 +-- src/JavaScriptContextBase.cpp | 108 +++++++++++++++----------------- src/jsc/JavaScriptContext.cpp | 39 +++++------- 3 files changed, 67 insertions(+), 88 deletions(-) diff --git a/include/JavaScriptContextBase.h b/include/JavaScriptContextBase.h index b1d0383..dba8f89 100644 --- a/include/JavaScriptContextBase.h +++ b/include/JavaScriptContextBase.h @@ -55,10 +55,6 @@ class JavaScriptContextBase:public IJavaScriptContext, public JavaScriptKeyListe std::string getUrl(); virtual void onKeyPress(struct JavaScriptKeyDetails& details); virtual void onKeyRelease(struct JavaScriptKeyDetails& details); - - //newly added - static void setEnvVariable(const char* name, const char* value); - protected: virtual void processKeyEvent(struct JavaScriptKeyDetails& details, bool keyPress) = 0; virtual bool evaluateScript(const char* script, const char* name, const char *args, bool module=false) = 0; @@ -73,8 +69,8 @@ class JavaScriptContextBase:public IJavaScriptContext, public JavaScriptKeyListe bool mEnableWebSockerServer; ModuleSettings mModuleSettings; - //newly added static std::string sModulesPath; - std::string getModulesPath(); + static std::string getModulesPath(); + }; #endif diff --git a/src/JavaScriptContextBase.cpp b/src/JavaScriptContextBase.cpp index 3ca8af2..90f9e42 100644 --- a/src/JavaScriptContextBase.cpp +++ b/src/JavaScriptContextBase.cpp @@ -25,15 +25,11 @@ #ifdef ENABLE_ESSOS #include #endif - -//newly added -#include -#include +#include +#include std::string JavaScriptContextBase::sThunderJSCode = ""; std::string JavaScriptContextBase::sWebBridgeCode = ""; - -//newly added std::string JavaScriptContextBase::sModulesPath = "" ; JavaScriptContextFeatures::JavaScriptContextFeatures(bool embedThunderJS, bool embedWebBridge, bool enableWebSockerServer, ModuleSettings& moduleSettings):mEmbedThunderJS(embedThunderJS), mEmbedWebBridge(embedWebBridge), mEnableWebSockerServer(enableWebSockerServer), mModuleSettings(moduleSettings) @@ -42,28 +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) { -//newly added - JavaScriptContextBase::setEnvVariable("JSRUNTIME_MODULES_PATH", ""); - - sModulesPath = std::getenv("JSRUNTIME_MODULES_PATH"); getModulesPath(); - if (mEmbedThunderJS) { if (sThunderJSCode.empty()) - { - std::string ThunderJS= sModulesPath + "thunderJS.js" - sThunderJSCode = readFile(ThunderJS.c_str()); + { + sThunderJSCode = readFile("thunderJS.js"); } } if (mEmbedWebBridge) { if (sWebBridgeCode.empty()) { - std::string WebBridge = sModulesPath + "webbridgesdk.js" - sWebBridgeCode = readFile(WebBridge.c_str()); + sWebBridgeCode = readFile("webbridgesdk.js"); } } + #ifdef ENABLE_ESSOS EssosInstance::instance()->registerKeyListener(this); #endif @@ -93,6 +83,22 @@ std::string JavaScriptContextBase::readFile(const char *file) std::ifstream src_file(file); std::stringstream src_script; src_script << src_file.rdbuf(); + if(src_script.str().empty()) + { + std::string fileName=sModulesPath; + fileName.append(file); + struct stat path; + if (stat(fileName.c_str(), &path) == 0) { + std::cout << "File exists at: " << fileName << std::endl; + std::ifstream src_file(fileName.c_str()); + src_script.str(""); + src_script.clear(); + src_script << src_file.rdbuf(); + } + else { + std::cout << file << "does not exist at: " << fileName << std::endl; + } + } return src_script.str(); } @@ -119,11 +125,7 @@ bool JavaScriptContextBase::runFile(const char *file, const char* args, bool isA NativeJSLogger::log(ERROR, "%s ... load error / not found. %s\n", __PRETTY_FUNCTION__, file); fflush(stdout); return false; - } } - //newly added - std::cout<<"File:" << file << std::endl; - return evaluateScript(scriptToRun.c_str(), isApplication?file:nullptr, args, isApplication); } @@ -147,44 +149,34 @@ void JavaScriptContextBase::onKeyRelease(struct JavaScriptKeyDetails& details) processKeyEvent(details, false); } -//newly added -void JavaScriptContextBase::setEnvVariable(const char* name, const char* value) { - if (setenv(name, value, 1) == 0) { - std::cout << "Environment variable set: " << name << std::endl; - } else { - std::cerr << "Failed to set environment variable!" << std::endl; - } -} std::string JavaScriptContextBase::getModulesPath(){ - if(!sModulesPath.empty()){ - return sModulesPath; - } - else{ - struct stat info; - std::string home; - char* cwd = getcwd(nullptr,0); - std::string PWD=cwd; - if (stat("/home/root/modules/", &info) == 0 && (info.st_mode & S_IFDIR)){ - home =PWD + "/home/root/modules/"; - } - else if(stat("/runtime/modules/", &info) == 0 && (info.st_mode & S_IFDIR)){ - home = PWD + "/runtime/modules/"; - } - else if("/modules/", &info) == 0 && (info.st_mode & S_IFDIR)){ - home = PWD +"/modules/"; - } - else{ - std::cerr << "Modules Directory not found!" << std::endl; - } - sModulesPath = home; - if(setenv("JSRUNTIME_MODULES_PATH",home.c_str(),1)==0){ - std::cout<<"JSRUNTIME_MODULES_PATH:"<