1 // Copyright 2014 Samsung Electronics. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "utc_blink_ewk_base.h"
7 class utc_blink_ewk_back_forward_list_n_forward_items_copy : public utc_blink_ewk_base
10 void LoadFinished(Evas_Object*) override { EventLoopStop(Success); }
13 static const char* const TEST_URL1;
14 static const char* const TEST_URL2;
15 static const char* const TEST_URL3;
18 const char* const utc_blink_ewk_back_forward_list_n_forward_items_copy::TEST_URL1 = "ewk_history/page1.html";
19 const char* const utc_blink_ewk_back_forward_list_n_forward_items_copy::TEST_URL2 = "ewk_history/page2.html";
20 const char* const utc_blink_ewk_back_forward_list_n_forward_items_copy::TEST_URL3 = "ewk_history/page3.html";
22 TEST_F(utc_blink_ewk_back_forward_list_n_forward_items_copy, LESS_ITEMS_TEST)
24 // load 3 pages to get some interesting history
25 ASSERT_EQ(EINA_TRUE, ewk_view_url_set(GetEwkWebView(), GetResourceUrl(TEST_URL1).c_str()));
26 ASSERT_EQ(Success, EventLoopStart());
27 ASSERT_EQ(EINA_TRUE, ewk_view_url_set(GetEwkWebView(), GetResourceUrl(TEST_URL2).c_str()));
28 ASSERT_EQ(Success, EventLoopStart());
29 std::string expectedTitle2(ewk_view_title_get(GetEwkWebView()));
30 ASSERT_EQ(EINA_TRUE, ewk_view_url_set(GetEwkWebView(), GetResourceUrl(TEST_URL3).c_str()));
31 ASSERT_EQ(Success, EventLoopStart());
33 ASSERT_EQ(EINA_TRUE, ewk_view_back(GetEwkWebView()));
34 ASSERT_EQ(Success, EventLoopStart());
35 ASSERT_EQ(EINA_TRUE, ewk_view_back(GetEwkWebView()));
36 ASSERT_EQ(Success, EventLoopStart());
38 // get back-forward list
39 Ewk_Back_Forward_List *list = ewk_view_back_forward_list_get(GetEwkWebView());
42 Eina_List *fwd_list = ewk_back_forward_list_n_forward_items_copy(list, 1);
43 ASSERT_TRUE(fwd_list);
44 ASSERT_EQ(1, eina_list_count(fwd_list));
46 // get the only item and check URL, original URL and title
47 Ewk_Back_Forward_List_Item *item = static_cast<Ewk_Back_Forward_List_Item *>(fwd_list->data);
49 ASSERT_STREQ(GetResourceUrl(TEST_URL2).c_str(), ewk_back_forward_list_item_url_get(item));
50 ASSERT_STREQ(GetResourceUrl(TEST_URL2).c_str(), ewk_back_forward_list_item_original_url_get(item));
51 ASSERT_STREQ(expectedTitle2.c_str(), ewk_back_forward_list_item_title_get(item));
53 eina_list_free(fwd_list);
56 TEST_F(utc_blink_ewk_back_forward_list_n_forward_items_copy, EQUAL_ITEMS_TEST)
58 // load 3 pages to get some interesting history
59 ASSERT_EQ(EINA_TRUE, ewk_view_url_set(GetEwkWebView(), GetResourceUrl(TEST_URL1).c_str()));
60 ASSERT_EQ(Success, EventLoopStart());
61 ASSERT_EQ(EINA_TRUE, ewk_view_url_set(GetEwkWebView(), GetResourceUrl(TEST_URL2).c_str()));
62 ASSERT_EQ(Success, EventLoopStart());
63 std::string expectedTitle2(ewk_view_title_get(GetEwkWebView()));
64 ASSERT_EQ(EINA_TRUE, ewk_view_url_set(GetEwkWebView(), GetResourceUrl(TEST_URL3).c_str()));
65 ASSERT_EQ(Success, EventLoopStart());
66 std::string expectedTitle3(ewk_view_title_get(GetEwkWebView()));
68 ASSERT_EQ(EINA_TRUE, ewk_view_back(GetEwkWebView()));
69 ASSERT_EQ(Success, EventLoopStart());
70 ASSERT_EQ(EINA_TRUE, ewk_view_back(GetEwkWebView()));
71 ASSERT_EQ(Success, EventLoopStart());
73 // get back-forward list
74 Ewk_Back_Forward_List *list = ewk_view_back_forward_list_get(GetEwkWebView());
77 Eina_List *forward_list = ewk_back_forward_list_n_forward_items_copy(list, 2);
78 ASSERT_TRUE(forward_list);
79 ASSERT_EQ(2, eina_list_count(forward_list));
81 // get first item and check URL, original URL and title
82 Ewk_Back_Forward_List_Item *item = static_cast<Ewk_Back_Forward_List_Item *>(forward_list->data);
84 ASSERT_STREQ(GetResourceUrl(TEST_URL2).c_str(), ewk_back_forward_list_item_url_get(item));
85 ASSERT_STREQ(GetResourceUrl(TEST_URL2).c_str(), ewk_back_forward_list_item_original_url_get(item));
86 ASSERT_STREQ(expectedTitle2.c_str(), ewk_back_forward_list_item_title_get(item));
88 // get second item and check URL, original URL and title
89 item = static_cast<Ewk_Back_Forward_List_Item *>(forward_list->next->data);
91 ASSERT_STREQ(GetResourceUrl(TEST_URL3).c_str(), ewk_back_forward_list_item_url_get(item));
92 ASSERT_STREQ(GetResourceUrl(TEST_URL3).c_str(), ewk_back_forward_list_item_original_url_get(item));
93 ASSERT_STREQ(expectedTitle3.c_str(), ewk_back_forward_list_item_title_get(item));
95 eina_list_free(forward_list);
97 forward_list = ewk_back_forward_list_n_forward_items_copy(list, -1);
98 ASSERT_TRUE(forward_list);
99 ASSERT_EQ(2, eina_list_count(forward_list));
101 // get first item and check URL, original URL and title
102 item = static_cast<Ewk_Back_Forward_List_Item *>(forward_list->data);
104 ASSERT_STREQ(GetResourceUrl(TEST_URL2).c_str(), ewk_back_forward_list_item_url_get(item));
105 ASSERT_STREQ(GetResourceUrl(TEST_URL2).c_str(), ewk_back_forward_list_item_original_url_get(item));
106 ASSERT_STREQ(expectedTitle2.c_str(), ewk_back_forward_list_item_title_get(item));
108 // get second item and check URL, original URL and title
109 item = static_cast<Ewk_Back_Forward_List_Item *>(forward_list->next->data);
111 ASSERT_STREQ(GetResourceUrl(TEST_URL3).c_str(), ewk_back_forward_list_item_url_get(item));
112 ASSERT_STREQ(GetResourceUrl(TEST_URL3).c_str(), ewk_back_forward_list_item_original_url_get(item));
113 ASSERT_STREQ(expectedTitle3.c_str(), ewk_back_forward_list_item_title_get(item));
115 eina_list_free(forward_list);
118 TEST_F(utc_blink_ewk_back_forward_list_n_forward_items_copy, MORE_ITEMS_TEST)
120 // load 3 pages to get some interesting history
121 ASSERT_EQ(EINA_TRUE, ewk_view_url_set(GetEwkWebView(), GetResourceUrl(TEST_URL1).c_str()));
122 ASSERT_EQ(Success, EventLoopStart());
123 ASSERT_EQ(EINA_TRUE, ewk_view_url_set(GetEwkWebView(), GetResourceUrl(TEST_URL2).c_str()));
124 ASSERT_EQ(Success, EventLoopStart());
125 std::string expectedTitle2(ewk_view_title_get(GetEwkWebView()));
126 ASSERT_EQ(EINA_TRUE, ewk_view_url_set(GetEwkWebView(), GetResourceUrl(TEST_URL3).c_str()));
127 ASSERT_EQ(Success, EventLoopStart());
128 std::string expectedTitle3(ewk_view_title_get(GetEwkWebView()));
130 ASSERT_EQ(EINA_TRUE, ewk_view_back(GetEwkWebView()));
131 ASSERT_EQ(Success, EventLoopStart());
132 ASSERT_EQ(EINA_TRUE, ewk_view_back(GetEwkWebView()));
133 ASSERT_EQ(Success, EventLoopStart());
135 // get back-forward list
136 Ewk_Back_Forward_List *list = ewk_view_back_forward_list_get(GetEwkWebView());
139 Eina_List *fwd_list = ewk_back_forward_list_n_forward_items_copy(list, 10);
140 ASSERT_TRUE(fwd_list);
141 ASSERT_EQ(2, eina_list_count(fwd_list));
143 // get first item and check URL, original URL and title
144 Ewk_Back_Forward_List_Item *item = static_cast<Ewk_Back_Forward_List_Item *>(fwd_list->data);
146 ASSERT_STREQ(GetResourceUrl(TEST_URL2).c_str(), ewk_back_forward_list_item_url_get(item));
147 ASSERT_STREQ(GetResourceUrl(TEST_URL2).c_str(), ewk_back_forward_list_item_original_url_get(item));
148 ASSERT_STREQ(expectedTitle2.c_str(), ewk_back_forward_list_item_title_get(item));
150 // get second item and check URL, original URL and title
151 item = static_cast<Ewk_Back_Forward_List_Item *>(fwd_list->next->data);
153 ASSERT_STREQ(GetResourceUrl(TEST_URL3).c_str(), ewk_back_forward_list_item_url_get(item));
154 ASSERT_STREQ(GetResourceUrl(TEST_URL3).c_str(), ewk_back_forward_list_item_original_url_get(item));
155 ASSERT_STREQ(expectedTitle3.c_str(), ewk_back_forward_list_item_title_get(item));
157 eina_list_free(fwd_list);
160 TEST_F(utc_blink_ewk_back_forward_list_n_forward_items_copy, EMPTY_TEST)
162 Ewk_Back_Forward_List *list = ewk_view_back_forward_list_get(GetEwkWebView());
164 Eina_List *fwd_list = ewk_back_forward_list_n_forward_items_copy(list, -1);
165 ASSERT_EQ(0, eina_list_count(fwd_list));
168 TEST_F(utc_blink_ewk_back_forward_list_n_forward_items_copy, NULL_TEST)
170 ASSERT_FALSE(ewk_back_forward_list_n_forward_items_copy(NULL, -1));