From e282d3ba8fd298ca1d9750546190c541f32911f3 Mon Sep 17 00:00:00 2001 From: "dongsug.song" Date: Fri, 4 Apr 2025 10:50:11 +0900 Subject: [PATCH] (WebView) Update and sync all the latest patches related to WebView that have been modified so far - Add APIs for setting IME position, cursor theme name. - Add SetVideoHole() for EFL window - Add WebView DeviceListGet,SetDefaultAudio - Add WebView FeedMouseWheel as hidden api - Fix for UserMediaPermissionRequest object to be maintained by user Change-Id: Ie13dd227c101c596d9f10126e4f375359e62e5a2 --- .../dali-toolkit/web-view-wrap.cpp | 174 +++++++++++++++++- 1 file changed, 172 insertions(+), 2 deletions(-) diff --git a/dali-csharp-binder/dali-toolkit/web-view-wrap.cpp b/dali-csharp-binder/dali-toolkit/web-view-wrap.cpp index c2338ad2..67109259 100755 --- a/dali-csharp-binder/dali-toolkit/web-view-wrap.cpp +++ b/dali-csharp-binder/dali-toolkit/web-view-wrap.cpp @@ -33,6 +33,7 @@ #include #include #include +#include #include #include #include @@ -549,6 +550,27 @@ SWIGEXPORT bool SWIGSTDCALL CSharp_Dali_WebView_StopInspectorServer(void * jarg1 return result; } +SWIGEXPORT bool SWIGSTDCALL CSharp_Dali_WebView_SetImePositionAndAlignment(void* jarg1, void* jarg2, int alignment) { + Dali::Toolkit::WebView* webView = (Dali::Toolkit::WebView*)jarg1; + Dali::Vector2* position = (Dali::Vector2*)jarg2; + bool result = false; + { + try { + result = (webView)->SetImePositionAndAlignment(*position, alignment); + } CALL_CATCH_EXCEPTION(0); + } + return result; +} + +SWIGEXPORT void SWIGSTDCALL CSharp_Dali_WebView_SetCursorThemeName(void * jarg1, const char* jarg2) { + Dali::Toolkit::WebView* webView = (Dali::Toolkit::WebView*)jarg1; + { + try { + (webView)->SetCursorThemeName(jarg2); + } CALL_CATCH_EXCEPTION(); + } +} + SWIGEXPORT void SWIGSTDCALL CSharp_Dali_WebView_ScrollBy(void * jarg1, int32_t jarg2, int32_t jarg3) { Dali::Toolkit::WebView* arg1 = (Dali::Toolkit::WebView*)0; arg1 = (Dali::Toolkit::WebView*)jarg1; @@ -1443,8 +1465,8 @@ SWIGEXPORT void SWIGSTDCALL CSharp_Dali_WebView_RegisterUserMediaPermissionReque try { if (handler) { - (arg1)->RegisterUserMediaPermissionRequestCallback([handler](std::unique_ptr permission, const std::string &message) { - handler(permission.release(), message.c_str()); + (arg1)->RegisterUserMediaPermissionRequestCallback([handler](Dali::WebEngineUserMediaPermissionRequest* permission, const std::string &message) { + handler(permission, message.c_str()); }); } else @@ -1455,6 +1477,24 @@ SWIGEXPORT void SWIGSTDCALL CSharp_Dali_WebView_RegisterUserMediaPermissionReque } } +SWIGEXPORT void SWIGSTDCALL CSharp_Dali_WebView_FeedMouseWheel(void * objPtr, bool yDirec, int step, int x, int y) { + Dali::Toolkit::WebView *webView = (Dali::Toolkit::WebView *)objPtr; + { + try { + (webView)->FeedMouseWheel(yDirec, step, x, y); + } CALL_CATCH_EXCEPTION(); + } +} + +SWIGEXPORT void SWIGSTDCALL CSharp_Dali_WebView_SetVideoHole(void *objPtr, bool enable, bool isWaylandWin) { + Dali::Toolkit::WebView *webView = (Dali::Toolkit::WebView *)objPtr; + { + try { + (webView)->SetVideoHole(enable, isWaylandWin); + } CALL_CATCH_EXCEPTION(); + } +} + SWIGEXPORT void SWIGSTDCALL CSharp_Dali_delete_UserMediaPermissionRequest(void * jarg1) { if (!jarg1) { SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "UserMediaPermissionRequest is null", 0); @@ -1489,6 +1529,106 @@ SWIGEXPORT bool SWIGSTDCALL CSharp_Dali_UserMediaPermissionRequest_Suspend(void return ret; } +SWIGEXPORT void SWIGSTDCALL CSharp_Dali_WebView_RegisterDeviceConnectionChangedCallback(void * view, void * callback) { + Dali::Toolkit::WebView *webView = (Dali::Toolkit::WebView *)view; + void (*eventHandler)(int32_t) = (void (*)(int32_t))callback; + { + try { + if (eventHandler) + { + (webView)->RegisterDeviceConnectionChangedCallback([eventHandler](int32_t deviceType) { + eventHandler(deviceType); + }); + } + else + { + (webView)->RegisterDeviceConnectionChangedCallback(nullptr); + } + } CALL_CATCH_EXCEPTION(); + } +} + +SWIGEXPORT void SWIGSTDCALL CSharp_Dali_WebView_RegisterDeviceListGetCallback(void * view, void * callback) { + Dali::Toolkit::WebView *webView = (Dali::Toolkit::WebView *)view; + void (*eventHandler)(Dali::WebEngineDeviceListGet*, int32_t) = (void (*)(Dali::WebEngineDeviceListGet*, int32_t))callback; + { + try { + if (eventHandler) + { + (webView)->RegisterDeviceListGetCallback([eventHandler](Dali::WebEngineDeviceListGet* list, int32_t size) { + eventHandler(list, size); + }); + } + else + { + (webView)->RegisterDeviceListGetCallback(nullptr); + } + } CALL_CATCH_EXCEPTION(); + } +} + +SWIGEXPORT void SWIGSTDCALL CSharp_Dali_delete_DeviceListGet(void * obj) { + if (!obj) { + SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "DeviceListGet is null", 0); + return; + } + + Dali::WebEngineDeviceListGet* me = (Dali::WebEngineDeviceListGet*)obj; + { + try { + delete me; + } CALL_CATCH_EXCEPTION(); + } +} + +SWIGEXPORT void SWIGSTDCALL CSharp_Dali_DeviceListGet_GetTypeAndConnect(void * obj, int * type, bool * connect, int idx) { + if (!obj) { + SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "DeviceListGet is null", 0); + return; + } + + Dali::WebEngineDeviceListGet* me = (Dali::WebEngineDeviceListGet*)obj; + { + try { + me->GetTypeAndConnect(type, connect, idx); + } CALL_CATCH_EXCEPTION(); + } +} + +SWIGEXPORT const char * SWIGSTDCALL CSharp_Dali_DeviceListGet_GetDeviceId(void * obj, int idx) { + std::string result; + if (!obj) { + SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "DeviceListGet is null", 0); + return ""; + } + + Dali::WebEngineDeviceListGet* me = (Dali::WebEngineDeviceListGet*)obj; + { + try { + result = me->GetDeviceId(idx); + } CALL_CATCH_EXCEPTION(0); + } + char * ret = SWIG_csharp_string_callback(result.c_str()); + return ret; +} + +SWIGEXPORT const char * SWIGSTDCALL CSharp_Dali_DeviceListGet_GetDeviceLabel(void * obj, int idx) { + std::string result; + if (!obj) { + SWIG_CSharpSetPendingExceptionArgument(SWIG_CSharpArgumentNullException, "DeviceListGet is null", 0); + return ""; + } + + Dali::WebEngineDeviceListGet* me = (Dali::WebEngineDeviceListGet*)obj; + { + try { + result = me->GetDeviceLabel(idx); + } CALL_CATCH_EXCEPTION(0); + } + char * ret = SWIG_csharp_string_callback(result.c_str()); + return ret; +} + //----------------------------------WebBackForwardListItem----------------------------------------------------- SWIGEXPORT const char * SWIGSTDCALL CSharp_Dali_WebBackForwardListItem_GetUrl(void * jarg1) { @@ -3973,6 +4113,36 @@ SWIGEXPORT bool SWIGSTDCALL CSharp_Dali_WebSettings_IsExtraFeatureEnabled(void * return ret; } +SWIGEXPORT void SWIGSTDCALL CSharp_Dali_WebSettings_SetImeStyle(void *jarg1, int jarg2) { + Dali::Toolkit::WebSettings* settings = (Dali::Toolkit::WebSettings*)jarg1; + { + try { + settings->SetImeStyle(jarg2); + } CALL_CATCH_EXCEPTION(); + } +} + +SWIGEXPORT int SWIGSTDCALL CSharp_Dali_WebSettings_GetImeStyle(void *jarg1) { + Dali::Toolkit::WebSettings* settings = (Dali::Toolkit::WebSettings*)jarg1; + int style; + { + try { + style = settings->GetImeStyle(); + } CALL_CATCH_EXCEPTION(0); + } + return style; +} + +SWIGEXPORT void SWIGSTDCALL CSharp_Dali_WebSettings_SetDefaultAudioInputDevice(void *setting, const char *id) { + Dali::Toolkit::WebSettings* settings = (Dali::Toolkit::WebSettings*)setting; + std::string deviceId(id); + { + try { + settings->SetDefaultAudioInputDevice(deviceId); + } CALL_CATCH_EXCEPTION(); + } +} + #ifdef __cplusplus } // end extern "C" #endif -- 2.34.1