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

Side by Side Diff: Source/core/loader/FrameLoader.cpp

Issue 1173513002: Fix Blink commit type for subframes after initial about:blank load. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Try removing Nasko's original fix 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 unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All rights reserv ed. 2 * Copyright (C) 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All rights reserv ed.
3 * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies) 3 * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies)
4 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.t orchmobile.com/) 4 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.t orchmobile.com/)
5 * Copyright (C) 2008 Alp Toker <alp@atoker.com> 5 * Copyright (C) 2008 Alp Toker <alp@atoker.com>
6 * Copyright (C) Research In Motion Limited 2009. All rights reserved. 6 * Copyright (C) Research In Motion Limited 2009. All rights reserved.
7 * Copyright (C) 2011 Kris Jordan <krisjordan@gmail.com> 7 * Copyright (C) 2011 Kris Jordan <krisjordan@gmail.com>
8 * Copyright (C) 2011 Google Inc. All rights reserved. 8 * Copyright (C) 2011 Google Inc. All rights reserved.
9 * 9 *
10 * Redistribution and use in source and binary forms, with or without 10 * Redistribution and use in source and binary forms, with or without
(...skipping 646 matching lines...) Expand 10 before | Expand all | Expand 10 after
657 if (m_frame->tree().parent() && !m_stateMachine.committedFirstRealDocumentLo ad()) 657 if (m_frame->tree().parent() && !m_stateMachine.committedFirstRealDocumentLo ad())
658 return FrameLoadTypeInitialInChildFrame; 658 return FrameLoadTypeInitialInChildFrame;
659 if (!m_frame->tree().parent() && !client()->backForwardLength()) 659 if (!m_frame->tree().parent() && !client()->backForwardLength())
660 return FrameLoadTypeStandard; 660 return FrameLoadTypeStandard;
661 if (m_provisionalDocumentLoader && request.substituteData().failingURL() == m_provisionalDocumentLoader->url() && m_loadType == FrameLoadTypeBackForward) 661 if (m_provisionalDocumentLoader && request.substituteData().failingURL() == m_provisionalDocumentLoader->url() && m_loadType == FrameLoadTypeBackForward)
662 return FrameLoadTypeBackForward; 662 return FrameLoadTypeBackForward;
663 if (request.resourceRequest().cachePolicy() == ReloadIgnoringCacheData) 663 if (request.resourceRequest().cachePolicy() == ReloadIgnoringCacheData)
664 return FrameLoadTypeReload; 664 return FrameLoadTypeReload;
665 if (request.resourceRequest().cachePolicy() == ReloadBypassingCache) 665 if (request.resourceRequest().cachePolicy() == ReloadBypassingCache)
666 return FrameLoadTypeReloadFromOrigin; 666 return FrameLoadTypeReloadFromOrigin;
667 if (request.lockBackForwardList()) 667 // From the HTML5 spec for location.assign():
668 // "If the browsing context's session history contains only one Document,
669 // and that was the about:blank Document created when the browsing context
670 // was created, then the navigation must be done with replacement enabled. "
671 if (request.lockBackForwardList()
672 || (!m_stateMachine.committedMultipleRealLoads()
673 && equalIgnoringCase(m_frame->document()->url(), blankURL())))
668 return FrameLoadTypeRedirectWithLockedBackForwardList; 674 return FrameLoadTypeRedirectWithLockedBackForwardList;
669 if (!request.originDocument() && request.resourceRequest().url() == m_docume ntLoader->urlForHistory()) 675 if (!request.originDocument() && request.resourceRequest().url() == m_docume ntLoader->urlForHistory())
670 return FrameLoadTypeSame; 676 return FrameLoadTypeSame;
671 if (request.substituteData().failingURL() == m_documentLoader->urlForHistory () && m_loadType == FrameLoadTypeReload) 677 if (request.substituteData().failingURL() == m_documentLoader->urlForHistory () && m_loadType == FrameLoadTypeReload)
672 return FrameLoadTypeReload; 678 return FrameLoadTypeReload;
673 return FrameLoadTypeStandard; 679 return FrameLoadTypeStandard;
674 } 680 }
675 681
676 bool FrameLoader::prepareRequestForThisFrame(FrameLoadRequest& request) 682 bool FrameLoader::prepareRequestForThisFrame(FrameLoadRequest& request)
677 { 683 {
(...skipping 526 matching lines...) Expand 10 before | Expand all | Expand 10 after
1204 { 1210 {
1205 ASSERT(client()->hasWebView()); 1211 ASSERT(client()->hasWebView());
1206 if (m_frame->document()->pageDismissalEventBeingDispatched() != Document::No Dismissal) 1212 if (m_frame->document()->pageDismissalEventBeingDispatched() != Document::No Dismissal)
1207 return; 1213 return;
1208 1214
1209 NavigationType navigationType = determineNavigationType(type, frameLoadReque st.resourceRequest().httpBody() || frameLoadRequest.form(), frameLoadRequest.tri ggeringEvent()); 1215 NavigationType navigationType = determineNavigationType(type, frameLoadReque st.resourceRequest().httpBody() || frameLoadRequest.form(), frameLoadRequest.tri ggeringEvent());
1210 frameLoadRequest.resourceRequest().setRequestContext(determineRequestContext FromNavigationType(navigationType)); 1216 frameLoadRequest.resourceRequest().setRequestContext(determineRequestContext FromNavigationType(navigationType));
1211 frameLoadRequest.resourceRequest().setFrameType(m_frame->isMainFrame() ? Web URLRequest::FrameTypeTopLevel : WebURLRequest::FrameTypeNested); 1217 frameLoadRequest.resourceRequest().setFrameType(m_frame->isMainFrame() ? Web URLRequest::FrameTypeTopLevel : WebURLRequest::FrameTypeNested);
1212 ResourceRequest& request = frameLoadRequest.resourceRequest(); 1218 ResourceRequest& request = frameLoadRequest.resourceRequest();
1213 1219
1214 // The current load should replace the history item if it is the first real
Charlie Reis 2015/06/11 16:43:48 This was Nasko's original fix from https://coderev
1215 // load of the frame.
1216 bool replacesCurrentHistoryItem = false;
1217 if (type == FrameLoadTypeRedirectWithLockedBackForwardList
1218 || !m_stateMachine.committedFirstRealDocumentLoad()) {
1219 replacesCurrentHistoryItem = true;
1220 }
1221
1222 m_policyDocumentLoader = client()->createDocumentLoader(m_frame, request, fr ameLoadRequest.substituteData().isValid() ? frameLoadRequest.substituteData() : defaultSubstituteDataForURL(request.url())); 1220 m_policyDocumentLoader = client()->createDocumentLoader(m_frame, request, fr ameLoadRequest.substituteData().isValid() ? frameLoadRequest.substituteData() : defaultSubstituteDataForURL(request.url()));
1223 m_policyDocumentLoader->setNavigationType(navigationType); 1221 m_policyDocumentLoader->setNavigationType(navigationType);
1224 m_policyDocumentLoader->setReplacesCurrentHistoryItem(replacesCurrentHistory Item); 1222 m_policyDocumentLoader->setReplacesCurrentHistoryItem(type == FrameLoadTypeR edirectWithLockedBackForwardList);
1225 m_policyDocumentLoader->setIsClientRedirect(frameLoadRequest.clientRedirect( ) == ClientRedirect); 1223 m_policyDocumentLoader->setIsClientRedirect(frameLoadRequest.clientRedirect( ) == ClientRedirect);
1226 1224
1227 // stopAllLoaders can detach the LocalFrame, so protect it. 1225 // stopAllLoaders can detach the LocalFrame, so protect it.
1228 RefPtrWillBeRawPtr<LocalFrame> protect(m_frame.get()); 1226 RefPtrWillBeRawPtr<LocalFrame> protect(m_frame.get());
1229 if ((!m_policyDocumentLoader->shouldContinueForNavigationPolicy(request, fra meLoadRequest.shouldCheckMainWorldContentSecurityPolicy(), navigationPolicy) || !shouldClose()) && m_policyDocumentLoader) { 1227 if ((!m_policyDocumentLoader->shouldContinueForNavigationPolicy(request, fra meLoadRequest.shouldCheckMainWorldContentSecurityPolicy(), navigationPolicy) || !shouldClose()) && m_policyDocumentLoader) {
1230 m_policyDocumentLoader->detachFromFrame(); 1228 m_policyDocumentLoader->detachFromFrame();
1231 m_policyDocumentLoader = nullptr; 1229 m_policyDocumentLoader = nullptr;
1232 return; 1230 return;
1233 } 1231 }
1234 1232
(...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after
1444 // FIXME: We need a way to propagate insecure requests policy flags to 1442 // FIXME: We need a way to propagate insecure requests policy flags to
1445 // out-of-process frames. For now, we'll always use default behavior. 1443 // out-of-process frames. For now, we'll always use default behavior.
1446 if (!parentFrame->isLocalFrame()) 1444 if (!parentFrame->isLocalFrame())
1447 return nullptr; 1445 return nullptr;
1448 1446
1449 ASSERT(toLocalFrame(parentFrame)->document()); 1447 ASSERT(toLocalFrame(parentFrame)->document());
1450 return toLocalFrame(parentFrame)->document()->insecureNavigationsToUpgrade() ; 1448 return toLocalFrame(parentFrame)->document()->insecureNavigationsToUpgrade() ;
1451 } 1449 }
1452 1450
1453 } // namespace blink 1451 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698