Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1138)

Unified Diff: Source/core/loader/FrameLoader.cpp

Issue 1213913003: Don't revalidate all resources for FrameLoadTypeSame (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « Source/core/loader/FrameLoader.h ('k') | Source/core/loader/FrameLoaderTypes.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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)
« no previous file with comments | « Source/core/loader/FrameLoader.h ('k') | Source/core/loader/FrameLoaderTypes.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698