Index: Source/core/loader/FrameLoader.cpp |
diff --git a/Source/core/loader/FrameLoader.cpp b/Source/core/loader/FrameLoader.cpp |
index 3d8ab8b84bc46b42a5857b61572df491501f33b4..63529e849151f92ba0ea25957766ca8adca51e5e 100644 |
--- a/Source/core/loader/FrameLoader.cpp |
+++ b/Source/core/loader/FrameLoader.cpp |
@@ -739,8 +739,13 @@ FrameLoadType FrameLoader::determineFrameLoadType(const FrameLoadRequest& reques |
|| (!m_stateMachine.committedMultipleRealLoads() |
&& equalIgnoringCase(m_frame->document()->url(), blankURL()))) |
return FrameLoadTypeReplaceCurrentItem; |
- if (!request.originDocument() && request.resourceRequest().url() == m_documentLoader->urlForHistory()) |
- return FrameLoadTypeSame; |
+ |
+ if (request.resourceRequest().url() == m_documentLoader->urlForHistory()) { |
+ if (!request.originDocument()) |
+ return FrameLoadTypeSame; |
+ return request.resourceRequest().httpMethod() == "POST" ? FrameLoadTypeStandard : FrameLoadTypeReplaceCurrentItem; |
+ } |
+ |
if (request.substituteData().failingURL() == m_documentLoader->urlForHistory() && m_loadType == FrameLoadTypeReload) |
return FrameLoadTypeReload; |
return FrameLoadTypeStandard; |
@@ -917,20 +922,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) |