static string dumpHistoryItem(const WebHistoryItem& item, int indent, bool isCurrent) { string result; if (isCurrent) { result.append("curr->"); result.append(indent - 6, ' '); // 6 == "curr->".length() } else { result.append(indent, ' '); } string url = item.urlString().utf8(); size_t pos; if (!url.find(fileUrlPattern) && ((pos = url.find(layoutTestsPattern)) != string::npos)) { // adjust file URLs to match upstream results. url.replace(0, pos + layoutTestsPatternSize, fileTestPrefix); } else if (!url.find(dataUrlPattern)) { // URL-escape data URLs to match results upstream. string path = webkit_support::EscapePath(url.substr(dataUrlPatternSize)); url.replace(dataUrlPatternSize, url.length(), path); } result.append(url); if (!item.target().isEmpty()) { result.append(" (in frame \""); result.append(item.target().utf8()); result.append("\")"); } if (item.isTargetItem()) result.append(" **nav target**"); result.append("\n"); const WebVector<WebHistoryItem>& children = item.children(); if (!children.isEmpty()) { // Must sort to eliminate arbitrary result ordering which defeats // reproducible testing. // FIXME: WebVector should probably just be a std::vector!! std::vector<WebHistoryItem> sortedChildren; for (size_t i = 0; i < children.size(); ++i) sortedChildren.push_back(children[i]); std::sort(sortedChildren.begin(), sortedChildren.end(), HistoryItemCompareLess); for (size_t i = 0; i < sortedChildren.size(); ++i) result += dumpHistoryItem(sortedChildren[i], indent + 4, false); } return result; }
static string dumpHistoryItem(const WebHistoryItem& item, int indent, bool isCurrent) { string result; if (isCurrent) { result.append("curr->"); result.append(indent - 6, ' '); // 6 == "curr->".length() } else result.append(indent, ' '); string url = normalizeLayoutTestURLInternal(item.urlString().utf8()); result.append(url); if (!item.target().isEmpty()) { result.append(" (in frame \""); result.append(item.target().utf8()); result.append("\")"); } if (item.isTargetItem()) result.append(" **nav target**"); result.append("\n"); const WebVector<WebHistoryItem>& children = item.children(); if (!children.isEmpty()) { // Must sort to eliminate arbitrary result ordering which defeats // reproducible testing. // FIXME: WebVector should probably just be a std::vector!! std::vector<WebHistoryItem> sortedChildren; for (size_t i = 0; i < children.size(); ++i) sortedChildren.push_back(children[i]); std::sort(sortedChildren.begin(), sortedChildren.end(), HistoryItemCompareLess); for (size_t i = 0; i < sortedChildren.size(); ++i) result += dumpHistoryItem(sortedChildren[i], indent + 4, false); } return result; }