| Index: third_party/WebKit/Source/core/page/CreateWindow.cpp
|
| diff --git a/third_party/WebKit/Source/core/page/CreateWindow.cpp b/third_party/WebKit/Source/core/page/CreateWindow.cpp
|
| index 6b8f1697f905bf261c634a28d29602982326fca9..c1e5ea3ddcaaea86845c85813267032fd1a88e8d 100644
|
| --- a/third_party/WebKit/Source/core/page/CreateWindow.cpp
|
| +++ b/third_party/WebKit/Source/core/page/CreateWindow.cpp
|
| @@ -65,13 +65,13 @@ static Frame* reuseExistingWindow(LocalFrame& activeFrame, LocalFrame& lookupFra
|
| return nullptr;
|
| }
|
|
|
| -static Frame* createNewWindow(LocalFrame& openerFrame, const FrameLoadRequest& request, const WindowFeatures& features, NavigationPolicy policy, ShouldSetOpener shouldSetOpener, bool& created)
|
| +static Frame* createNewWindow(LocalFrame& openerFrame, const FrameLoadRequest& request, const WindowFeatures& features, NavigationPolicy policy, bool& created)
|
| {
|
| FrameHost* oldHost = openerFrame.host();
|
| if (!oldHost)
|
| return nullptr;
|
|
|
| - Page* page = oldHost->chromeClient().createWindow(&openerFrame, request, features, policy, shouldSetOpener);
|
| + Page* page = oldHost->chromeClient().createWindow(&openerFrame, request, features, policy);
|
| if (!page)
|
| return nullptr;
|
| FrameHost* host = &page->frameHost();
|
| @@ -112,7 +112,7 @@ static Frame* createNewWindow(LocalFrame& openerFrame, const FrameLoadRequest& r
|
| return &frame;
|
| }
|
|
|
| -static Frame* createWindowHelper(LocalFrame& openerFrame, LocalFrame& activeFrame, LocalFrame& lookupFrame, const FrameLoadRequest& request, const WindowFeatures& features, NavigationPolicy policy, ShouldSetOpener shouldSetOpener, bool& created)
|
| +static Frame* createWindowHelper(LocalFrame& openerFrame, LocalFrame& activeFrame, LocalFrame& lookupFrame, const FrameLoadRequest& request, const WindowFeatures& features, NavigationPolicy policy, bool& created)
|
| {
|
| ASSERT(!features.dialog || request.frameName().isEmpty());
|
| ASSERT(request.resourceRequest().requestorOrigin() || openerFrame.document()->url().isEmpty());
|
| @@ -135,12 +135,12 @@ static Frame* createWindowHelper(LocalFrame& openerFrame, LocalFrame& activeFram
|
| }
|
|
|
| if (window) {
|
| - if (shouldSetOpener == MaybeSetOpener)
|
| + if (request.getShouldSetOpener() == MaybeSetOpener)
|
| window->client()->setOpener(&openerFrame);
|
| return window;
|
| }
|
|
|
| - return createNewWindow(openerFrame, request, features, policy, shouldSetOpener, created);
|
| + return createNewWindow(openerFrame, request, features, policy, created);
|
| }
|
|
|
| DOMWindow* createWindow(const String& urlString, const AtomicString& frameName, const WindowFeatures& windowFeatures,
|
| @@ -157,6 +157,7 @@ DOMWindow* createWindow(const String& urlString, const AtomicString& frameName,
|
| }
|
|
|
| FrameLoadRequest frameRequest(callingWindow.document(), completedURL, frameName);
|
| + frameRequest.setShouldSetOpener(windowFeatures.noopener ? NeverSetOpener : MaybeSetOpener);
|
| frameRequest.resourceRequest().setFrameType(WebURLRequest::FrameTypeAuxiliary);
|
| frameRequest.resourceRequest().setRequestorOrigin(SecurityOrigin::create(activeFrame->document()->url()));
|
|
|
| @@ -174,8 +175,7 @@ DOMWindow* createWindow(const String& urlString, const AtomicString& frameName,
|
| // We pass the opener frame for the lookupFrame in case the active frame is different from
|
| // the opener frame, and the name references a frame relative to the opener frame.
|
| bool created;
|
| - ShouldSetOpener opener = windowFeatures.noopener ? NeverSetOpener : MaybeSetOpener;
|
| - Frame* newFrame = createWindowHelper(openerFrame, *activeFrame, openerFrame, frameRequest, windowFeatures, NavigationPolicyIgnore, opener, created);
|
| + Frame* newFrame = createWindowHelper(openerFrame, *activeFrame, openerFrame, frameRequest, windowFeatures, NavigationPolicyIgnore, created);
|
| if (!newFrame)
|
| return nullptr;
|
|
|
| @@ -186,7 +186,7 @@ DOMWindow* createWindow(const String& urlString, const AtomicString& frameName,
|
| return newFrame->domWindow();
|
| }
|
|
|
| -void createWindowForRequest(const FrameLoadRequest& request, LocalFrame& openerFrame, NavigationPolicy policy, ShouldSendReferrer shouldSendReferrer, ShouldSetOpener shouldSetOpener)
|
| +void createWindowForRequest(const FrameLoadRequest& request, LocalFrame& openerFrame, NavigationPolicy policy)
|
| {
|
| ASSERT(request.resourceRequest().requestorOrigin() || (openerFrame.document() && openerFrame.document()->url().isEmpty()));
|
|
|
| @@ -203,11 +203,12 @@ void createWindowForRequest(const FrameLoadRequest& request, LocalFrame& openerF
|
| policy = NavigationPolicyNewForegroundTab;
|
|
|
| WindowFeatures features;
|
| + features.noopener = request.getShouldSetOpener() == NeverSetOpener;
|
| bool created;
|
| - Frame* newFrame = createWindowHelper(openerFrame, openerFrame, openerFrame, request, features, policy, shouldSetOpener, created);
|
| + Frame* newFrame = createWindowHelper(openerFrame, openerFrame, openerFrame, request, features, policy, created);
|
| if (!newFrame)
|
| return;
|
| - if (shouldSendReferrer == MaybeSendReferrer) {
|
| + if (request.getShouldSendReferrer() == MaybeSendReferrer) {
|
| // TODO(japhet): Does ReferrerPolicy need to be proagated for RemoteFrames?
|
| if (newFrame->isLocalFrame())
|
| toLocalFrame(newFrame)->document()->setReferrerPolicy(openerFrame.document()->getReferrerPolicy());
|
|
|