| Index: Source/core/history/HistoryItem.cpp
|
| diff --git a/Source/core/history/HistoryItem.cpp b/Source/core/history/HistoryItem.cpp
|
| index 4c488047d17b2e15fda9c8e817df355d7b2ef196..93b9dc8954dbdb9fc5753f29bc30ce7c25da3c1d 100644
|
| --- a/Source/core/history/HistoryItem.cpp
|
| +++ b/Source/core/history/HistoryItem.cpp
|
| @@ -66,6 +66,7 @@ inline HistoryItem::HistoryItem(const HistoryItem& item)
|
| , m_target(item.m_target)
|
| , m_scrollPoint(item.m_scrollPoint)
|
| , m_pageScaleFactor(item.m_pageScaleFactor)
|
| + , m_documentState(item.m_documentState)
|
| , m_itemSequenceNumber(item.m_itemSequenceNumber)
|
| , m_documentSequenceNumber(item.m_documentSequenceNumber)
|
| , m_targetFrameID(item.m_targetFrameID)
|
| @@ -208,42 +209,9 @@ void HistoryItem::setStateObject(PassRefPtr<SerializedScriptValue> object)
|
|
|
| void HistoryItem::addChildItem(PassRefPtr<HistoryItem> child)
|
| {
|
| - ASSERT(!childItemWithTarget(child->target()));
|
| m_children.append(child);
|
| }
|
|
|
| -void HistoryItem::setChildItem(PassRefPtr<HistoryItem> child)
|
| -{
|
| - unsigned size = m_children.size();
|
| - for (unsigned i = 0; i < size; ++i) {
|
| - if (m_children[i]->target() == child->target()) {
|
| - m_children[i] = child;
|
| - return;
|
| - }
|
| - }
|
| - m_children.append(child);
|
| -}
|
| -
|
| -HistoryItem* HistoryItem::childItemWithTarget(const String& target) const
|
| -{
|
| - unsigned size = m_children.size();
|
| - for (unsigned i = 0; i < size; ++i) {
|
| - if (m_children[i]->target() == target)
|
| - return m_children[i].get();
|
| - }
|
| - return 0;
|
| -}
|
| -
|
| -HistoryItem* HistoryItem::childItemWithDocumentSequenceNumber(long long number) const
|
| -{
|
| - unsigned size = m_children.size();
|
| - for (unsigned i = 0; i < size; ++i) {
|
| - if (m_children[i]->documentSequenceNumber() == number)
|
| - return m_children[i].get();
|
| - }
|
| - return 0;
|
| -}
|
| -
|
| const HistoryItemVector& HistoryItem::children() const
|
| {
|
| return m_children;
|
| @@ -254,61 +222,6 @@ void HistoryItem::clearChildren()
|
| m_children.clear();
|
| }
|
|
|
| -// We do same-document navigation if going to a different item and if either of the following is true:
|
| -// - The other item corresponds to the same document (for history entries created via pushState or fragment changes).
|
| -// - The other item corresponds to the same set of documents, including frames (for history entries created via regular navigation)
|
| -bool HistoryItem::shouldDoSameDocumentNavigationTo(HistoryItem* otherItem) const
|
| -{
|
| - if (this == otherItem)
|
| - return false;
|
| -
|
| - if (stateObject() || otherItem->stateObject())
|
| - return documentSequenceNumber() == otherItem->documentSequenceNumber();
|
| -
|
| - if ((url().hasFragmentIdentifier() || otherItem->url().hasFragmentIdentifier()) && equalIgnoringFragmentIdentifier(url(), otherItem->url()))
|
| - return documentSequenceNumber() == otherItem->documentSequenceNumber();
|
| -
|
| - return hasSameDocumentTree(otherItem);
|
| -}
|
| -
|
| -// Does a recursive check that this item and its descendants have the same
|
| -// document sequence numbers as the other item.
|
| -bool HistoryItem::hasSameDocumentTree(HistoryItem* otherItem) const
|
| -{
|
| - if (documentSequenceNumber() != otherItem->documentSequenceNumber())
|
| - return false;
|
| -
|
| - if (children().size() != otherItem->children().size())
|
| - return false;
|
| -
|
| - for (size_t i = 0; i < children().size(); i++) {
|
| - HistoryItem* child = children()[i].get();
|
| - HistoryItem* otherChild = otherItem->childItemWithDocumentSequenceNumber(child->documentSequenceNumber());
|
| - if (!otherChild || !child->hasSameDocumentTree(otherChild))
|
| - return false;
|
| - }
|
| -
|
| - return true;
|
| -}
|
| -
|
| -// Does a non-recursive check that this item and its immediate children have the
|
| -// same frames as the other item.
|
| -bool HistoryItem::hasSameFrames(HistoryItem* otherItem) const
|
| -{
|
| - if (target() != otherItem->target())
|
| - return false;
|
| -
|
| - if (children().size() != otherItem->children().size())
|
| - return false;
|
| -
|
| - for (size_t i = 0; i < children().size(); i++) {
|
| - if (!otherItem->childItemWithTarget(children()[i]->target()))
|
| - return false;
|
| - }
|
| -
|
| - return true;
|
| -}
|
| -
|
| String HistoryItem::formContentType() const
|
| {
|
| return m_formContentType;
|
| @@ -350,37 +263,5 @@ bool HistoryItem::isCurrentDocument(Document* doc) const
|
| return equalIgnoringFragmentIdentifier(url(), doc->url());
|
| }
|
|
|
| -#ifndef NDEBUG
|
| -
|
| -int HistoryItem::showTree() const
|
| -{
|
| - return showTreeWithIndent(0);
|
| -}
|
| -
|
| -int HistoryItem::showTreeWithIndent(unsigned indentLevel) const
|
| -{
|
| - Vector<char> prefix;
|
| - for (unsigned i = 0; i < indentLevel; ++i)
|
| - prefix.append(" ", 2);
|
| - prefix.append("\0", 1);
|
| -
|
| - fprintf(stderr, "%s+-%s (%p)\n", prefix.data(), m_urlString.utf8().data(), this);
|
| -
|
| - int totalSubItems = 0;
|
| - for (unsigned i = 0; i < m_children.size(); ++i)
|
| - totalSubItems += m_children[i]->showTreeWithIndent(indentLevel + 1);
|
| - return totalSubItems + 1;
|
| -}
|
| -
|
| -#endif
|
| -
|
| } // namespace WebCore
|
|
|
| -#ifndef NDEBUG
|
| -
|
| -int showTree(const WebCore::HistoryItem* item)
|
| -{
|
| - return item->showTree();
|
| -}
|
| -
|
| -#endif
|
|
|