Chromium Code Reviews| Index: Source/core/loader/FrameLoader.cpp |
| diff --git a/Source/core/loader/FrameLoader.cpp b/Source/core/loader/FrameLoader.cpp |
| index 0bb9bc66894e79f19d623da064e85fb2be17da8a..502617ce051308d32c9e0236bac11809df7be16b 100644 |
| --- a/Source/core/loader/FrameLoader.cpp |
| +++ b/Source/core/loader/FrameLoader.cpp |
| @@ -731,10 +731,10 @@ FrameLoadType FrameLoader::determineFrameLoadType(const FrameLoadRequest& reques |
| || (!m_stateMachine.committedMultipleRealLoads() |
| && equalIgnoringCase(m_frame->document()->url(), blankURL()))) |
| return FrameLoadTypeRedirectWithLockedBackForwardList; |
| - if (!request.originDocument() && request.resourceRequest().url() == m_documentLoader->urlForHistory()) |
| - return FrameLoadTypeSame; |
| if (request.substituteData().failingURL() == m_documentLoader->urlForHistory() && m_loadType == FrameLoadTypeReload) |
| return FrameLoadTypeReload; |
| + if (request.resourceRequest().url() == m_documentLoader->urlForHistory() && request.resourceRequest().httpMethod() != "POST") |
| + return FrameLoadTypeRedirectWithLockedBackForwardList; |
|
dcheng
2015/07/01 20:54:12
I don't think I completely understand this line.
|
| return FrameLoadTypeStandard; |
| } |
| @@ -885,9 +885,7 @@ void FrameLoader::load(const FrameLoadRequest& passedRequest, FrameLoadType fram |
| const KURL& url = request.resourceRequest().url(); |
| bool sameDocumentHistoryNavigation = |
| isBackForwardLoadType(newLoadType) && historyLoadType == HistorySameDocumentLoad; |
| - bool sameDocumentNavigation = policy == NavigationPolicyCurrentTab |
| - && shouldPerformFragmentNavigation( |
| - request.form(), request.resourceRequest().httpMethod(), newLoadType, url); |
| + bool sameDocumentNavigation = policy == NavigationPolicyCurrentTab && shouldPerformFragmentNavigation(request, newLoadType); |
| // Perform same document navigation. |
| if (sameDocumentHistoryNavigation || sameDocumentNavigation) { |
| @@ -909,20 +907,7 @@ void FrameLoader::load(const FrameLoadRequest& passedRequest, FrameLoadType fram |
| return; |
| } |
| - // Perform navigation to a different document. |
| - bool sameURL = url == m_documentLoader->urlForHistory(); |
| startLoad(request, newLoadType, policy); |
| - |
| - // Example of this case are sites that reload the same URL with a different cookie |
| - // driving the generated content, or a master frame with links that drive a target |
| - // frame, where the user has clicked on the same link repeatedly. |
| - if (sameURL |
| - && !isBackForwardLoadType(frameLoadType) |
| - && newLoadType != FrameLoadTypeReload |
| - && newLoadType != FrameLoadTypeReloadFromOrigin |
| - && request.resourceRequest().httpMethod() != "POST") { |
| - m_loadType = FrameLoadTypeSame; |
| - } |
| } |
| SubstituteData FrameLoader::defaultSubstituteDataForURL(const KURL& url) |
| @@ -1199,14 +1184,15 @@ void FrameLoader::receivedMainResourceError(DocumentLoader* loader, const Resour |
| checkCompleted(); |
| } |
| -bool FrameLoader::shouldPerformFragmentNavigation(bool isFormSubmission, const String& httpMethod, FrameLoadType loadType, const KURL& url) |
| +bool FrameLoader::shouldPerformFragmentNavigation(const FrameLoadRequest& request, FrameLoadType loadType) |
| { |
| + const KURL& url = request.resourceRequest().url(); |
| // We don't do this if we are submitting a form with method other than "GET", explicitly reloading, |
| // currently displaying a frameset, or if the URL does not have a fragment. |
| - return (!isFormSubmission || equalIgnoringCase(httpMethod, "GET")) |
| + return (!request.form() || equalIgnoringCase(request.resourceRequest().httpMethod(), "GET")) |
| && loadType != FrameLoadTypeReload |
| && loadType != FrameLoadTypeReloadFromOrigin |
| - && loadType != FrameLoadTypeSame |
| + && (request.originDocument() || loadType != FrameLoadTypeRedirectWithLockedBackForwardList || url != m_documentLoader->urlForHistory()) |
|
dcheng
2015/07/01 20:54:12
I don't think I understand this either. I guess th
|
| && loadType != FrameLoadTypeBackForward |
| && url.hasFragmentIdentifier() |
| && equalIgnoringFragmentIdentifier(m_frame->document()->url(), url) |