[WebView][TCSACR-219] Add Context APIs (#643)
authorBasavarajPS <45586075+BasavarajPS@users.noreply.github.com>
Mon, 15 Apr 2019 23:28:25 +0000 (04:58 +0530)
committeryounghajung <35090305+younghajung@users.noreply.github.com>
Mon, 15 Apr 2019 23:28:25 +0000 (08:28 +0900)
Signed-off-by: basavarajps <basavaraj.ps@samsung.com>
src/Tizen.WebView/Interop/Interop.ChromiumEwk.Context.cs
src/Tizen.WebView/Tizen.WebView/Context.cs

index 7930e1c..60021f4 100644 (file)
@@ -37,5 +37,17 @@ internal static partial class Interop
 
         [DllImport(Libraries.ChromiumEwk)]
         internal static extern CacheModel ewk_context_cache_model_get(IntPtr context);
+
+        [DllImport(Libraries.ChromiumEwk)]
+        internal static extern void ewk_context_resource_cache_clear(IntPtr context);
+
+        [DllImport(Libraries.ChromiumEwk)]
+        internal static extern void ewk_context_notify_low_memory(IntPtr context);
+        
+        [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
+        internal delegate void DownloadStartCallback(string url, IntPtr userData);
+
+        [DllImport(Libraries.ChromiumEwk)]
+        internal static extern void ewk_context_did_start_download_callback_set(IntPtr context, DownloadStartCallback callback, IntPtr userData);
     }
 }
index ddf2490..c1ed8ef 100644 (file)
@@ -15,6 +15,7 @@
  */
 
 using System;
+using System.ComponentModel;
 
 namespace Tizen.WebView
 {
@@ -51,6 +52,16 @@ namespace Tizen.WebView
         private IntPtr _handle;
         private CookieManager _cookieManager;
 
+        private Interop.ChromiumEwk.DownloadStartCallback _downloadStartCallback;
+        
+        /// <summary>
+        /// The delegate for handling download request.
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        /// <param name="url"> url of the download request. </param>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public delegate void DownloadRequestDelegate(string url);
+
         internal Context(IntPtr handle)
         {
             _handle = handle;
@@ -94,5 +105,38 @@ namespace Tizen.WebView
             }
             return _cookieManager;
         }
+
+        /// <summary>
+        /// Clears HTTP caches in the local storage and all resources cached in memory.
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        public void ClearResourceCache()
+        {
+            Interop.ChromiumEwk.ewk_context_resource_cache_clear(_handle);
+        }
+
+        /// <summary>
+        /// Informs the WebEngine low memory to release unused memory.
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public void NotifyLowMemory()
+        {
+            Interop.ChromiumEwk.ewk_context_notify_low_memory(_handle);
+        }
+
+        /// <summary>
+        /// Sets the delegate function for download request.
+        /// </summary>
+        /// <since_tizen> 6 </since_tizen>
+        [EditorBrowsable(EditorBrowsableState.Never)]
+        public void SetDownloadRequestDelegate(DownloadRequestDelegate startDownloadCb)
+        {
+            _downloadStartCallback = (string url, IntPtr userData) =>
+            {
+                startDownloadCb(url);
+            };
+            Interop.ChromiumEwk.ewk_context_did_start_download_callback_set(_handle, _downloadStartCallback, IntPtr.Zero);
+        }
     }
 }