| Index: Source/core/loader/FrameLoader.cpp
|
| diff --git a/Source/core/loader/FrameLoader.cpp b/Source/core/loader/FrameLoader.cpp
|
| index aec927f70fce8f141332367ba3ac98bb860abb58..110cf41ab19735ef20b91c4fe7b12b1829c9ae2b 100644
|
| --- a/Source/core/loader/FrameLoader.cpp
|
| +++ b/Source/core/loader/FrameLoader.cpp
|
| @@ -1125,14 +1125,13 @@ void FrameLoader::loadWithNavigationAction(const ResourceRequest& request, const
|
| if (type == FrameLoadTypeRedirectWithLockedBackForwardList)
|
| loader->setIsClientRedirect(true);
|
|
|
| - m_loadType = type;
|
| bool isFormSubmission = formState;
|
|
|
| if (shouldPerformFragmentNavigation(isFormSubmission, request.httpMethod(), type, request.url()))
|
| - checkNavigationPolicyAndContinueFragmentScroll(action);
|
| + checkNavigationPolicyAndContinueFragmentScroll(action, type != FrameLoadTypeRedirectWithLockedBackForwardList);
|
| else {
|
| setPolicyDocumentLoader(loader.get());
|
| - checkNavigationPolicyAndContinueLoad(formState);
|
| + checkNavigationPolicyAndContinueLoad(formState, type);
|
| }
|
| }
|
|
|
| @@ -1930,7 +1929,7 @@ void FrameLoader::receivedMainResourceError(const ResourceError& error)
|
| checkLoadComplete();
|
| }
|
|
|
| -void FrameLoader::checkNavigationPolicyAndContinueFragmentScroll(const NavigationAction& action)
|
| +void FrameLoader::checkNavigationPolicyAndContinueFragmentScroll(const NavigationAction& action, bool isNewNavigation)
|
| {
|
| m_documentLoader->setTriggeringAction(action);
|
|
|
| @@ -1943,7 +1942,7 @@ void FrameLoader::checkNavigationPolicyAndContinueFragmentScroll(const Navigatio
|
| m_provisionalDocumentLoader->stopLoading();
|
| setProvisionalDocumentLoader(0);
|
| }
|
| - loadInSameDocument(request.url(), 0, m_loadType != FrameLoadTypeRedirectWithLockedBackForwardList);
|
| + loadInSameDocument(request.url(), 0, isNewNavigation);
|
| }
|
|
|
| bool FrameLoader::shouldPerformFragmentNavigation(bool isFormSubmission, const String& httpMethod, FrameLoadType loadType, const KURL& url)
|
| @@ -2040,7 +2039,7 @@ bool FrameLoader::fireBeforeUnloadEvent(Chrome& chrome)
|
| return chrome.runBeforeUnloadConfirmPanel(text, m_frame);
|
| }
|
|
|
| -void FrameLoader::checkNavigationPolicyAndContinueLoad(PassRefPtr<FormState> formState)
|
| +void FrameLoader::checkNavigationPolicyAndContinueLoad(PassRefPtr<FormState> formState, FrameLoadType type)
|
| {
|
| // If we loaded an alternate page to replace an unreachableURL, we'll get in here with a
|
| // nil policyDataSource because loading the alternate page will have passed
|
| @@ -2080,7 +2079,7 @@ void FrameLoader::checkNavigationPolicyAndContinueLoad(PassRefPtr<FormState> for
|
| // If the navigation request came from the back/forward menu, and we punt on it, we have the
|
| // problem that we have optimistically moved the b/f cursor already, so move it back. For sanity,
|
| // we only do this when punting a navigation for the target frame or top-level frame.
|
| - if ((isTargetItem || isLoadingMainFrame()) && isBackForwardLoadType(m_loadType)) {
|
| + if ((isTargetItem || isLoadingMainFrame()) && isBackForwardLoadType(type)) {
|
| if (Page* page = m_frame->page()) {
|
| Frame* mainFrame = page->mainFrame();
|
| if (HistoryItem* resetItem = mainFrame->loader()->history()->currentItem())
|
| @@ -2104,6 +2103,7 @@ void FrameLoader::checkNavigationPolicyAndContinueLoad(PassRefPtr<FormState> for
|
| }
|
|
|
| setProvisionalDocumentLoader(m_policyDocumentLoader.get());
|
| + m_loadType = type;
|
| setState(FrameStateProvisional);
|
|
|
| setPolicyDocumentLoader(0);
|
|
|