[NUI] Update webview TCs.
[platform/core/csapi/tizenfx.git] / test / Tizen.NUI.Tests / Tizen.NUI.Devel.Tests / testcase / internal / WebView / TSWebBackForwardList.cs
index 6fab626..b0a73fa 100755 (executable)
@@ -3,6 +3,7 @@ using NUnit.Framework;
 using NUnit.Framework.TUnit;
 using Tizen.NUI.Components;
 using Tizen.NUI.BaseComponents;
+using System.Threading.Tasks;
 
 namespace Tizen.NUI.Devel.Tests
 {
@@ -13,17 +14,25 @@ namespace Tizen.NUI.Devel.Tests
     public class InternalWebBackForwardListTest
     {
         private const string tag = "NUITEST";
-        private string url = Tizen.Applications.Application.Current.DirectoryInfo.Resource + "picture.png";
+        private string url = $"file://{Applications.Application.Current.DirectoryInfo.Resource}webview/index.html";
+        private string secondUrl = $"file://{Applications.Application.Current.DirectoryInfo.Resource}webview/second.html";
+        private BaseComponents.WebView webView = null;
 
         [SetUp]
         public void Init()
         {
+            webView = new BaseComponents.WebView()
+            {
+                Size = new Size(150, 100),
+            };
             tlog.Info(tag, "Init() is called!");
         }
 
         [TearDown]
         public void Destroy()
         {
+            tlog.Info(tag, "Destroy() is being called!");
+            webView.Dispose();
             tlog.Info(tag, "Destroy() is called!");
         }
 
@@ -35,17 +44,31 @@ namespace Tizen.NUI.Devel.Tests
         [Property("CRITERIA", "PRO")]
         [Property("COVPARAM", "")]
         [Property("AUTHOR", "guowei.wang@samsung.com")]
-        public void WebBackForwardListConstructor()
+        public async Task WebBackForwardListConstructor()
         {
             tlog.Debug(tag, $"WebBackForwardListConstructor START");
 
-            var testingTarget = new Tizen.NUI.BaseComponents.WebView("Shanghai", "Asia/Shanghai");
-            Assert.IsNotNull(testingTarget, "null handle");
-            Assert.IsInstanceOf<Tizen.NUI.BaseComponents.WebView>(testingTarget, "Should return WebView instance.");
+            TaskCompletionSource<bool> tcs = new TaskCompletionSource<bool>(false);
+            EventHandler<WebViewPageLoadEventArgs> onLoadFinished = (s, e) =>
+            {
+                tlog.Info(tag, "onLoadFinished is called!");
+                tcs.TrySetResult(true);
+            };
+            webView.PageLoadFinished += onLoadFinished;
+
+            webView.LoadUrl(url);
+            var result = await tcs.Task;
+            Assert.IsTrue(result, "PageLoadFinished event should be invoked.");
+
+            // Make current thread (CPU) sleep...
+            await Task.Delay(1);
+
+            Assert.IsNotNull(webView.BackForwardList, "null handle");
+            Assert.IsInstanceOf<WebBackForwardList>(webView.BackForwardList, "Should return WebBackForwardList instance.");
+            Assert.Greater(webView.BackForwardList.ItemCount, 0, "ItemCount should be greater than 0.");
 
-            tlog.Debug(tag, "ItemCount : " + testingTarget.BackForwardList.ItemCount);
+            webView.PageLoadFinished -= onLoadFinished;
 
-            testingTarget.Dispose();
             tlog.Debug(tag, $"WebBackForwardListConstructor END (OK)");
         }
 
@@ -57,17 +80,29 @@ namespace Tizen.NUI.Devel.Tests
         [Property("CRITERIA", "MR")]
         [Property("COVPARAM", "")]
         [Property("AUTHOR", "guowei.wang@samsung.com")]
-        public void WebBackForwardListGetCurrentItem()
+        public async Task WebBackForwardListGetCurrentItem()
         {
             tlog.Debug(tag, $"WebBackForwardListGetCurrentItem START");
 
-            var testingTarget = new Tizen.NUI.BaseComponents.WebView("Shanghai", "Asia/Shanghai");
-            Assert.IsNotNull(testingTarget, "null handle");
-            Assert.IsInstanceOf<Tizen.NUI.BaseComponents.WebView>(testingTarget, "Should return WebView instance.");
+            TaskCompletionSource<bool> tcs = new TaskCompletionSource<bool>(false);
+            EventHandler<WebViewPageLoadEventArgs> onLoadFinished = (s, e) =>
+            {
+                tlog.Info(tag, "onLoadFinished is called!");
+                tcs.TrySetResult(true);
+            };
+            webView.PageLoadFinished += onLoadFinished;
+
+            webView.LoadUrl(url);
+            var result = await tcs.Task;
+            Assert.IsTrue(result, "PageLoadFinished event should be invoked.");
+
+            // Make current thread (CPU) sleep...
+            await Task.Delay(1);
+
+            Assert.IsNotNull(webView.BackForwardList.GetCurrentItem(), "handle should not be null.");
 
-            tlog.Debug(tag, "GetCurrentItem : " + testingTarget.BackForwardList.GetCurrentItem());
+            webView.PageLoadFinished -= onLoadFinished;
 
-            testingTarget.Dispose();
             tlog.Debug(tag, $"WebBackForwardListGetCurrentItem END (OK)");
         }
 
@@ -79,17 +114,47 @@ namespace Tizen.NUI.Devel.Tests
         [Property("CRITERIA", "MR")]
         [Property("COVPARAM", "")]
         [Property("AUTHOR", "guowei.wang@samsung.com")]
-        public void WebBackForwardListGetPreviousItem()
+        public async Task WebBackForwardListGetPreviousItem()
         {
             tlog.Debug(tag, $"WebBackForwardListGetPreviousItem START");
 
-            var testingTarget = new Tizen.NUI.BaseComponents.WebView("Shanghai", "Asia/Shanghai");
-            Assert.IsNotNull(testingTarget, "null handle");
-            Assert.IsInstanceOf<Tizen.NUI.BaseComponents.WebView>(testingTarget, "Should return WebView instance.");
+            TaskCompletionSource<bool> tcs = new TaskCompletionSource<bool>(false);
+            EventHandler<WebViewPageLoadEventArgs> onLoadFinished = (s, e) =>
+            {
+                tlog.Info(tag, "onLoadFinished is called!");
+                tcs.TrySetResult(true);
+            };
+            webView.PageLoadFinished += onLoadFinished;
+
+            webView.LoadUrl(url);
+            var result = await tcs.Task;
+            Assert.IsTrue(result, "PageLoadFinished event should be invoked");
+
+            // Make current thread (CPU) sleep...
+            await Task.Delay(1);
+
+            webView.PageLoadFinished -= onLoadFinished;
+
+            // Load second url.
+            TaskCompletionSource<bool> tcs2 = new TaskCompletionSource<bool>(false);
+            EventHandler<WebViewPageLoadEventArgs> onLoadFinished2 = (s, e) =>
+            {
+                tlog.Info(tag, "onLoadFinished is called!");
+                tcs2.TrySetResult(true);
+            };
+            webView.PageLoadFinished += onLoadFinished2;
+
+            webView.LoadUrl(secondUrl);
+            var result2 = await tcs2.Task;
+            Assert.IsTrue(result2, "PageLoadFinished event should be invoked");
+
+            // Make current thread (CPU) sleep...
+            await Task.Delay(1);
 
-            tlog.Debug(tag, "GetCurrentItem : " + testingTarget.BackForwardList.GetPreviousItem());
+            Assert.IsNotNull(webView.BackForwardList.GetPreviousItem(), "handle should not be null.");
+
+            webView.PageLoadFinished -= onLoadFinished2;
 
-            testingTarget.Dispose();
             tlog.Debug(tag, $"WebBackForwardListGetPreviousItem END (OK)");
         }
 
@@ -101,17 +166,48 @@ namespace Tizen.NUI.Devel.Tests
         [Property("CRITERIA", "MR")]
         [Property("COVPARAM", "")]
         [Property("AUTHOR", "guowei.wang@samsung.com")]
-        public void WebBackForwardListGetNextItem()
+        public async Task WebBackForwardListGetNextItem()
         {
             tlog.Debug(tag, $"WebBackForwardListGetNextItem START");
 
-            var testingTarget = new Tizen.NUI.BaseComponents.WebView("Shanghai", "Asia/Shanghai");
-            Assert.IsNotNull(testingTarget, "null handle");
-            Assert.IsInstanceOf<Tizen.NUI.BaseComponents.WebView>(testingTarget, "Should return WebView instance.");
+            TaskCompletionSource<bool> tcs = new TaskCompletionSource<bool>(false);
+            EventHandler<WebViewPageLoadEventArgs> onLoadFinished = (s, e) =>
+            {
+                tlog.Info(tag, "onLoadFinished is called!");
+                tcs.TrySetResult(true);
+            };
+            webView.PageLoadFinished += onLoadFinished;
+
+            webView.LoadUrl(url);
+            var result = await tcs.Task;
+            Assert.IsTrue(result, "PageLoadFinished event should be invoked");
+
+            // Make current thread (CPU) sleep...
+            await Task.Delay(1);
+
+            webView.PageLoadFinished -= onLoadFinished;
+
+            // Load second url.
+            TaskCompletionSource<bool> tcs2 = new TaskCompletionSource<bool>(false);
+            EventHandler<WebViewPageLoadEventArgs> onLoadFinished2 = (s, e) =>
+            {
+                tlog.Info(tag, "onLoadFinished is called!");
+                tcs2.TrySetResult(true);
+            };
+            webView.PageLoadFinished += onLoadFinished2;
+
+            webView.LoadUrl(secondUrl);
+            var result2 = await tcs2.Task;
+            Assert.IsTrue(result2, "PageLoadFinished event should be invoked");
+
+            // Make current thread (CPU) sleep...
+            await Task.Delay(1);
 
-            tlog.Debug(tag, "GetNextItem : " + testingTarget.BackForwardList.GetNextItem());
+            webView.GoBack();
+            Assert.IsNotNull(webView.BackForwardList.GetNextItem(), "handle should not be null.");
+
+            webView.PageLoadFinished -= onLoadFinished2;
 
-            testingTarget.Dispose();
             tlog.Debug(tag, $"WebBackForwardListGetNextItem END (OK)");
         }
 
@@ -123,64 +219,155 @@ namespace Tizen.NUI.Devel.Tests
         [Property("CRITERIA", "MR")]
         [Property("COVPARAM", "")]
         [Property("AUTHOR", "guowei.wang@samsung.com")]
-        public void WebBackForwardListGetItemAtIndex()
+        public async Task WebBackForwardListGetItemAtIndex()
         {
             tlog.Debug(tag, $"WebBackForwardListGetItemAtIndex START");
 
-            var testingTarget = new Tizen.NUI.BaseComponents.WebView("Shanghai", "Asia/Shanghai");
-            Assert.IsNotNull(testingTarget, "null handle");
-            Assert.IsInstanceOf<Tizen.NUI.BaseComponents.WebView>(testingTarget, "Should return WebView instance.");
-
-            tlog.Debug(tag, "GetItemAtIndex : " + testingTarget.BackForwardList.GetItemAtIndex(0));
+            TaskCompletionSource<bool> tcs = new TaskCompletionSource<bool>(false);
+            EventHandler<WebViewPageLoadEventArgs> onLoadFinished = (s, e) =>
+            {
+                tlog.Info(tag, "onLoadFinished is called!");
+                tcs.TrySetResult(true);
+            };
+            webView.PageLoadFinished += onLoadFinished;
 
-            testingTarget.Dispose();
-            tlog.Debug(tag, $"WebBackForwardListGetItemAtIndex END (OK)");
-        }
+            webView.LoadUrl(url);
+            var result = await tcs.Task;
+            Assert.IsTrue(result, "PageLoadFinished event should be invoked");
 
-        [Test]
-        [Category("P1")]
-        [Description("WebBackForwardList GetBackwardItems.")]
-        [Property("SPEC", "Tizen.NUI.WebBackForwardList.GetBackwardItems M")]
-        [Property("SPEC_URL", "-")]
-        [Property("CRITERIA", "MR")]
-        [Property("COVPARAM", "")]
-        [Property("AUTHOR", "guowei.wang@samsung.com")]
-        public void WebBackForwardListGetBackwardItems()
-        {
-            tlog.Debug(tag, $"WebBackForwardListGetBackwardItems START");
+            // Make current thread (CPU) sleep...
+            await Task.Delay(1);
 
-            var testingTarget = new Tizen.NUI.BaseComponents.WebView("Shanghai", "Asia/Shanghai");
-            Assert.IsNotNull(testingTarget, "null handle");
-            Assert.IsInstanceOf<Tizen.NUI.BaseComponents.WebView>(testingTarget, "Should return WebView instance.");
+            webView.PageLoadFinished -= onLoadFinished;
 
-            tlog.Debug(tag, "GetBackwardItems : " + testingTarget.BackForwardList.GetBackwardItems(0));
+            // Load second url.
+            TaskCompletionSource<bool> tcs2 = new TaskCompletionSource<bool>(false);
+            EventHandler<WebViewPageLoadEventArgs> onLoadFinished2 = (s, e) =>
+            {
+                tlog.Info(tag, "onLoadFinished is called!");
+                tcs2.TrySetResult(true);
+            };
+            webView.PageLoadFinished += onLoadFinished2;
 
-            testingTarget.Dispose();
-            tlog.Debug(tag, $"WebBackForwardListGetBackwardItems END (OK)");
-        }
+            webView.LoadUrl(secondUrl);
+            var result2 = await tcs2.Task;
+            Assert.IsTrue(result2, "PageLoadFinished event should be invoked");
 
-        [Test]
-        [Category("P1")]
-        [Description("WebBackForwardList GetForwardItems.")]
-        [Property("SPEC", "Tizen.NUI.WebBackForwardList.GetForwardItems M")]
-        [Property("SPEC_URL", "-")]
-        [Property("CRITERIA", "MR")]
-        [Property("COVPARAM", "")]
-        [Property("AUTHOR", "guowei.wang@samsung.com")]
-        public void WebBackForwardListGetForwardItems()
-        {
-            tlog.Debug(tag, $"WebBackForwardListGetForwardItems START");
+            // Make current thread (CPU) sleep...
+            await Task.Delay(1);
 
-            var testingTarget = new Tizen.NUI.BaseComponents.WebView("Shanghai", "Asia/Shanghai");
-            Assert.IsNotNull(testingTarget, "null handle");
-            Assert.IsInstanceOf<Tizen.NUI.BaseComponents.WebView>(testingTarget, "Should return WebView instance.");
+            Assert.IsNotNull(webView.BackForwardList.GetItemAtIndex(0), "handle should not be null.");
 
-            tlog.Debug(tag, "GetForwardItems : " + testingTarget.BackForwardList.GetForwardItems(0));
+            webView.PageLoadFinished -= onLoadFinished2;
 
-            testingTarget.Dispose();
-            tlog.Debug(tag, $"WebBackForwardListGetForwardItems END (OK)");
+            tlog.Debug(tag, $"WebBackForwardListGetItemAtIndex END (OK)");
         }
 
+        //[Test]
+        //[Category("P1")]
+        //[Description("WebBackForwardList GetBackwardItems.")]
+        //[Property("SPEC", "Tizen.NUI.WebBackForwardList.GetBackwardItems M")]
+        //[Property("SPEC_URL", "-")]
+        //[Property("CRITERIA", "MR")]
+        //[Property("COVPARAM", "")]
+        //[Property("AUTHOR", "guowei.wang@samsung.com")]
+        //public async Task WebBackForwardListGetBackwardItems()
+        //{
+        //    tlog.Debug(tag, $"WebBackForwardListGetBackwardItems START");
+
+        //    TaskCompletionSource<bool> tcs = new TaskCompletionSource<bool>(false);
+        //    EventHandler<WebViewPageLoadEventArgs> onLoadFinished = (s, e) =>
+        //    {
+        //        tlog.Info(tag, "onLoadFinished is called!");
+        //        tcs.TrySetResult(true);
+        //    };
+        //    webView.PageLoadFinished += onLoadFinished;
+
+        //    webView.LoadUrl(url);
+        //    var result = await tcs.Task;
+        //    Assert.IsTrue(result, "PageLoadFinished event should be invoked");
+
+        //    // Make current thread (CPU) sleep...
+        //    await Task.Delay(1);
+
+        //    webView.PageLoadFinished -= onLoadFinished;
+
+        //    // Load second url.
+        //    TaskCompletionSource<bool> tcs2 = new TaskCompletionSource<bool>(false);
+        //    EventHandler<WebViewPageLoadEventArgs> onLoadFinished2 = (s, e) =>
+        //    {
+        //        tlog.Info(tag, "onLoadFinished is called!");
+        //        tcs2.TrySetResult(true);
+        //    };
+        //    webView.PageLoadFinished += onLoadFinished2;
+
+        //    webView.LoadUrl(secondUrl);
+        //    var result2 = await tcs2.Task;
+        //    Assert.IsTrue(result2, "PageLoadFinished event should be invoked");
+
+        //    // Make current thread (CPU) sleep...
+        //    await Task.Delay(1);
+
+        //    Assert.IsNotNull(webView.BackForwardList.GetBackwardItems(1), "handle should not be null.");
+
+        //    webView.PageLoadFinished -= onLoadFinished2;
+
+        //    tlog.Debug(tag, $"WebBackForwardListGetBackwardItems END (OK)");
+        //}
+
+        //[Test]
+        //[Category("P1")]
+        //[Description("WebBackForwardList GetForwardItems.")]
+        //[Property("SPEC", "Tizen.NUI.WebBackForwardList.GetForwardItems M")]
+        //[Property("SPEC_URL", "-")]
+        //[Property("CRITERIA", "MR")]
+        //[Property("COVPARAM", "")]
+        //[Property("AUTHOR", "guowei.wang@samsung.com")]
+        //public async Task WebBackForwardListGetForwardItems()
+        //{
+        //    tlog.Debug(tag, $"WebBackForwardListGetForwardItems START");
+
+        //    TaskCompletionSource<bool> tcs = new TaskCompletionSource<bool>(false);
+        //    EventHandler<WebViewPageLoadEventArgs> onLoadFinished = (s, e) =>
+        //    {
+        //        tlog.Info(tag, "onLoadFinished is called!");
+        //        tcs.TrySetResult(true);
+        //    };
+        //    webView.PageLoadFinished += onLoadFinished;
+
+        //    webView.LoadUrl(url);
+        //    var result = await tcs.Task;
+        //    Assert.IsTrue(result, "PageLoadFinished event should be invoked");
+
+        //    // Make current thread (CPU) sleep...
+        //    await Task.Delay(1);
+
+        //    webView.PageLoadFinished -= onLoadFinished;
+
+        //    // Load second url.
+        //    TaskCompletionSource<bool> tcs2 = new TaskCompletionSource<bool>(false);
+        //    EventHandler<WebViewPageLoadEventArgs> onLoadFinished2 = (s, e) =>
+        //    {
+        //        tlog.Info(tag, "onLoadFinished is called!");
+        //        tcs2.TrySetResult(true);
+        //    };
+        //    webView.PageLoadFinished += onLoadFinished2;
+
+        //    webView.LoadUrl(secondUrl);
+        //    var result2 = await tcs2.Task;
+        //    Assert.IsTrue(result2, "PageLoadFinished event should be invoked");
+
+        //    // Make current thread (CPU) sleep...
+        //    await Task.Delay(1);
+
+        //    webView.GoBack();
+        //    Assert.IsNotNull(webView.BackForwardList.GetForwardItems(1), "handle should not be null.");
+
+        //    webView.PageLoadFinished -= onLoadFinished2;
+
+        //    tlog.Debug(tag, $"WebBackForwardListGetForwardItems END (OK)");
+        //}
+
         [Test]
         [Category("P1")]
         [Description("WebBackForwardListItem Url.")]
@@ -189,20 +376,31 @@ namespace Tizen.NUI.Devel.Tests
         [Property("CRITERIA", "PRO")]
         [Property("COVPARAM", "")]
         [Property("AUTHOR", "guowei.wang@samsung.com")]
-        public void WebBackForwardListItemUrl()
+        public async Task WebBackForwardListItemUrl()
         {
             tlog.Debug(tag, $"WebBackForwardListItemUrl START");
 
-            using (Tizen.NUI.BaseComponents.WebView webView = new Tizen.NUI.BaseComponents.WebView("Shanghai", "Asia/Shanghai"))
+            TaskCompletionSource<bool> tcs = new TaskCompletionSource<bool>(false);
+            EventHandler<WebViewPageLoadEventArgs> onLoadFinished = (s, e) =>
             {
-                var testingTarget = webView.BackForwardList.GetCurrentItem();
-                Assert.IsNotNull(testingTarget, "null handle");
-                Assert.IsInstanceOf<WebBackForwardListItem>(testingTarget, "Should return WebBackForwardListItem instance.");
+                tlog.Info(tag, "onLoadFinished is called!");
+                tcs.TrySetResult(true);
+            };
+            webView.PageLoadFinished += onLoadFinished;
+
+            webView.LoadUrl(url);
+            var result = await tcs.Task;
+            Assert.IsTrue(result, "PageLoadFinished event should be invoked.");
+
+            // Make current thread (CPU) sleep...
+            await Task.Delay(1);
 
-                tlog.Debug(tag, "Url : " + testingTarget.Url);
+            var testingTarget = webView.BackForwardList.GetCurrentItem();
+            Assert.IsNotNull(testingTarget, "Handle should not be null.");
+            Assert.IsNotNull(testingTarget.Url, "Url should not be null.");
+            Assert.IsTrue(testingTarget.Url.Contains("index.html"), "Url of current item should contain a correct string.");
 
-                testingTarget.Dispose();
-            }
+            webView.PageLoadFinished -= onLoadFinished;
 
             tlog.Debug(tag, $"WebBackForwardListItemUrl END (OK)");
         }
@@ -215,20 +413,31 @@ namespace Tizen.NUI.Devel.Tests
         [Property("CRITERIA", "PRO")]
         [Property("COVPARAM", "")]
         [Property("AUTHOR", "guowei.wang@samsung.com")]
-        public void WebBackForwardListItemTitle()
+        public async Task WebBackForwardListItemTitle()
         {
             tlog.Debug(tag, $"WebBackForwardListItemTitle START");
 
-            using (Tizen.NUI.BaseComponents.WebView webView = new Tizen.NUI.BaseComponents.WebView("Shanghai", "Asia/Shanghai"))
+            TaskCompletionSource<bool> tcs = new TaskCompletionSource<bool>(false);
+            EventHandler<WebViewPageLoadEventArgs> onLoadFinished = (s, e) =>
             {
-                var testingTarget = webView.BackForwardList.GetCurrentItem();
-                Assert.IsNotNull(testingTarget, "null handle");
-                Assert.IsInstanceOf<WebBackForwardListItem>(testingTarget, "Should return WebBackForwardListItem instance.");
+                tlog.Info(tag, "onLoadFinished is called!");
+                tcs.TrySetResult(true);
+            };
+            webView.PageLoadFinished += onLoadFinished;
 
-                tlog.Debug(tag, "Title : " + testingTarget.Title);
+            webView.LoadUrl(url);
+            var result = await tcs.Task;
+            Assert.IsTrue(result, "PageLoadFinished event should be invoked.");
 
-                testingTarget.Dispose();
-            }
+            // Make current thread (CPU) sleep...
+            await Task.Delay(1);
+
+            var testingTarget = webView.BackForwardList.GetCurrentItem();
+            Assert.IsNotNull(testingTarget, "handle should not be null.");
+            Assert.IsNotNull(testingTarget.Title, "Title should not be null.");
+            Assert.IsTrue(testingTarget.Title.Contains("Title"), "Title of current item should contain a correct string.");
+
+            webView.PageLoadFinished -= onLoadFinished;
 
             tlog.Debug(tag, $"WebBackForwardListItemTitle END (OK)");
         }
