[NUI] Implement WebView.GetPlainTextAsynchronously method (#3344)
authorJiyun Yang <ji.yang@samsung.com>
Mon, 26 Jul 2021 01:23:09 +0000 (10:23 +0900)
committerdongsug-song <35130733+dongsug-song@users.noreply.github.com>
Thu, 29 Jul 2021 07:11:39 +0000 (16:11 +0900)
Signed-off-by: Jiyun Yang <ji.yang@samsung.com>
src/Tizen.NUI/src/internal/Interop/Interop.WebView.cs
src/Tizen.NUI/src/internal/WebView.cs

index efb06bc..1642a13 100755 (executable)
@@ -155,6 +155,9 @@ namespace Tizen.NUI
 
             [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_WebViewScrollEdgeReachedSignal_Disconnect")]
             public static extern void WebViewScrollEdgeReachedSignalDisconnect(global::System.Runtime.InteropServices.HandleRef jarg1, global::System.Runtime.InteropServices.HandleRef jarg2);
+
+            [global::System.Runtime.InteropServices.DllImport(NDalicPINVOKE.Lib, EntryPoint = "CSharp_Dali_WebView_GetPlainTextAsynchronously")]
+            public static extern void GetPlainTextAsynchronously(global::System.Runtime.InteropServices.HandleRef webViewRef, global::System.Runtime.InteropServices.HandleRef callbackRef);
         }
     }
 }
index 116334f..53aad81 100755 (executable)
@@ -53,6 +53,14 @@ namespace Tizen.NUI
         private readonly WebViewScrollEdgeReachedSignal scrollEdgeReachedSignal;
         private EventHandler<WebViewScrollEdgeReachedEventArgs> scrollEdgeReachedEventHandler;
         private WebViewScrollEdgeReachedCallbackDelegate scrollEdgeReachedCallback;
+        private PlainTextReceivedCallback plainTextReceivedCallback;
+
+        /// <summary>
+        /// The callback function that is invoked when the plain text of the current page is received.
+        /// </summary>
+        [UnmanagedFunctionPointer(CallingConvention.StdCall)]
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public delegate void PlainTextReceivedCallback(string plainText);
 
         internal WebView(global::System.IntPtr cPtr, bool cMemoryOwn) : base(Interop.WebView.WebView_SWIGUpcast(cPtr), cMemoryOwn)
         {
@@ -871,5 +879,19 @@ namespace Tizen.NUI
             Interop.WebView.SetTtsFocus(SwigCPtr, focused);
             if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
         }
+
+        /// <summary>
+        /// Get a plain text of current web page asynchronously.
+        /// Please note that it gets plain text of currently loaded page so please call this method after page load finished.
+        /// <param name="callback">The callback for getting plain text</param>
+        /// </summary>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public void GetPlainTextAsynchronously(PlainTextReceivedCallback callback)
+        {
+            plainTextReceivedCallback = callback;
+            System.IntPtr ip = Marshal.GetFunctionPointerForDelegate(plainTextReceivedCallback);
+            Interop.WebView.GetPlainTextAsynchronously(SwigCPtr, new HandleRef(this, ip));
+            if (NDalicPINVOKE.SWIGPendingException.Pending) throw NDalicPINVOKE.SWIGPendingException.Retrieve();
+        }
     }
 }