OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2006, 2007, 2008, 2010 Apple Inc. All rights reserved. | 2 * Copyright (C) 2006, 2007, 2008, 2010 Apple Inc. All rights reserved. |
3 * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies) | 3 * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies) |
4 * | 4 * |
5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
6 * modification, are permitted provided that the following conditions | 6 * modification, are permitted provided that the following conditions |
7 * are met: | 7 * are met: |
8 * 1. Redistributions of source code must retain the above copyright | 8 * 1. Redistributions of source code must retain the above copyright |
9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
10 * 2. Redistributions in binary form must reproduce the above copyright | 10 * 2. Redistributions in binary form must reproduce the above copyright |
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
148 // so we need to ensure the proper referrer is set now. | 148 // so we need to ensure the proper referrer is set now. |
149 frameRequest.resourceRequest().setHTTPReferrer(SecurityPolicy::generateRefer
rer(activeFrame->document()->referrerPolicy(), completedURL, activeFrame->docume
nt()->outgoingReferrer())); | 149 frameRequest.resourceRequest().setHTTPReferrer(SecurityPolicy::generateRefer
rer(activeFrame->document()->referrerPolicy(), completedURL, activeFrame->docume
nt()->outgoingReferrer())); |
150 | 150 |
151 // Records HasUserGesture before the value is invalidated inside createWindo
w(LocalFrame& openerFrame, ...). | 151 // Records HasUserGesture before the value is invalidated inside createWindo
w(LocalFrame& openerFrame, ...). |
152 // This value will be set in ResourceRequest loaded in a new LocalFrame. | 152 // This value will be set in ResourceRequest loaded in a new LocalFrame. |
153 bool hasUserGesture = UserGestureIndicator::processingUserGesture(); | 153 bool hasUserGesture = UserGestureIndicator::processingUserGesture(); |
154 | 154 |
155 // We pass the opener frame for the lookupFrame in case the active frame is
different from | 155 // We pass the opener frame for the lookupFrame in case the active frame is
different from |
156 // the opener frame, and the name references a frame relative to the opener
frame. | 156 // the opener frame, and the name references a frame relative to the opener
frame. |
157 bool created; | 157 bool created; |
158 Frame* newFrame = createWindow(*activeFrame, openerFrame, frameRequest, wind
owFeatures, NavigationPolicyIgnore, MaybeSetOpener, created); | 158 ShouldSetOpener opener = windowFeatures.noopener ? NeverSetOpener : MaybeSet
Opener; |
| 159 Frame* newFrame = createWindow(*activeFrame, openerFrame, frameRequest, wind
owFeatures, NavigationPolicyIgnore, opener, created); |
159 if (!newFrame) | 160 if (!newFrame) |
160 return nullptr; | 161 return nullptr; |
161 | 162 |
162 newFrame->client()->setOpener(&openerFrame); | 163 if (!windowFeatures.noopener) |
| 164 newFrame->client()->setOpener(&openerFrame); |
163 | 165 |
164 if (!newFrame->domWindow()->isInsecureScriptAccess(callingWindow, completedU
RL)) { | 166 if (!newFrame->domWindow()->isInsecureScriptAccess(callingWindow, completedU
RL)) { |
165 if (!urlString.isEmpty() || created) | 167 if (!urlString.isEmpty() || created) |
166 newFrame->navigate(*callingWindow.document(), completedURL, false, h
asUserGesture ? UserGestureStatus::Active : UserGestureStatus::None); | 168 newFrame->navigate(*callingWindow.document(), completedURL, false, h
asUserGesture ? UserGestureStatus::Active : UserGestureStatus::None); |
167 } | 169 } |
168 return newFrame->domWindow(); | 170 return newFrame->domWindow(); |
169 } | 171 } |
170 | 172 |
171 void createWindowForRequest(const FrameLoadRequest& request, LocalFrame& openerF
rame, NavigationPolicy policy, ShouldSendReferrer shouldSendReferrer, ShouldSetO
pener shouldSetOpener) | 173 void createWindowForRequest(const FrameLoadRequest& request, LocalFrame& openerF
rame, NavigationPolicy policy, ShouldSendReferrer shouldSendReferrer, ShouldSetO
pener shouldSetOpener) |
172 { | 174 { |
(...skipping 25 matching lines...) Expand all Loading... |
198 } | 200 } |
199 | 201 |
200 // TODO(japhet): Form submissions on RemoteFrames don't work yet. | 202 // TODO(japhet): Form submissions on RemoteFrames don't work yet. |
201 FrameLoadRequest newRequest(0, request.resourceRequest()); | 203 FrameLoadRequest newRequest(0, request.resourceRequest()); |
202 newRequest.setForm(request.form()); | 204 newRequest.setForm(request.form()); |
203 if (newFrame->isLocalFrame()) | 205 if (newFrame->isLocalFrame()) |
204 toLocalFrame(newFrame)->loader().load(newRequest); | 206 toLocalFrame(newFrame)->loader().load(newRequest); |
205 } | 207 } |
206 | 208 |
207 } // namespace blink | 209 } // namespace blink |
OLD | NEW |