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