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

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

Issue 1999573003: OOPIFs: Fixing submitting forms targeting a remote frame. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@form-target-is-cross-site-frame
Patch Set: Added a TODO for investigating if remote and local frames can be handled uniformly. Created 4 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 748 matching lines...) Expand 10 before | Expand all | Expand 10 after
759 759
760 if (historyLoadType == HistorySameDocumentLoad) 760 if (historyLoadType == HistorySameDocumentLoad)
761 restoreScrollPositionAndViewState(); 761 restoreScrollPositionAndViewState();
762 762
763 // We need to scroll to the fragment whether or not a hash change occurred, since 763 // We need to scroll to the fragment whether or not a hash change occurred, since
764 // the user might have scrolled since the previous navigation. 764 // the user might have scrolled since the previous navigation.
765 processFragment(url, NavigationWithinSameDocument); 765 processFragment(url, NavigationWithinSameDocument);
766 takeObjectSnapshot(); 766 takeObjectSnapshot();
767 } 767 }
768 768
769 void FrameLoader::setReferrerForFrameRequest(ResourceRequest& request, ShouldSen dReferrer shouldSendReferrer, Document* originDocument) 769 // static
770 void FrameLoader::setReferrerForFrameRequest(FrameLoadRequest& frameRequest)
770 { 771 {
772 ResourceRequest& request = frameRequest.resourceRequest();
773 Document* originDocument = frameRequest.originDocument();
774
771 if (!originDocument) 775 if (!originDocument)
772 return; 776 return;
773 // Anchor elements with the 'referrerpolicy' attribute will have 777 // Anchor elements with the 'referrerpolicy' attribute will have
774 // already set the referrer on the request. 778 // already set the referrer on the request.
775 if (request.didSetHTTPReferrer()) 779 if (request.didSetHTTPReferrer())
776 return; 780 return;
777 if (shouldSendReferrer == NeverSendReferrer) 781 if (frameRequest.getShouldSendReferrer() == NeverSendReferrer)
778 return; 782 return;
779 783
780 // Always use the initiating document to generate the referrer. 784 // Always use the initiating document to generate the referrer.
781 // We need to generateReferrer(), because we haven't enforced ReferrerPolicy or https->http 785 // We need to generateReferrer(), because we haven't enforced ReferrerPolicy or https->http
782 // referrer suppression yet. 786 // referrer suppression yet.
783 Referrer referrer = SecurityPolicy::generateReferrer(originDocument->getRefe rrerPolicy(), request.url(), originDocument->outgoingReferrer()); 787 Referrer referrer = SecurityPolicy::generateReferrer(originDocument->getRefe rrerPolicy(), request.url(), originDocument->outgoingReferrer());
784 788
785 request.setHTTPReferrer(referrer); 789 request.setHTTPReferrer(referrer);
786 RefPtr<SecurityOrigin> referrerOrigin = SecurityOrigin::createFromString(ref errer.referrer); 790 RefPtr<SecurityOrigin> referrerOrigin = SecurityOrigin::createFromString(ref errer.referrer);
787 request.addHTTPOriginIfNeeded(referrerOrigin); 791 request.addHTTPOriginIfNeeded(referrerOrigin);
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after
942 bool wasInSamePage = targetFrame->page() == m_frame->page(); 946 bool wasInSamePage = targetFrame->page() == m_frame->page();
943 947
944 request.setFrameName("_self"); 948 request.setFrameName("_self");
945 targetFrame->navigate(request); 949 targetFrame->navigate(request);
946 Page* page = targetFrame->page(); 950 Page* page = targetFrame->page();
947 if (!wasInSamePage && page) 951 if (!wasInSamePage && page)
948 page->chromeClient().focus(); 952 page->chromeClient().focus();
949 return; 953 return;
950 } 954 }
951 955
952 setReferrerForFrameRequest(request.resourceRequest(), request.getShouldSendR eferrer(), request.originDocument()); 956 setReferrerForFrameRequest(request);
953 957
954 FrameLoadType newLoadType = (frameLoadType == FrameLoadTypeStandard) ? 958 FrameLoadType newLoadType = (frameLoadType == FrameLoadTypeStandard) ?
955 determineFrameLoadType(request) : frameLoadType; 959 determineFrameLoadType(request) : frameLoadType;
956 NavigationPolicy policy = navigationPolicyForRequest(request); 960 NavigationPolicy policy = navigationPolicyForRequest(request);
957 if (shouldOpenInNewWindow(targetFrame, request, policy)) { 961 if (shouldOpenInNewWindow(targetFrame, request, policy)) {
958 if (policy == NavigationPolicyDownload) { 962 if (policy == NavigationPolicyDownload) {
959 client()->loadURLExternally(request.resourceRequest(), NavigationPol icyDownload, String(), false); 963 client()->loadURLExternally(request.resourceRequest(), NavigationPol icyDownload, String(), false);
960 } else { 964 } else {
961 request.resourceRequest().setFrameType(WebURLRequest::FrameTypeAuxil iary); 965 request.resourceRequest().setFrameType(WebURLRequest::FrameTypeAuxil iary);
962 createWindowForRequest(request, *m_frame, policy, request.getShouldS endReferrer(), request.getShouldSetOpener()); 966 createWindowForRequest(request, *m_frame, policy, request.getShouldS endReferrer(), request.getShouldSetOpener());
(...skipping 629 matching lines...) Expand 10 before | Expand all | Expand 10 after
1592 tracedValue->setString("documentLoaderURL", m_documentLoader ? m_documentLoa der->url() : String()); 1596 tracedValue->setString("documentLoaderURL", m_documentLoader ? m_documentLoa der->url() : String());
1593 return tracedValue; 1597 return tracedValue;
1594 } 1598 }
1595 1599
1596 inline void FrameLoader::takeObjectSnapshot() const 1600 inline void FrameLoader::takeObjectSnapshot() const
1597 { 1601 {
1598 TRACE_EVENT_OBJECT_SNAPSHOT_WITH_ID("loading", "FrameLoader", this, toTraced Value()); 1602 TRACE_EVENT_OBJECT_SNAPSHOT_WITH_ID("loading", "FrameLoader", this, toTraced Value());
1599 } 1603 }
1600 1604
1601 } // namespace blink 1605 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/loader/FrameLoader.h ('k') | third_party/WebKit/Source/core/loader/NavigationScheduler.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698