{
}
-void WebEngine::AddJavaScriptInterface( const std::string& exposedObjectName, const std::string& jsFunctionName, std::function< std::string(const std::string&) > cb )
-{
-}
-
-void WebEngine::RemoveJavascriptInterface( const std::string& exposedObjectName, const std::string& jsFunctionName )
+void WebEngine::AddJavaScriptMessageHandler( const std::string& exposedObjectName, std::function< void(const std::string&) > handler )
{
}
WebView view = WebView::New( "ko-KR", "Asia/Seoul" );
view.LoadHTMLString( "<body>Hello World!</body>" );
- view.AddJavaScriptInterface( "jsObject", "jsFunction",
- []( const std::string& arg ) -> std::string {
- return arg + " World!";
+ view.AddJavaScriptMessageHandler( "jsObject",
+ []( const std::string& arg ) {
}
);
- view.EvaluateJavaScript( "jsObject.jsFunction('Hello')" );
- view.RemoveJavascriptInterface( "jsObject", "jsFunction" );
+ view.EvaluateJavaScript( "jsObject.postMessage('Hello')" );
DALI_TEST_CHECK( view );
Dali::Toolkit::GetImpl( *this ).EvaluateJavaScript( script );
}
-void WebView::AddJavaScriptInterface( const std::string& exposedObjectName, const std::string& jsFunctionName, std::function< std::string(const std::string&) > callback )
+void WebView::AddJavaScriptMessageHandler( const std::string& exposedObjectName, std::function< void( const std::string& ) > handler )
{
- Dali::Toolkit::GetImpl( *this ).AddJavaScriptInterface( exposedObjectName, jsFunctionName, callback );
-}
-
-void WebView::RemoveJavascriptInterface( const std::string& exposedObjectName, const std::string& jsFunctionName )
-{
- Dali::Toolkit::GetImpl( *this ).RemoveJavascriptInterface( exposedObjectName, jsFunctionName );
+ Dali::Toolkit::GetImpl( *this ).AddJavaScriptMessageHandler( exposedObjectName, handler );
}
void WebView::ClearHistory()
void GoBack();
/**
- * @brief Evaluates JavaScript code represented as a string.
- *
- * @param[in] script The JavaScript code
- */
+ * @brief Evaluates JavaScript code represented as a string.
+ *
+ * @param[in] script The JavaScript code
+ */
void EvaluateJavaScript( const std::string& script );
/**
- * @brief Adds a JavaScript interface.
- *
- * @param[in] exposedObjectName The name of exposed object
- * @param[in] jsFunctionName The name of JavaScript function
- * @param[in] callback The callback function
- */
- void AddJavaScriptInterface( const std::string& exposedObjectName, const std::string& jsFunctionName, std::function< std::string(const std::string&) > callback );
-
- /**
- * @brief Removes a JavaScript interface.
- *
- * @param[in] exposedObjectName The name of exposed object
- * @param[in] jsFunctionName The name of JavaScript function
- */
- void RemoveJavascriptInterface( const std::string& exposedObjectName, const std::string& jsFunctionName );
+ * @brief Inject a JavaScript object with a message handler into the WebView.
+ *
+ * @note The injected object will appear in the JavaScript context to be loaded next.
+ *
+ * Example:
+ *
+ * 1. Native
+ *
+ * webview.AddJavaScriptMessageHandler( "myObject", []( const std::string& message ) {
+ * printf( "Received a message from JS: %s", message.c_str() );
+ * });
+ *
+ * // Start WebView by loading URL
+ * webview.LoadUrl( url );
+ *
+ * 2. JavaScript
+ *
+ * myObject.postMessage( "Hello World!" ); // "Received a message from JS: Hello World!"
+ *
+ *
+ * @param[in] exposedObjectName The name of exposed object
+ * @param[in] handler The callback function
+ */
+ void AddJavaScriptMessageHandler( const std::string& exposedObjectName, std::function< void( const std::string& ) > handler );
/**
* @brief Clears the history of Web.
}
}
-void WebView::AddJavaScriptInterface( const std::string& exposedObjectName, const std::string& jsFunctionName, std::function< std::string(const std::string&) > callback )
+void WebView::AddJavaScriptMessageHandler( const std::string& exposedObjectName, std::function< void( const std::string& ) > handler )
{
if ( mWebEngine )
{
- mWebEngine.AddJavaScriptInterface( exposedObjectName, jsFunctionName, callback );
- }
-}
-
-void WebView::RemoveJavascriptInterface( const std::string& exposedObjectName, const std::string& jsFunctionName )
-{
- if ( mWebEngine )
- {
- mWebEngine.RemoveJavascriptInterface( exposedObjectName, jsFunctionName );
+ mWebEngine.AddJavaScriptMessageHandler( exposedObjectName, handler );
}
}
void EvaluateJavaScript( const std::string& script );
/**
- * @copydoc Dali::WebEngine::AddJavaScriptInterface()
+ * @copydoc Dali::WebEngine::AddJavaScriptMessageHandler()
*/
- void AddJavaScriptInterface( const std::string& exposedObjectName, const std::string& jsFunctionName, std::function< std::string(const std::string&) > callback );
-
- /**
- * @copydoc Dali::WebEngine::RemoveJavascriptInterface()
- */
- void RemoveJavascriptInterface( const std::string& exposedObjectName, const std::string& jsFunctionName );
+ void AddJavaScriptMessageHandler( const std::string& exposedObjectName, std::function< void( const std::string& ) > handler );
/**
* @copydoc Dali::WebEngine::ClearHistory()