From 9dce2d9c87c7f73dc5a67c29007815c0c3bc9332 Mon Sep 17 00:00:00 2001 From: Jiyun Yang Date: Wed, 3 Jan 2024 20:08:31 +0900 Subject: [PATCH] [Tizen] Support mutiple javascript message handlers Change-Id: If0a72eca07f738abd735a013036f2b44d4d9e12b Signed-off-by: Jiyun Yang --- .../web-engine-chromium/tizen-web-engine-chromium.cpp | 14 ++++++++++++-- .../web-engine-chromium/tizen-web-engine-chromium.h | 2 +- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/dali-extension/web-engine-chromium/tizen-web-engine-chromium.cpp b/dali-extension/web-engine-chromium/tizen-web-engine-chromium.cpp index 60c35a1..f6c821a 100644 --- a/dali-extension/web-engine-chromium/tizen-web-engine-chromium.cpp +++ b/dali-extension/web-engine-chromium/tizen-web-engine-chromium.cpp @@ -190,6 +190,8 @@ void TizenWebEngineChromium::InitWebView() void TizenWebEngineChromium::Destroy() { + mJavaScriptInjectedCallbacks.clear(); + if(WebEngineManager::IsAvailable()) { WebEngineManager::Get().Remove(mWebView); @@ -369,7 +371,8 @@ void TizenWebEngineChromium::EvaluateJavaScript(const std::string& script, JavaS void TizenWebEngineChromium::AddJavaScriptMessageHandler(const std::string& exposedObjectName, JavaScriptMessageHandlerCallback handler) { - mJavaScriptInjectedCallback = handler; + mJavaScriptInjectedCallbacks.erase(exposedObjectName); + mJavaScriptInjectedCallbacks.insert(std::pair(exposedObjectName, handler)); ewk_view_javascript_message_handler_add(mWebView, &TizenWebEngineChromium::OnJavaScriptInjected, exposedObjectName.c_str()); } @@ -1148,7 +1151,14 @@ void TizenWebEngineChromium::OnJavaScriptInjected(Evas_Object* o, Ewk_Script_Mes { resultText = static_cast(message.body); } - ExecuteCallback(pThis->mJavaScriptInjectedCallback, resultText); + + std::string key = static_cast(message.name); + auto targetCallback = pThis->mJavaScriptInjectedCallbacks.find(key); + + if (targetCallback != pThis->mJavaScriptInjectedCallbacks.end()) + { + ExecuteCallback(targetCallback->second, resultText); + } } } diff --git a/dali-extension/web-engine-chromium/tizen-web-engine-chromium.h b/dali-extension/web-engine-chromium/tizen-web-engine-chromium.h index 1455f17..b2afb00 100644 --- a/dali-extension/web-engine-chromium/tizen-web-engine-chromium.h +++ b/dali-extension/web-engine-chromium/tizen-web-engine-chromium.h @@ -593,6 +593,7 @@ private: uint32_t mHeight; std::unique_ptr mWebEngineBackForwardList; std::unique_ptr mWebEngineSettings; + std::unordered_map mJavaScriptInjectedCallbacks; // callback. WebEnginePageLoadCallback mLoadStartedCallback; @@ -621,7 +622,6 @@ private: GeolocationPermissionCallback mGeolocationPermissionCallback; PlainTextReceivedCallback mPlainTextReceivedCallback; JavaScriptMessageHandlerCallback mJavaScriptEvaluatedCallback; - JavaScriptMessageHandlerCallback mJavaScriptInjectedCallback; }; } // namespace Plugin } // namespace Dali -- 2.7.4