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

Unified Diff: third_party/WebKit/Source/core/frame/RemoteFrame.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 side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/core/frame/RemoteFrame.cpp
diff --git a/third_party/WebKit/Source/core/frame/RemoteFrame.cpp b/third_party/WebKit/Source/core/frame/RemoteFrame.cpp
index ad017062095a9ff0fbbaa8112b4aeccd764d44ef..f7eb7a08a368f0cd66401f2ba38e6a0867a15107 100644
--- a/third_party/WebKit/Source/core/frame/RemoteFrame.cpp
+++ b/third_party/WebKit/Source/core/frame/RemoteFrame.cpp
@@ -13,10 +13,12 @@
#include "core/frame/RemoteFrameView.h"
#include "core/html/HTMLFrameOwnerElement.h"
#include "core/loader/FrameLoadRequest.h"
+#include "core/loader/FrameLoader.h"
#include "core/paint/PaintLayer.h"
#include "platform/PluginScriptForbiddenScope.h"
#include "platform/UserGestureIndicator.h"
#include "platform/graphics/GraphicsLayer.h"
+#include "platform/network/ResourceRequest.h"
#include "platform/weborigin/SecurityPolicy.h"
#include "public/platform/WebLayer.h"
@@ -66,18 +68,22 @@ WindowProxy* RemoteFrame::windowProxy(DOMWrapperWorld& world)
void RemoteFrame::navigate(Document& originDocument, const KURL& url, bool replaceCurrentItem, UserGestureStatus userGestureStatus)
{
- // The process where this frame actually lives won't have sufficient information to determine
- // correct referrer, since it won't have access to the originDocument. Set it now.
- ResourceRequest request(url);
- request.setHTTPReferrer(SecurityPolicy::generateReferrer(originDocument.getReferrerPolicy(), url, originDocument.outgoingReferrer()));
- request.setHasUserGesture(userGestureStatus == UserGestureStatus::Active);
- client()->navigate(request, replaceCurrentItem);
+ FrameLoadRequest frameRequest(&originDocument, url);
+ frameRequest.setReplacesCurrentItem(replaceCurrentItem);
+ frameRequest.resourceRequest().setHasUserGesture(userGestureStatus == UserGestureStatus::Active);
+ navigate(frameRequest);
}
void RemoteFrame::navigate(const FrameLoadRequest& passedRequest)
{
- UserGestureStatus gesture = UserGestureIndicator::processingUserGesture() ? UserGestureStatus::Active : UserGestureStatus::None;
- navigate(*passedRequest.originDocument(), passedRequest.resourceRequest().url(), passedRequest.replacesCurrentItem(), gesture);
+ FrameLoadRequest frameRequest(passedRequest);
+
+ // The process where this frame actually lives won't have sufficient information to determine
+ // correct referrer, since it won't have access to the originDocument. Set it now.
+ FrameLoader::setReferrerForFrameRequest(frameRequest);
+
+ frameRequest.resourceRequest().setHasUserGesture(UserGestureIndicator::processingUserGesture());
+ client()->navigate(frameRequest.resourceRequest(), frameRequest.replacesCurrentItem());
}
void RemoteFrame::reload(FrameLoadType frameLoadType, ClientRedirectPolicy clientRedirectPolicy)

Powered by Google App Engine
This is Rietveld 408576698