static String dumpBackForwardListForWebView() { String result = "\n============== Back Forward List ==============\n"; // FORMAT: // " (file test):fast/loader/resources/click-fragment-link.html **nav target**" // "curr-> (file test):fast/loader/resources/click-fragment-link.html#testfragment **nav target**" WebCore::BackForwardListBlackBerry* bfList = static_cast<WebCore::BackForwardListBlackBerry*>(mainFrame->page()->backForward()->client()); int maxItems = bfList->capacity(); WebCore::HistoryItemVector entries; bfList->backListWithLimit(maxItems, entries); unsigned resultSize = entries.size(); for (unsigned i = 0; i < resultSize; ++i) result = result + dumpHistoryItem(entries[i], 8, false); result = result + dumpHistoryItem(bfList->currentItem(), 8, true); bfList->forwardListWithLimit(maxItems, entries); resultSize = entries.size(); for (unsigned i = 0; i < resultSize; ++i) result = result + dumpHistoryItem(entries[i], 8, false); result = result + "===============================================\n"; return result; }
static String dumpHistoryItem(PassRefPtr<WebCore::HistoryItem> item, int indent, bool current) { String result; int start = 0; if (current) { result = result + "curr->"; start = 6; } for (int i = start; i < indent; i++) result = result + " "; String url = item->urlString(); if (url.contains("file://")) { static String layoutTestsString("/LayoutTests/"); static String fileTestString("(file test):"); String res = url.substring(url.find(layoutTestsString) + layoutTestsString.length()); if (res.isEmpty()) return result; result = result + fileTestString; result = result + res; } else result = result + url; String target = item->target(); if (!target.isEmpty()) result = result + " (in frame \"" + target + "\")"; if (item->isTargetItem()) result = result + " **nav target**"; result = result + "\n"; WebCore::HistoryItemVector children = item->children(); // Must sort to eliminate arbitrary result ordering which defeats reproducible testing. nonCopyingSort(children.begin(), children.end(), historyItemCompare); unsigned resultSize = children.size(); for (unsigned i = 0; i < resultSize; ++i) result = result + dumpHistoryItem(children[i], indent + 4, false); return result; }
/** * webkit_web_back_forward_list_get_back_list_with_limit: * @web_back_forward_list: a #WebKitWebBackForwardList * @limit: the number of items to retrieve * * Returns a list of items that precede the current item, limited by @limit * * Return value: a #GList of items preceding the current item, limited by @limit */ GList* webkit_web_back_forward_list_get_back_list_with_limit(WebKitWebBackForwardList* webBackForwardList, gint limit) { g_return_val_if_fail(WEBKIT_IS_WEB_BACK_FORWARD_LIST(webBackForwardList), NULL); WebCore::BackForwardList* backForwardList = core(webBackForwardList); if (!backForwardList || !backForwardList->enabled()) return NULL; WebCore::HistoryItemVector items; GList* backItems = { 0 }; backForwardList->backListWithLimit(limit, items); for (unsigned i = 0; i < items.size(); i++) { WebKitWebHistoryItem* webHistoryItem = webkit_web_history_item_new_with_core_item(items[i].get()); backItems = g_list_prepend(backItems, g_object_ref(webHistoryItem)); } return g_list_reverse(backItems); }