| Index: Source/core/loader/FrameLoader.cpp
|
| diff --git a/Source/core/loader/FrameLoader.cpp b/Source/core/loader/FrameLoader.cpp
|
| index 8f4cf0cb52da2c9aec02fcc6388727ebe47261c6..5d5e4ef4899b3da7b20d00b90cd06d0c318d1fb9 100644
|
| --- a/Source/core/loader/FrameLoader.cpp
|
| +++ b/Source/core/loader/FrameLoader.cpp
|
| @@ -1339,10 +1339,19 @@ void FrameLoader::loadWithNavigationAction(const ResourceRequest& request, const
|
| if (!m_stateMachine.startedFirstRealLoad())
|
| m_stateMachine.advanceTo(FrameLoaderStateMachine::StartedFirstRealLoad);
|
|
|
| + // The current load should replace the history item if it is the first real
|
| + // load of the frame. FrameLoadTypeRedirectWithLockedBackForwardList is a
|
| + // proxy for history()->currentItemShouldBeReplaced().
|
| + bool replacesCurrentHistoryItem = false;
|
| + if (type == FrameLoadTypeRedirectWithLockedBackForwardList
|
| + || !m_stateMachine.committedFirstRealDocumentLoad()) {
|
| + replacesCurrentHistoryItem = true;
|
| + }
|
| +
|
| m_policyDocumentLoader = m_client->createDocumentLoader(request, substituteData.isValid() ? substituteData : defaultSubstituteDataForURL(request.url()));
|
| m_policyDocumentLoader->setFrame(m_frame);
|
| m_policyDocumentLoader->setTriggeringAction(action);
|
| - m_policyDocumentLoader->setReplacesCurrentHistoryItem(type == FrameLoadTypeRedirectWithLockedBackForwardList);
|
| + m_policyDocumentLoader->setReplacesCurrentHistoryItem(replacesCurrentHistoryItem);
|
| m_policyDocumentLoader->setIsClientRedirect(m_startingClientRedirect);
|
|
|
| if (Frame* parent = m_frame->tree()->parent())
|
|
|