| Index: Source/core/loader/FrameLoader.cpp
|
| diff --git a/Source/core/loader/FrameLoader.cpp b/Source/core/loader/FrameLoader.cpp
|
| index 751c2742e1f088b0eb8ff9f77d2dbb4d7414bc26..fbe3e888ed72877ffd5bf67ce9c7f18107e8f715 100644
|
| --- a/Source/core/loader/FrameLoader.cpp
|
| +++ b/Source/core/loader/FrameLoader.cpp
|
| @@ -191,6 +191,9 @@ void FrameLoader::saveScrollState()
|
| if (needsHistoryItemRestore(m_loadType) && !m_frame->view()->wasScrolledByUser())
|
| return;
|
|
|
| + if (m_currentItem->isCreatedByHistoryAPI())
|
| + return;
|
| +
|
| m_currentItem->setScrollPoint(m_frame->view()->scrollPosition());
|
|
|
| if (m_frame->settings()->pinchVirtualViewportEnabled())
|
| @@ -312,8 +315,10 @@ void FrameLoader::setHistoryItemStateForCommit(HistoryCommitType historyCommitTy
|
| m_currentItem->setURL(m_documentLoader->urlForHistory());
|
| m_currentItem->setDocumentState(m_frame->document()->formElementsState());
|
| m_currentItem->setTarget(m_frame->tree().uniqueName());
|
| - if (isPushOrReplaceState)
|
| + if (isPushOrReplaceState) {
|
| + m_currentItem->setIsCreatedByHistoryAPI(true);
|
| m_currentItem->setStateObject(stateObject);
|
| + }
|
| m_currentItem->setReferrer(SecurityPolicy::generateReferrer(m_documentLoader->request().referrerPolicy(), m_currentItem->url(), m_documentLoader->request().httpReferrer()));
|
| m_currentItem->setFormInfoFromRequest(m_documentLoader->request());
|
| }
|
| @@ -1007,6 +1012,9 @@ void FrameLoader::restoreScrollPositionAndViewState()
|
| if (!needsHistoryItemRestore(m_loadType))
|
| return;
|
|
|
| + if (m_currentItem->isCreatedByHistoryAPI())
|
| + return;
|
| +
|
| // This tries to balance 1. restoring as soon as possible, 2. detecting
|
| // clamping to avoid repeatedly popping the scroll position down as the
|
| // page height increases, 3. ignore clamp detection after load completes
|
|
|