static void test_webkit_web_back_forward_list_clear(void) { WebKitWebView* webView; WebKitWebBackForwardList* webBackForwardList; WebKitWebHistoryItem* addItem; g_test_bug("36173"); webView = WEBKIT_WEB_VIEW(webkit_web_view_new()); g_object_ref_sink(webView); webBackForwardList = webkit_web_view_get_back_forward_list(webView); g_assert(webBackForwardList); // Check that there is no item. g_assert_cmpint(webkit_web_back_forward_list_get_forward_length(webBackForwardList), ==, 0); g_assert_cmpint(webkit_web_back_forward_list_get_back_length(webBackForwardList), ==, 0); g_assert(!webkit_web_back_forward_list_get_current_item(webBackForwardList)); g_assert(!webkit_web_view_can_go_forward(webView)); g_assert(!webkit_web_view_can_go_back(webView)); // Check that clearing the empty list does not modify counters webkit_web_back_forward_list_clear(webBackForwardList); g_assert_cmpint(webkit_web_back_forward_list_get_forward_length(webBackForwardList), ==, 0); g_assert_cmpint(webkit_web_back_forward_list_get_back_length(webBackForwardList), ==, 0); g_assert(!webkit_web_back_forward_list_get_current_item(webBackForwardList)); g_assert(!webkit_web_view_can_go_forward(webView)); g_assert(!webkit_web_view_can_go_back(webView)); // Add a new item addItem = webkit_web_history_item_new_with_data("http://example.com/", "Added site"); webkit_web_back_forward_list_add_item(webBackForwardList, addItem); g_object_unref(addItem); g_assert(webkit_web_back_forward_list_contains_item(webBackForwardList, addItem)); // Check that after clearing the list the added item is no longer in the list webkit_web_back_forward_list_clear(webBackForwardList); g_assert(!webkit_web_back_forward_list_contains_item(webBackForwardList, addItem)); // Check that after clearing it, the list is empty g_assert_cmpint(webkit_web_back_forward_list_get_forward_length(webBackForwardList), ==, 0); g_assert_cmpint(webkit_web_back_forward_list_get_back_length(webBackForwardList), ==, 0); g_assert(!webkit_web_back_forward_list_get_current_item(webBackForwardList)); g_assert(!webkit_web_view_can_go_forward(webView)); g_assert(!webkit_web_view_can_go_back(webView)); g_object_unref(webView); }
static void webview_set_history(lua_State *L, WebKitWebView *view, gint idx) { gint pos, bflen; WebKitWebBackForwardList *bflist; WebKitWebHistoryItem *item = NULL; gchar *uri = NULL; if(!lua_istable(L, idx)) luaL_error(L, "invalid history table"); /* get history items table */ lua_pushliteral(L, "items"); lua_rawget(L, idx); bflen = lua_objlen(L, -1); /* create new back-forward history list */ bflist = webkit_web_back_forward_list_new_with_web_view(view); webkit_web_back_forward_list_clear(bflist); /* get position of current history item */ lua_pushliteral(L, "index"); lua_rawget(L, idx); pos = (gint)lua_tonumber(L, -1); /* load last item if out of range */ pos = (pos < 1 || pos > bflen) ? 0 : pos - bflen; lua_pop(L, 1); /* now we actually set the history to the content of the list */ for (gint i = 1; i <= bflen; i++) { lua_rawgeti(L, -1, i); lua_pushliteral(L, "title"); lua_rawget(L, -2); lua_pushliteral(L, "uri"); lua_rawget(L, -3); if (pos || i < bflen) { item = webkit_web_history_item_new_with_data(lua_tostring(L, -1), NONULL(lua_tostring(L, -2))); webkit_web_back_forward_list_add_item(bflist, item); } else uri = g_strdup(lua_tostring(L, -1)); lua_pop(L, 3); } /* load last item */ if (uri) { webkit_web_view_load_uri(view, uri); g_free(uri); /* load item in history */ } else if (bflen && webkit_web_view_can_go_back_or_forward(view, pos)) { webkit_web_view_go_back_or_forward(view, pos); /* load "about:blank" on empty history list */ } else webkit_web_view_load_uri(view, "about:blank"); lua_pop(L, 1); }
void wxWebViewWebKit::ClearHistory() { WebKitWebBackForwardList* history; history = webkit_web_view_get_back_forward_list(WEBKIT_WEB_VIEW(web_view)); webkit_web_back_forward_list_clear(history); }