@@ -241,50 +450,33 @@ namespace Tizen.NUI.Devel.Tests
         [Property("CRITERIA", "PRO")]
         [Property("COVPARAM", "")]
         [Property("AUTHOR", "guowei.wang@samsung.com")]
-        public void WebBackForwardListItemOriginalUrl()
+        public async Task WebBackForwardListItemOriginalUrl()
         {
             tlog.Debug(tag, $"WebBackForwardListItemOriginalUrl START");
 
-            using (Tizen.NUI.BaseComponents.WebView webView = new Tizen.NUI.BaseComponents.WebView("Shanghai", "Asia/Shanghai"))
+            TaskCompletionSource<bool> tcs = new TaskCompletionSource<bool>(false);
+            EventHandler<WebViewPageLoadEventArgs> onLoadFinished = (s, e) =>
             {
-                var testingTarget = webView.BackForwardList.GetCurrentItem();
-                Assert.IsNotNull(testingTarget, "null handle");
-                Assert.IsInstanceOf<WebBackForwardListItem>(testingTarget, "Should return WebBackForwardListItem instance.");
+                tlog.Info(tag, "onLoadFinished is called!");
+                tcs.TrySetResult(true);
+            };
+            webView.PageLoadFinished += onLoadFinished;
 
-                tlog.Debug(tag, "OriginalUrl : " + testingTarget.OriginalUrl);
+            webView.LoadUrl(url);
+            var result = await tcs.Task;
+            Assert.IsTrue(result, "PageLoadFinished event should be invoked.");
 
-                testingTarget.Dispose();
-            }
+            // Make current thread (CPU) sleep...
+            await Task.Delay(1);
 
