18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* 28e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Copyright (C) 2008 Jan Michael C. Alonzo 30bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * Copyright (C) 2009 Igalia S.L. 48e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 58e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * This library is free software; you can redistribute it and/or 68e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * modify it under the terms of the GNU Library General Public 78e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * License as published by the Free Software Foundation; either 88e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * version 2 of the License, or (at your option) any later version. 98e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * This library is distributed in the hope that it will be useful, 118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * but WITHOUT ANY WARRANTY; without even the implied warranty of 128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Library General Public License for more details. 148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * You should have received a copy of the GNU Library General Public License 168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * along with this library; see the file COPYING.LIB. If not, write to 178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Boston, MA 02110-1301, USA. 198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */ 208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "config.h" 228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "webkitwebbackforwardlist.h" 2328040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu 2428040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu#include "BackForwardListImpl.h" 2528040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu#include "HistoryItem.h" 26cad810f21b803229eb11403f9209855525a25d57Steve Block#include "Page.h" 27cad810f21b803229eb11403f9209855525a25d57Steve Block#include "webkitglobalsprivate.h" 28f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch#include "webkitwebbackforwardlistprivate.h" 298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "webkitwebhistoryitem.h" 30f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch#include "webkitwebhistoryitemprivate.h" 318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "webkitwebview.h" 32f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch#include "webkitwebviewprivate.h" 338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include <glib.h> 348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 35635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project/** 36635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * SECTION:webkitwebbackforwardlist 37635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * @short_description: The history of a #WebKitWebView 38635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * @see_also: #WebKitWebView, #WebKitWebHistoryItem 39635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * 40635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * <informalexample><programlisting> 41635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * /<!-- -->* Get the WebKitWebBackForwardList from the WebKitWebView *<!-- -->/ 42635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * WebKitWebBackForwardList *back_forward_list = webkit_web_view_get_back_forward_list (my_web_view); 43635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * WebKitWebHistoryItem *item = webkit_web_back_forward_list_get_current_item (back_forward_list); 44635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * 45635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * /<!-- -->* Do something with a WebKitWebHistoryItem *<!-- -->/ 46635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * g_print("%p", item); 47635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * 48635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * /<!-- -->* Control some parameters *<!-- -->/ 49635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * WebKitWebBackForwardList *back_forward_list = webkit_web_view_get_back_forward_list (my_web_view); 50635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * webkit_web_back_forward_list_set_limit (back_forward_list, 30); 51635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * </programlisting></informalexample> 52635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * 53635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project */ 54635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectusing namespace WebKit; 568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectstruct _WebKitWebBackForwardListPrivate { 58e14391e94c850b8bd03680c23b38978db68687a8John Reck WebCore::BackForwardListImpl* backForwardList; 590bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch gboolean disposed; 608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}; 618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectG_DEFINE_TYPE(WebKitWebBackForwardList, webkit_web_back_forward_list, G_TYPE_OBJECT); 638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 640bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdochstatic void webkit_web_back_forward_list_dispose(GObject* object) 650bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch{ 660bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch WebKitWebBackForwardList* list = WEBKIT_WEB_BACK_FORWARD_LIST(object); 67e14391e94c850b8bd03680c23b38978db68687a8John Reck WebCore::BackForwardListImpl* backForwardList = core(list); 680bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch WebKitWebBackForwardListPrivate* priv = list->priv; 690bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 700bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch if (!priv->disposed) { 710bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch priv->disposed = true; 720bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 730bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch WebCore::HistoryItemVector items = backForwardList->entries(); 740bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch GHashTable* table = webkit_history_items(); 750bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch for (unsigned i = 0; i < items.size(); i++) 760bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch g_hash_table_remove(table, items[i].get()); 770bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch } 780bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 790bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch G_OBJECT_CLASS(webkit_web_back_forward_list_parent_class)->dispose(object); 800bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch} 810bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectstatic void webkit_web_back_forward_list_class_init(WebKitWebBackForwardListClass* klass) 838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 840bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch GObjectClass* object_class = G_OBJECT_CLASS(klass); 850bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 860bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch object_class->dispose = webkit_web_back_forward_list_dispose; 870bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 88cad810f21b803229eb11403f9209855525a25d57Steve Block webkitInit(); 890bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project g_type_class_add_private(klass, sizeof(WebKitWebBackForwardListPrivate)); 918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectstatic void webkit_web_back_forward_list_init(WebKitWebBackForwardList* webBackForwardList) 948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 95f05b935882198ccf7d81675736e3aeb089c5113aBen Murdoch webBackForwardList->priv = G_TYPE_INSTANCE_GET_PRIVATE(webBackForwardList, WEBKIT_TYPE_WEB_BACK_FORWARD_LIST, WebKitWebBackForwardListPrivate); 968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/** 99f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick * webkit_web_back_forward_list_new_with_web_view: (skip) 100635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * @web_view: the back forward list's #WebKitWebView 1018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 1028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Creates an instance of the back forward list with a controlling #WebKitWebView 1038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 1048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Return value: a #WebKitWebBackForwardList 105f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick * 106f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick * Deprecated: 1.3.4: Instances of #WebKitWebBackForwardList are 107f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick * created and owned by #WebKitWebView instances only. 1088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */ 1098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectWebKitWebBackForwardList* webkit_web_back_forward_list_new_with_web_view(WebKitWebView* webView) 1108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 1118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(webView), NULL); 1128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project WebKitWebBackForwardList* webBackForwardList; 1148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project webBackForwardList = WEBKIT_WEB_BACK_FORWARD_LIST(g_object_new(WEBKIT_TYPE_WEB_BACK_FORWARD_LIST, NULL)); 1168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project WebKitWebBackForwardListPrivate* priv = webBackForwardList->priv; 1178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 11828040489d744e0c5d475a88663056c9040ed5320Teng-Hui Zhu priv->backForwardList = static_cast<WebCore::BackForwardListImpl*>(core(webView)->backForwardList()); 1198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project priv->backForwardList->setEnabled(TRUE); 1208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return webBackForwardList; 1228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 1238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/** 1258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * webkit_web_back_forward_list_go_forward: 126635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * @web_back_forward_list: a #WebKitWebBackForwardList 1278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 1288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Steps forward in the back forward list 1298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */ 1308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid webkit_web_back_forward_list_go_forward(WebKitWebBackForwardList* webBackForwardList) 1318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 1328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project g_return_if_fail(WEBKIT_IS_WEB_BACK_FORWARD_LIST(webBackForwardList)); 1338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 134e14391e94c850b8bd03680c23b38978db68687a8John Reck WebCore::BackForwardListImpl* backForwardList = core(webBackForwardList); 1358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (backForwardList->enabled()) 1368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project backForwardList->goForward(); 1378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 1388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/** 1408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * webkit_web_back_forward_list_go_back: 141635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * @web_back_forward_list: a #WebKitWebBackForwardList 1428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 1438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Steps backward in the back forward list 1448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */ 1458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid webkit_web_back_forward_list_go_back(WebKitWebBackForwardList* webBackForwardList) 1468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 1478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project g_return_if_fail(WEBKIT_IS_WEB_BACK_FORWARD_LIST(webBackForwardList)); 1488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 149e14391e94c850b8bd03680c23b38978db68687a8John Reck WebCore::BackForwardListImpl* backForwardList = core(webBackForwardList); 1508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (backForwardList->enabled()) 1518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project backForwardList->goBack(); 1528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 1538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/** 1558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * webkit_web_back_forward_list_contains_item: 156635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * @web_back_forward_list: a #WebKitWebBackForwardList 157f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick * @history_item: (type WebKit.WebHistoryItem) (transfer none): the #WebKitWebHistoryItem to check 1588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 159635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * Checks if @web_history_item is in the back forward list 1608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 161f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick * Return value: %TRUE if @web_history_item is in the back forward list, %FALSE if it doesn't 1628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */ 1638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectgboolean webkit_web_back_forward_list_contains_item(WebKitWebBackForwardList* webBackForwardList, WebKitWebHistoryItem* webHistoryItem) 1648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 1658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project g_return_val_if_fail(WEBKIT_IS_WEB_BACK_FORWARD_LIST(webBackForwardList), FALSE); 1668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project g_return_val_if_fail(WEBKIT_IS_WEB_HISTORY_ITEM(webHistoryItem), FALSE); 1678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project WebCore::HistoryItem* historyItem = core(webHistoryItem); 1698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project g_return_val_if_fail(historyItem != NULL, FALSE); 1718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 172e14391e94c850b8bd03680c23b38978db68687a8John Reck WebCore::BackForwardListImpl* backForwardList = core(webBackForwardList); 1738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return (backForwardList->enabled() ? backForwardList->containsItem(historyItem) : FALSE); 1758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 1768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/** 1788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * webkit_web_back_forward_list_go_to_item: 179635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * @web_back_forward_list: a #WebKitWebBackForwardList 180f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick * @history_item: (type WebKit.WebHistoryItem) (transfer none): the #WebKitWebHistoryItem to go to 1818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 182635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * Go to the specified @web_history_item in the back forward list 1838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */ 1848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid webkit_web_back_forward_list_go_to_item(WebKitWebBackForwardList* webBackForwardList, WebKitWebHistoryItem* webHistoryItem) 1858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 1868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project g_return_if_fail(WEBKIT_IS_WEB_BACK_FORWARD_LIST(webBackForwardList)); 1878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project g_return_if_fail(WEBKIT_IS_WEB_HISTORY_ITEM(webHistoryItem)); 1888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project WebCore::HistoryItem* historyItem = core(webHistoryItem); 190e14391e94c850b8bd03680c23b38978db68687a8John Reck WebCore::BackForwardListImpl* backForwardList = core(webBackForwardList); 1918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (backForwardList->enabled() && historyItem) 1938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project backForwardList->goToItem(historyItem); 1948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 1958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/** 1978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * webkit_web_back_forward_list_get_forward_list_with_limit: 198635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * @web_back_forward_list: a #WebKitWebBackForwardList 1998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @limit: the number of items to retrieve 2008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 2018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Returns a list of items that succeed the current item, limited by @limit 2028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 203f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick * Return value: (element-type WebKit.WebHistoryItem) (transfer container): a #GList of items succeeding the current item, limited by @limit 2048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */ 2058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectGList* webkit_web_back_forward_list_get_forward_list_with_limit(WebKitWebBackForwardList* webBackForwardList, gint limit) 2068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 2078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project g_return_val_if_fail(WEBKIT_IS_WEB_BACK_FORWARD_LIST(webBackForwardList), NULL); 2088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 209e14391e94c850b8bd03680c23b38978db68687a8John Reck WebCore::BackForwardListImpl* backForwardList = core(webBackForwardList); 2108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!backForwardList || !backForwardList->enabled()) 2118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return NULL; 2128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project WebCore::HistoryItemVector items; 2148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project GList* forwardItems = { 0 }; 2158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project backForwardList->forwardListWithLimit(limit, items); 2178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project for (unsigned i = 0; i < items.size(); i++) { 219563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark WebKitWebHistoryItem* webHistoryItem = kit(items[i]); 220563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark forwardItems = g_list_prepend(forwardItems, webHistoryItem); 2218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 2228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 223563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark return forwardItems; 2248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 2258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/** 2278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * webkit_web_back_forward_list_get_back_list_with_limit: 228635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * @web_back_forward_list: a #WebKitWebBackForwardList 2298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @limit: the number of items to retrieve 2308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 2318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Returns a list of items that precede the current item, limited by @limit 2328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 233f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick * Return value: (element-type WebKit.WebHistoryItem) (transfer container): a #GList of items preceding the current item, limited by @limit 2348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */ 2358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectGList* webkit_web_back_forward_list_get_back_list_with_limit(WebKitWebBackForwardList* webBackForwardList, gint limit) 2368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 2378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project g_return_val_if_fail(WEBKIT_IS_WEB_BACK_FORWARD_LIST(webBackForwardList), NULL); 2388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 239e14391e94c850b8bd03680c23b38978db68687a8John Reck WebCore::BackForwardListImpl* backForwardList = core(webBackForwardList); 2408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!backForwardList || !backForwardList->enabled()) 2418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return NULL; 2428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project WebCore::HistoryItemVector items; 2448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project GList* backItems = { 0 }; 2458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project backForwardList->backListWithLimit(limit, items); 2478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project for (unsigned i = 0; i < items.size(); i++) { 249563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark WebKitWebHistoryItem* webHistoryItem = kit(items[i]); 250563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark backItems = g_list_prepend(backItems, webHistoryItem); 2518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 2528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 253563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark return backItems; 2548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 255563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 2568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/** 2578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * webkit_web_back_forward_list_get_back_item: 258dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * @web_back_forward_list: a #WebKitWebBackForwardList 2598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 2608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Returns the item that precedes the current item 2618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 262f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick * Return value: (type WebKit.WebHistoryItem) (transfer none): the #WebKitWebHistoryItem preceding the current item 2638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */ 2648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectWebKitWebHistoryItem* webkit_web_back_forward_list_get_back_item(WebKitWebBackForwardList* webBackForwardList) 2658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 2668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project g_return_val_if_fail(WEBKIT_IS_WEB_BACK_FORWARD_LIST(webBackForwardList), NULL); 2678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 268e14391e94c850b8bd03680c23b38978db68687a8John Reck WebCore::BackForwardListImpl* backForwardList = core(webBackForwardList); 2698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!backForwardList || !backForwardList->enabled()) 2708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return NULL; 2718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project WebCore::HistoryItem* historyItem = backForwardList->backItem(); 2738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return (historyItem ? kit(historyItem) : NULL); 2758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 2768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/** 2788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * webkit_web_back_forward_list_get_current_item: 279635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * @web_back_forward_list: a #WebKitWebBackForwardList 2808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 2818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Returns the current item. 2828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 2838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Returns a NULL value if the back forward list is empty 2848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 285f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick * Return value: (type WebKit.WebHistoryItem) (transfer none): a #WebKitWebHistoryItem 2868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */ 2878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectWebKitWebHistoryItem* webkit_web_back_forward_list_get_current_item(WebKitWebBackForwardList* webBackForwardList) 2888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 2898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project g_return_val_if_fail(WEBKIT_IS_WEB_BACK_FORWARD_LIST(webBackForwardList), NULL); 2908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 291e14391e94c850b8bd03680c23b38978db68687a8John Reck WebCore::BackForwardListImpl* backForwardList = core(webBackForwardList); 2928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!backForwardList || !backForwardList->enabled()) 2938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return NULL; 2948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project WebCore::HistoryItem* historyItem = backForwardList->currentItem(); 2968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 2978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return (historyItem ? kit(historyItem) : NULL); 2988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 2998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/** 3018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * webkit_web_back_forward_list_get_forward_item: 302635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * @web_back_forward_list: a #WebKitWebBackForwardList 3038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 3048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Returns the item that succeeds the current item. 3058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 3068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Returns a NULL value if there nothing that succeeds the current item 3078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 308f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick * Return value: (type WebKit.WebHistoryItem) (transfer none): a #WebKitWebHistoryItem 3098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */ 3108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectWebKitWebHistoryItem* webkit_web_back_forward_list_get_forward_item(WebKitWebBackForwardList* webBackForwardList) 3118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 3128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project g_return_val_if_fail(WEBKIT_IS_WEB_BACK_FORWARD_LIST(webBackForwardList), NULL); 3138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 314e14391e94c850b8bd03680c23b38978db68687a8John Reck WebCore::BackForwardListImpl* backForwardList = core(webBackForwardList); 3158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!backForwardList || !backForwardList->enabled()) 3168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return NULL; 3178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project WebCore::HistoryItem* historyItem = backForwardList->forwardItem(); 3198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return (historyItem ? kit(historyItem) : NULL); 3218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 3228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/** 3248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * webkit_web_back_forward_list_get_nth_item: 325635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * @web_back_forward_list: a #WebKitWebBackForwardList 3268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @index: the index of the item 3278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 3288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Returns the item at a given index relative to the current item. 3298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 330f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick * Return value: (type WebKit.WebHistoryItem) (transfer none): the #WebKitWebHistoryItem located at the specified index relative to the current item 3318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */ 3328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source ProjectWebKitWebHistoryItem* webkit_web_back_forward_list_get_nth_item(WebKitWebBackForwardList* webBackForwardList, gint index) 3338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 3348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project g_return_val_if_fail(WEBKIT_IS_WEB_BACK_FORWARD_LIST(webBackForwardList), NULL); 3358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 336e14391e94c850b8bd03680c23b38978db68687a8John Reck WebCore::BackForwardListImpl* backForwardList = core(webBackForwardList); 3378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!backForwardList) 3388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return NULL; 3398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project WebCore::HistoryItem* historyItem = backForwardList->itemAtIndex(index); 3418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return (historyItem ? kit(historyItem) : NULL); 3438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 3448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/** 3468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * webkit_web_back_forward_list_get_back_length: 347635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * @web_back_forward_list: a #WebKitWebBackForwardList 3488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 3498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Returns the number of items that preced the current item. 3508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 3518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Return value: a #gint corresponding to the number of items preceding the current item 3528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */ 3538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectgint webkit_web_back_forward_list_get_back_length(WebKitWebBackForwardList* webBackForwardList) 3548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 3558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project g_return_val_if_fail(WEBKIT_IS_WEB_BACK_FORWARD_LIST(webBackForwardList), 0); 3568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 357e14391e94c850b8bd03680c23b38978db68687a8John Reck WebCore::BackForwardListImpl* backForwardList = core(webBackForwardList); 3588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!backForwardList || !backForwardList->enabled()) 3598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return 0; 3608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return backForwardList->backListCount(); 3628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 3638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/** 3658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * webkit_web_back_forward_list_get_forward_length: 366635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * @web_back_forward_list: a #WebKitWebBackForwardList 3678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 3688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Returns the number of items that succeed the current item. 3698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 3708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Return value: a #gint corresponding to the nuber of items succeeding the current item 3718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */ 3728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectgint webkit_web_back_forward_list_get_forward_length(WebKitWebBackForwardList* webBackForwardList) 3738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 3748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project g_return_val_if_fail(WEBKIT_IS_WEB_BACK_FORWARD_LIST(webBackForwardList), 0); 3758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 376e14391e94c850b8bd03680c23b38978db68687a8John Reck WebCore::BackForwardListImpl* backForwardList = core(webBackForwardList); 3778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!backForwardList || !backForwardList->enabled()) 3788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return 0; 3798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return backForwardList->forwardListCount(); 3818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 3828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/** 3848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * webkit_web_back_forward_list_get_limit: 385635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * @web_back_forward_list: a #WebKitWebBackForwardList 3868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 3878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Returns the maximum limit of the back forward list. 3888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 389dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * Return value: a #gint indicating the number of #WebKitWebHistoryItem the back forward list can hold 3908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */ 3918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectgint webkit_web_back_forward_list_get_limit(WebKitWebBackForwardList* webBackForwardList) 3928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 3938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project g_return_val_if_fail(WEBKIT_IS_WEB_BACK_FORWARD_LIST(webBackForwardList), 0); 3948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 395e14391e94c850b8bd03680c23b38978db68687a8John Reck WebCore::BackForwardListImpl* backForwardList = core(webBackForwardList); 3968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!backForwardList || !backForwardList->enabled()) 3978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return 0; 3988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 3998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return backForwardList->capacity(); 4008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 4018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 4028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/** 4038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * webkit_web_back_forward_list_set_limit: 404635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project * @web_back_forward_list: a #WebKitWebBackForwardList 4058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * @limit: the limit to set the back forward list to 4068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 4078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Sets the maximum limit of the back forward list. If the back forward list 4088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * exceeds its capacity, items will be removed everytime a new item has been 4098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * added. 4108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */ 4118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectvoid webkit_web_back_forward_list_set_limit(WebKitWebBackForwardList* webBackForwardList, gint limit) 4128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 4138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project g_return_if_fail(WEBKIT_IS_WEB_BACK_FORWARD_LIST(webBackForwardList)); 4148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 415e14391e94c850b8bd03680c23b38978db68687a8John Reck WebCore::BackForwardListImpl* backForwardList = core(webBackForwardList); 4168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (backForwardList) 4178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project backForwardList->setCapacity(limit); 4188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 4198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 420563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark/** 421563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * webkit_web_back_forward_list_add_item: 422563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * @web_back_forward_list: a #WebKitWebBackForwardList 423f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick * @history_item: (type WebKit.WebHistoryItem) (transfer none): the #WebKitWebHistoryItem to add 424563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * 425563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * Adds the item to the #WebKitWebBackForwardList. 426563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * 4270bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * The @webBackForwardList will add a reference to the @webHistoryItem, so you 4280bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * don't need to keep a reference once you've added it to the list. 4290bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * 430563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark * Since: 1.1.1 431563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark */ 432563af33bc48281d19dce701398dbb88cb54fd7ecCary Clarkvoid webkit_web_back_forward_list_add_item(WebKitWebBackForwardList *webBackForwardList, WebKitWebHistoryItem *webHistoryItem) 433563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark{ 434563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark g_return_if_fail(WEBKIT_IS_WEB_BACK_FORWARD_LIST(webBackForwardList)); 435563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 4360bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch g_object_ref(webHistoryItem); 4370bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch 438e14391e94c850b8bd03680c23b38978db68687a8John Reck WebCore::BackForwardListImpl* backForwardList = core(webBackForwardList); 439563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark WebCore::HistoryItem* historyItem = core(webHistoryItem); 440563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 441563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark backForwardList->addItem(historyItem); 442563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark} 443563af33bc48281d19dce701398dbb88cb54fd7ecCary Clark 444dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block/** 445dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * webkit_web_back_forward_list_clear: 446f486d19d62f1bc33246748b14b14a9dfa617b57fIain Merrick * @web_back_forward_list: the #WebKitWebBackForwardList to be cleared 447dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * 448dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * Clears the @webBackForwardList by removing all its elements. Note that not even 449dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * the current page is kept in list when cleared so you would have to add it later. 450dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block * 4515af96e2c7b73ebc627c6894727826a7576d31758Leon Clarke * Since: 1.3.1 452dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block **/ 453dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Blockvoid webkit_web_back_forward_list_clear(WebKitWebBackForwardList* webBackForwardList) 454dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block{ 455dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block g_return_if_fail(WEBKIT_IS_WEB_BACK_FORWARD_LIST(webBackForwardList)); 456dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 457e14391e94c850b8bd03680c23b38978db68687a8John Reck WebCore::BackForwardListImpl* backForwardList = core(webBackForwardList); 458dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block if (!backForwardList || !backForwardList->enabled() || !backForwardList->entries().size()) 459dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block return; 460dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 461dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block // Clear the current list by setting capacity to 0 462dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block int capacity = backForwardList->capacity(); 463dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block backForwardList->setCapacity(0); 464dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block backForwardList->setCapacity(capacity); 465dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block} 466dcc8cf2e65d1aa555cce12431a16547e66b469eeSteve Block 467e14391e94c850b8bd03680c23b38978db68687a8John ReckWebCore::BackForwardListImpl* WebKit::core(WebKitWebBackForwardList* webBackForwardList) 4688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 4698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project g_return_val_if_fail(WEBKIT_IS_WEB_BACK_FORWARD_LIST(webBackForwardList), NULL); 4708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 4718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return webBackForwardList->priv ? webBackForwardList->priv->backForwardList : 0; 4728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 473