From c72268d1a5fa5279492190a755adcb9f62e95b51 Mon Sep 17 00:00:00 2001 From: BasavarajPS <45586075+BasavarajPS@users.noreply.github.com> Date: Tue, 16 Apr 2019 04:58:25 +0530 Subject: [PATCH] [WebView][TCSACR-219] Add Context APIs (#643) Signed-off-by: basavarajps --- .../Interop/Interop.ChromiumEwk.Context.cs | 12 ++++++ src/Tizen.WebView/Tizen.WebView/Context.cs | 44 ++++++++++++++++++++++ 2 files changed, 56 insertions(+) diff --git a/src/Tizen.WebView/Interop/Interop.ChromiumEwk.Context.cs b/src/Tizen.WebView/Interop/Interop.ChromiumEwk.Context.cs index 7930e1c..60021f4 100644 --- a/src/Tizen.WebView/Interop/Interop.ChromiumEwk.Context.cs +++ b/src/Tizen.WebView/Interop/Interop.ChromiumEwk.Context.cs @@ -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); } } diff --git a/src/Tizen.WebView/Tizen.WebView/Context.cs b/src/Tizen.WebView/Tizen.WebView/Context.cs index ddf2490..c1ed8ef 100644 --- a/src/Tizen.WebView/Tizen.WebView/Context.cs +++ b/src/Tizen.WebView/Tizen.WebView/Context.cs @@ -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; + + /// + /// The delegate for handling download request. + /// + /// 6 + /// url of the download request. + [EditorBrowsable(EditorBrowsableState.Never)] + public delegate void DownloadRequestDelegate(string url); + internal Context(IntPtr handle) { _handle = handle; @@ -94,5 +105,38 @@ namespace Tizen.WebView } return _cookieManager; } + + /// + /// Clears HTTP caches in the local storage and all resources cached in memory. + /// + /// 6 + public void ClearResourceCache() + { + Interop.ChromiumEwk.ewk_context_resource_cache_clear(_handle); + } + + /// + /// Informs the WebEngine low memory to release unused memory. + /// + /// 6 + [EditorBrowsable(EditorBrowsableState.Never)] + public void NotifyLowMemory() + { + Interop.ChromiumEwk.ewk_context_notify_low_memory(_handle); + } + + /// + /// Sets the delegate function for download request. + /// + /// 6 + [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); + } } } -- 2.7.4