-            tlog.Debug(tag, $"WebBackForwardListItemOriginalUrl END (OK)");
-        }
+            var testingTarget = webView.BackForwardList.GetCurrentItem();
+            Assert.IsNotNull(testingTarget, "Handle should not be null.");
+            Assert.IsNotNull(testingTarget.OriginalUrl, "Url should not be null.");
+            Assert.IsTrue(testingTarget.OriginalUrl.Contains("index.html"), "Url of current item should contain a correct string.");
 
-        [Test]
-        [Category("P1")]
-        [Description("WebBackForwardSubList ItemCount.")]
-        [Property("SPEC", "Tizen.NUI.WebBackForwardSubList.ItemCount A")]
-        [Property("SPEC_URL", "-")]
-        [Property("CRITERIA", "PRO")]
-        [Property("COVPARAM", "")]
-        [Property("AUTHOR", "guowei.wang@samsung.com")]
-        public void WebBackForwardSubListItemCount()
-        {
-            tlog.Debug(tag, $"WebBackForwardSubListItemCount START");
-
-            using (Tizen.NUI.BaseComponents.WebView webView = new Tizen.NUI.BaseComponents.WebView("Shanghai", "Asia/Shanghai"))
-            {
-                webView.LoadUrl("https://www.cnblogs.com/softidea/p/5745369.html");
+            webView.PageLoadFinished -= onLoadFinished;
 
-                var testingTarget = webView.BackForwardList.GetBackwardItems(0);
-                Assert.IsNotNull(testingTarget, "null handle");
-                Assert.IsInstanceOf<WebBackForwardSubList>(testingTarget, "Should return WebBackForwardSubList instance.");
-
-                tlog.Error(tag, "ItemCount : " + testingTarget.ItemCount);
-
-                testingTarget.Dispose();
-            }
-
-            tlog.Debug(tag, $"WebBackForwardSubListItemCount END (OK)");
+            tlog.Debug(tag, $"WebBackForwardListItemOriginalUrl END (OK)");
         }
     }
 }