void TizenWebEngineChromium::Destroy()
{
+ mJavaScriptInjectedCallbacks.clear();
+
if(WebEngineManager::IsAvailable())
{
WebEngineManager::Get().Remove(mWebView);
void TizenWebEngineChromium::AddJavaScriptMessageHandler(const std::string& exposedObjectName, JavaScriptMessageHandlerCallback handler)
{
- mJavaScriptInjectedCallback = handler;
+ mJavaScriptInjectedCallbacks.erase(exposedObjectName);
+ mJavaScriptInjectedCallbacks.insert(std::pair<std::string, JavaScriptMessageHandlerCallback>(exposedObjectName, handler));
ewk_view_javascript_message_handler_add(mWebView, &TizenWebEngineChromium::OnJavaScriptInjected, exposedObjectName.c_str());
}
{
resultText = static_cast<char*>(message.body);
}
- ExecuteCallback(pThis->mJavaScriptInjectedCallback, resultText);
+
+ std::string key = static_cast<const char*>(message.name);
+ auto targetCallback = pThis->mJavaScriptInjectedCallbacks.find(key);
+
+ if (targetCallback != pThis->mJavaScriptInjectedCallbacks.end())
+ {
+ ExecuteCallback(targetCallback->second, resultText);
+ }
}
}
uint32_t mHeight;
std::unique_ptr<WebEngineBackForwardList> mWebEngineBackForwardList;
std::unique_ptr<WebEngineSettings> mWebEngineSettings;
+ std::unordered_map<std::string, JavaScriptMessageHandlerCallback> mJavaScriptInjectedCallbacks;
// callback.
WebEnginePageLoadCallback mLoadStartedCallback;
GeolocationPermissionCallback mGeolocationPermissionCallback;
PlainTextReceivedCallback mPlainTextReceivedCallback;
JavaScriptMessageHandlerCallback mJavaScriptEvaluatedCallback;
- JavaScriptMessageHandlerCallback mJavaScriptInjectedCallback;
};
} // namespace Plugin
} // namespace Dali