From 5683d20e2b52e43fac685f61f1d4050d28d74f8c Mon Sep 17 00:00:00 2001 From: younghajung <35090305+younghajung@users.noreply.github.com> Date: Tue, 30 Apr 2019 11:55:29 +0900 Subject: [PATCH] [WebView] Replace eina_list_* with eina_iterator_* (#805) Signed-off-by: yh106.jung --- src/Tizen.WebView/Interop/Interop.Eina.cs | 11 +++++++-- .../Tizen.WebView/BackForwardList.cs | 24 +++++++++++-------- 2 files changed, 23 insertions(+), 12 deletions(-) diff --git a/src/Tizen.WebView/Interop/Interop.Eina.cs b/src/Tizen.WebView/Interop/Interop.Eina.cs index a80d61b49..cf88bc8ad 100644 --- a/src/Tizen.WebView/Interop/Interop.Eina.cs +++ b/src/Tizen.WebView/Interop/Interop.Eina.cs @@ -29,9 +29,16 @@ internal static partial class Interop internal static extern bool eina_hash_add(IntPtr hash, string Key, string Value); [DllImport(Libraries.Eina)] - internal static extern uint eina_list_count(IntPtr list); + internal static extern IntPtr eina_list_iterator_new(IntPtr list); [DllImport(Libraries.Eina)] - internal static extern IntPtr eina_list_nth(IntPtr list, uint n); + [return: MarshalAs(UnmanagedType.U1)] + internal static extern bool eina_iterator_next(IntPtr iterator, out IntPtr data); + + [DllImport(Libraries.Eina)] + internal static extern void eina_iterator_free(IntPtr list); + + [DllImport(Libraries.Eina)] + internal static extern IntPtr eina_list_free(IntPtr list); } } diff --git a/src/Tizen.WebView/Tizen.WebView/BackForwardList.cs b/src/Tizen.WebView/Tizen.WebView/BackForwardList.cs index 49dda74f6..74f78e9d7 100644 --- a/src/Tizen.WebView/Tizen.WebView/BackForwardList.cs +++ b/src/Tizen.WebView/Tizen.WebView/BackForwardList.cs @@ -156,15 +156,17 @@ namespace Tizen.WebView /// 6 public IList BackItems(int limit) { - IntPtr backList = Interop.ChromiumEwk.ewk_back_forward_list_n_back_items_copy(_list_handle, limit); + IntPtr list = Interop.ChromiumEwk.ewk_back_forward_list_n_back_items_copy(_list_handle, limit); List backItemsList = new List(); - uint count = Interop.Eina.eina_list_count(backList); - - for(uint i=0; i < count; i++) { - IntPtr data = Interop.Eina.eina_list_nth(backList, i); + var iter = Interop.Eina.eina_list_iterator_new(list); + for (IntPtr data; Interop.Eina.eina_iterator_next(iter, out data);) { backItemsList.Add(new BackForwardListItem(data)); } + + Interop.Eina.eina_iterator_free(iter); + Interop.Eina.eina_list_free(list); + return backItemsList; } @@ -177,15 +179,17 @@ namespace Tizen.WebView /// 6 public IList ForwardItems(int limit) { - IntPtr forwardList = Interop.ChromiumEwk.ewk_back_forward_list_n_forward_items_copy(_list_handle, limit); + IntPtr list = Interop.ChromiumEwk.ewk_back_forward_list_n_forward_items_copy(_list_handle, limit); List forwardItemsList = new List(); - uint count = Interop.Eina.eina_list_count(forwardList); - - for(uint i = 0; i < count; i++) { - IntPtr data = Interop.Eina.eina_list_nth(forwardList, i); + var iter = Interop.Eina.eina_list_iterator_new(list); + for (IntPtr data; Interop.Eina.eina_iterator_next(iter, out data);) { forwardItemsList.Add(new BackForwardListItem(data)); } + + Interop.Eina.eina_iterator_free(iter); + Interop.Eina.eina_list_free(list); + return forwardItemsList; } } -- 2.34.1