Skip to content

Commit 687f26f

Browse files
committed
RDK-59629 : UserAgent string need to be aligned with browser for different agents
Reason for change: Support for changing userAgent based on firebolt flag Test Procedure: build should be successful. Risks: low Priority: P2
1 parent bad6257 commit 687f26f

4 files changed

Lines changed: 28 additions & 9 deletions

File tree

include/NativeJSRenderer.h

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ namespace JsRuntime {
9292

9393
struct ApplicationRequest
9494
{
95-
ApplicationRequest(uint32_t id, RequestType requestType, std::string url="", bool enableHttp=false, bool enableXHR=false, bool enableWebSocket=false, bool enableWebSocketEnhanced=false, bool enableFetch=false, bool enableJSDOM=false, bool enableWindow=false, bool enablePlayer=false): mId(id), mRequestType(requestType), mUrl(url), mEnableHttp(enableHttp), mEnableXHR(enableXHR), mEnableWebSocket(enableWebSocket), mEnableWebSocketEnhanced(enableWebSocketEnhanced), mEnableFetch(enableFetch), mEnableJSDOM(enableJSDOM), mEnableWindow(enableWindow), mEnablePlayer(enablePlayer)
95+
ApplicationRequest(uint32_t id, RequestType requestType, std::string url="", bool enableHttp=false, bool enableXHR=false, bool enableWebSocket=false, bool enableWebSocketEnhanced=false, bool enableFetch=false, bool enableJSDOM=false, bool enableWindow=false, bool enablePlayer=false, std::string userAgent=""): mId(id), mRequestType(requestType), mUrl(url), mEnableHttp(enableHttp), mEnableXHR(enableXHR), mEnableWebSocket(enableWebSocket), mEnableWebSocketEnhanced(enableWebSocketEnhanced), mEnableFetch(enableFetch), mEnableJSDOM(enableJSDOM), mEnableWindow(enableWindow), mEnablePlayer(enablePlayer), mUserAgent(userAgent)
9696
{
9797
}
9898
uint32_t mId;
@@ -106,6 +106,8 @@ namespace JsRuntime {
106106
bool mEnableJSDOM;
107107
bool mEnableWindow;
108108
bool mEnablePlayer;
109+
std::string mUserAgent;
110+
109111
};
110112
struct ApplicationData{
111113
std::string url;
@@ -123,10 +125,11 @@ namespace JsRuntime {
123125
void setEnvForConsoleMode(ModuleSettings& moduleSettings);
124126
bool runApplication(uint32_t id, std::string url);
125127
bool runJavaScript(uint32_t id, std::string code);
126-
uint32_t createApplication(ModuleSettings& moduleSettings) ;
128+
uint32_t createApplication(ModuleSettings& moduleSettings, std::string userAgent) ;
127129
bool terminateApplication(uint32_t id);
128130
std::list<ApplicationDetails> getApplications();
129131
void setExternalApplicationHandler(std::shared_ptr<IExternalApplicationHandler> handler);
132+
std::string getBaseUserAgent();
130133
private:
131134
bool downloadFile(std::string& url, MemoryStruct& chunk);
132135
void processDevConsoleRequests();
@@ -151,5 +154,6 @@ namespace JsRuntime {
151154
std::map<uint32_t, ApplicationData> mContextMap;
152155
std::vector<ApplicationRequest> gPendingRequests;
153156
std::shared_ptr<IExternalApplicationHandler> mExternalApplicationHandler;
157+
std::string mBaseUserAgent;
154158
};
155159
};

src/JSRuntimeServer.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -217,7 +217,7 @@ void JSRuntimeServer::onMessage(websocketpp::connection_hdl hdl, message_ptr msg
217217
std::string options = jParams.getString("moduleSettings", error);
218218
ModuleSettings moduleSettings;
219219
moduleSettings.fromString(options);
220-
uint32_t id = mRenderer->createApplication(moduleSettings);
220+
uint32_t id = mRenderer->createApplication(moduleSettings, mRenderer->getBaseUserAgent());
221221
mRenderer->runApplication(id, url);
222222
std::ostringstream oss;
223223
oss<< "ID : " << id;
@@ -237,7 +237,7 @@ void JSRuntimeServer::onMessage(websocketpp::connection_hdl hdl, message_ptr msg
237237
}
238238
ModuleSettings moduleSettings;
239239
moduleSettings.fromString(options);
240-
uint32_t id = mRenderer->createApplication(moduleSettings);
240+
uint32_t id = mRenderer->createApplication(moduleSettings,mRenderer->getBaseUserAgent());
241241
std::ostringstream oss;
242242
oss<< "ID : " << id;
243243
result = oss.str();

src/NativeJSRenderer.cpp

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,10 @@ NativeJSRenderer::NativeJSRenderer(std::string waylandDisplay): mEngine(nullptr)
103103
}
104104

105105
const char* levelFromEnv = getenv("NATIVEJS_LOG_LEVEL");
106+
107+
//setting the base userAgent value
108+
mBaseUserAgent = "Mozilla/5.0 (X11; Linux armv7l) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/16.0 Safari/605.1.15";
109+
106110
// checking for ethan log env
107111
#ifdef USE_ETHANLOG
108112
NativeJSLogger::isEthanLogEnabled();
@@ -214,12 +218,12 @@ uint32_t NativeJSRenderer::createApplicationIdentifier()
214218
return ret;
215219
}
216220

217-
uint32_t NativeJSRenderer::createApplication(ModuleSettings& moduleSettings)
221+
uint32_t NativeJSRenderer::createApplication(ModuleSettings& moduleSettings, std::string userAgent)
218222
{
219223
uint32_t id=0;
220224
mUserMutex.lock();
221225
id = createApplicationIdentifier();
222-
ApplicationRequest request(id, CREATE, "", moduleSettings.enableHttp, moduleSettings.enableXHR, moduleSettings.enableWebSocket, moduleSettings.enableWebSocketEnhanced, moduleSettings.enableFetch, moduleSettings.enableJSDOM, moduleSettings.enableWindow, moduleSettings.enablePlayer);
226+
ApplicationRequest request(id, CREATE, "", moduleSettings.enableHttp, moduleSettings.enableXHR, moduleSettings.enableWebSocket, moduleSettings.enableWebSocketEnhanced, moduleSettings.enableFetch, moduleSettings.enableJSDOM, moduleSettings.enableWindow, moduleSettings.enablePlayer, userAgent);
223227
gPendingRequests.push_back(request);
224228
mUserMutex.unlock();
225229
return id;
@@ -289,15 +293,20 @@ void NativeJSRenderer::createApplicationInternal(ApplicationRequest& appRequest)
289293
settings.enableWindow = appRequest.mEnableWindow;
290294
settings.enablePlayer = appRequest.mEnablePlayer;
291295
uint32_t id= appRequest.mId;
292-
296+
std::string userAgent = appRequest.mUserAgent;
293297
JavaScriptContextFeatures features(mEmbedThunderJS, mEmbedRdkWebBridge, mEnableWebSocketServer, settings);
294298
JavaScriptContext* context = new JavaScriptContext(features, "" , mEngine);
295299
if(NULL == context)
296300
{
297301
NativeJSLogger::log(DEBUG, "Context not created for ID: %d\n", id);
298302
return ;
299303
}
300-
NativeJSLogger::log(DEBUG, "Context created for ID: %d\n", id);
304+
305+
std::stringstream uagent;
306+
uagent << "window.navigator.userAgent = \"" << userAgent << "\";";
307+
context->runScript(uagent.str().c_str(),true, userAgent, nullptr, true);
308+
309+
NativeJSLogger::log(DEBUG, "Context created for ID: %d\n", id);
301310
if (mExternalApplicationHandler) {
302311
context->setExternalApplicationHandler(mExternalApplicationHandler);
303312
}
@@ -619,3 +628,9 @@ void NativeJSRenderer::setExternalApplicationHandler(std::shared_ptr<IExternalAp
619628
{
620629
mExternalApplicationHandler = handler;
621630
}
631+
632+
std::string NativeJSRenderer::getBaseUserAgent()
633+
{
634+
return mBaseUserAgent;
635+
}
636+

src/jsruntime.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,7 @@ int main(int argc, char* argv[])
134134

135135
applicationThreads.emplace_back([renderer, url, &moduleSettings]() {
136136
NativeJSLogger::log(INFO, "Application URL is %s\n", (url.size() ? url.c_str() : "empty"));
137-
uint32_t id = renderer->createApplication(moduleSettings);
137+
uint32_t id = renderer->createApplication(moduleSettings,renderer->getBaseUserAgent());
138138
renderer->runApplication(id, url);
139139
//renderer->runJavaScript(id,url);
140140
#if defined(NATIVEJS_DEVELOPER_MODE)

0 commit comments

Comments
 (0)