Index: Source/core/loader/FrameLoader.cpp |
diff --git a/Source/core/loader/FrameLoader.cpp b/Source/core/loader/FrameLoader.cpp |
index 770c73a0cb9627004e2ffd9a1cd5f8d2df2384f3..a12592f9295080a6c558b40402890b3bf787e2d8 100644 |
--- a/Source/core/loader/FrameLoader.cpp |
+++ b/Source/core/loader/FrameLoader.cpp |
@@ -257,10 +257,15 @@ void FrameLoader::setHistoryItemStateForCommit(HistoryCommitType historyCommitTy |
{ |
if (m_provisionalItem) |
m_currentItem = m_provisionalItem.release(); |
- if (!m_currentItem || historyCommitType == StandardCommit) |
+ |
+ if (!m_currentItem || historyCommitType == StandardCommit) { |
m_currentItem = HistoryItem::create(); |
- else if (!isPushOrReplaceState && m_documentLoader->url() != m_currentItem->url()) |
- m_currentItem->generateNewSequenceNumbers(); |
+ } else if (!isPushOrReplaceState && m_documentLoader->url() != m_currentItem->url()) { |
+ m_currentItem->generateNewItemSequenceNumber(); |
+ if (!equalIgnoringFragmentIdentifier(m_documentLoader->url(), m_currentItem->url())) |
+ m_currentItem->generateNewDocumentSequenceNumber(); |
+ } |
+ |
m_currentItem->setURL(m_documentLoader->urlForHistory()); |
m_currentItem->setDocumentState(m_frame->document()->formElementsState()); |
m_currentItem->setTarget(m_frame->tree().uniqueName()); |