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

Side by Side Diff: third_party/WebKit/Source/core/frame/DOMWindow.cpp

Issue 2805683005: Merge SecurityOrigin::canAccessCheckSuborigins into canAccess (Closed)
Patch Set: Created 3 years, 8 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 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "core/frame/DOMWindow.h" 5 #include "core/frame/DOMWindow.h"
6 6
7 #include <memory> 7 #include <memory>
8 #include "core/dom/Document.h" 8 #include "core/dom/Document.h"
9 #include "core/dom/ExecutionContext.h" 9 #include "core/dom/ExecutionContext.h"
10 #include "core/dom/SecurityContext.h" 10 #include "core/dom/SecurityContext.h"
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after
130 // way we should allow the access. 130 // way we should allow the access.
131 if (isCurrentlyDisplayedInFrame()) { 131 if (isCurrentlyDisplayedInFrame()) {
132 // FIXME: Is there some way to eliminate the need for a separate 132 // FIXME: Is there some way to eliminate the need for a separate
133 // "callingWindow == this" check? 133 // "callingWindow == this" check?
134 if (&callingWindow == this) 134 if (&callingWindow == this)
135 return false; 135 return false;
136 136
137 // FIXME: The name canAccess seems to be a roundabout way to ask "can 137 // FIXME: The name canAccess seems to be a roundabout way to ask "can
138 // execute script". Can we name the SecurityOrigin function better to make 138 // execute script". Can we name the SecurityOrigin function better to make
139 // this more clear? 139 // this more clear?
140 if (callingWindow.document()->getSecurityOrigin()->canAccessCheckSuborigins( 140 if (callingWindow.document()->getSecurityOrigin()->canAccess(
141 frame()->securityContext()->getSecurityOrigin())) 141 frame()->securityContext()->getSecurityOrigin())) {
142 return false; 142 return false;
143 }
143 } 144 }
144 145
145 callingWindow.printErrorMessage( 146 callingWindow.printErrorMessage(
146 crossDomainAccessErrorMessage(&callingWindow)); 147 crossDomainAccessErrorMessage(&callingWindow));
147 return true; 148 return true;
148 } 149 }
149 150
150 void DOMWindow::postMessage(PassRefPtr<SerializedScriptValue> message, 151 void DOMWindow::postMessage(PassRefPtr<SerializedScriptValue> message,
151 const MessagePortArray& ports, 152 const MessagePortArray& ports,
152 const String& targetOrigin, 153 const String& targetOrigin,
(...skipping 110 matching lines...) Expand 10 before | Expand all | Expand 10 after
263 264
264 // FIXME: This message, and other console messages, have extra newlines. 265 // FIXME: This message, and other console messages, have extra newlines.
265 // Should remove them. 266 // Should remove them.
266 const SecurityOrigin* activeOrigin = 267 const SecurityOrigin* activeOrigin =
267 callingWindow->document()->getSecurityOrigin(); 268 callingWindow->document()->getSecurityOrigin();
268 const SecurityOrigin* targetOrigin = 269 const SecurityOrigin* targetOrigin =
269 frame()->securityContext()->getSecurityOrigin(); 270 frame()->securityContext()->getSecurityOrigin();
270 // It's possible for a remote frame to be same origin with respect to a 271 // It's possible for a remote frame to be same origin with respect to a
271 // local frame, but it must still be treated as a disallowed cross-domain 272 // local frame, but it must still be treated as a disallowed cross-domain
272 // access. See https://crbug.com/601629. 273 // access. See https://crbug.com/601629.
273 ASSERT(frame()->isRemoteFrame() || 274 DCHECK(frame()->isRemoteFrame() || !activeOrigin->canAccess(targetOrigin));
274 !activeOrigin->canAccessCheckSuborigins(targetOrigin));
275 275
276 String message = "Blocked a frame with origin \"" + activeOrigin->toString() + 276 String message = "Blocked a frame with origin \"" + activeOrigin->toString() +
277 "\" from accessing a frame with origin \"" + 277 "\" from accessing a frame with origin \"" +
278 targetOrigin->toString() + "\". "; 278 targetOrigin->toString() + "\". ";
279 279
280 // Sandbox errors: Use the origin of the frames' location, rather than their 280 // Sandbox errors: Use the origin of the frames' location, rather than their
281 // actual origin (since we know that at least one will be "null"). 281 // actual origin (since we know that at least one will be "null").
282 KURL activeURL = callingWindow->document()->url(); 282 KURL activeURL = callingWindow->document()->url();
283 // TODO(alexmos): RemoteFrames do not have a document, and their URLs 283 // TODO(alexmos): RemoteFrames do not have a document, and their URLs
284 // aren't replicated. For now, construct the URL using the replicated 284 // aren't replicated. For now, construct the URL using the replicated
(...skipping 137 matching lines...) Expand 10 before | Expand all | Expand 10 after
422 } 422 }
423 423
424 DEFINE_TRACE(DOMWindow) { 424 DEFINE_TRACE(DOMWindow) {
425 visitor->trace(m_frame); 425 visitor->trace(m_frame);
426 visitor->trace(m_inputCapabilities); 426 visitor->trace(m_inputCapabilities);
427 visitor->trace(m_location); 427 visitor->trace(m_location);
428 EventTargetWithInlineData::trace(visitor); 428 EventTargetWithInlineData::trace(visitor);
429 } 429 }
430 430
431 } // namespace blink 431 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698