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

Unified Diff: Source/core/loader/FrameLoader.cpp

Issue 799923006: Make canNavigate() OOPI-friendly (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Null-check in History.cpp Created 5 years, 11 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
« no previous file with comments | « Source/core/loader/FrameLoader.h ('k') | Source/core/page/CreateWindow.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/core/loader/FrameLoader.cpp
diff --git a/Source/core/loader/FrameLoader.cpp b/Source/core/loader/FrameLoader.cpp
index 0cd49ca0058ae98282bfc90ea6ceecda93fa5622..0a88c7c95cdb8482c4d2842165f671e0b9e83dcb 100644
--- a/Source/core/loader/FrameLoader.cpp
+++ b/Source/core/loader/FrameLoader.cpp
@@ -772,7 +772,7 @@ void FrameLoader::load(const FrameLoadRequest& passedRequest)
if (!prepareRequestForThisFrame(request))
return;
- RefPtrWillBeRawPtr<LocalFrame> targetFrame = request.formState() ? 0 : findFrameForNavigation(AtomicString(request.frameName()), request.formState() ? request.formState()->sourceDocument() : m_frame->document());
+ RefPtrWillBeRawPtr<LocalFrame> targetFrame = toLocalFrame(request.formState() ? nullptr : m_frame->findFrameForNavigation(AtomicString(request.frameName()), *m_frame));
if (targetFrame && targetFrame.get() != m_frame) {
request.setFrameName("_self");
targetFrame->loader().load(request);
@@ -1163,15 +1163,16 @@ void FrameLoader::scrollToFragmentWithParentBoundary(const KURL& url)
return;
// Leaking scroll position to a cross-origin ancestor would permit the so-called "framesniffing" attack.
- RefPtrWillBeRawPtr<LocalFrame> boundaryFrame = url.hasFragmentIdentifier() ? m_frame->document()->findUnsafeParentScrollPropagationBoundary() : 0;
+ RefPtrWillBeRawPtr<Frame> boundaryFrame = url.hasFragmentIdentifier() ? m_frame->findUnsafeParentScrollPropagationBoundary() : 0;
- if (boundaryFrame)
- boundaryFrame->view()->setSafeToPropagateScrollToParent(false);
+ // FIXME: Handle RemoteFrames
+ if (boundaryFrame && boundaryFrame->isLocalFrame())
+ toLocalFrame(boundaryFrame.get())->view()->setSafeToPropagateScrollToParent(false);
view->scrollToFragment(url);
- if (boundaryFrame)
- boundaryFrame->view()->setSafeToPropagateScrollToParent(true);
+ if (boundaryFrame && boundaryFrame->isLocalFrame())
+ toLocalFrame(boundaryFrame.get())->view()->setSafeToPropagateScrollToParent(true);
}
bool FrameLoader::shouldClose()
@@ -1371,15 +1372,6 @@ bool FrameLoader::shouldTreatURLAsSrcdocDocument(const KURL& url) const
return ownerElement->fastHasAttribute(srcdocAttr);
}
-LocalFrame* FrameLoader::findFrameForNavigation(const AtomicString& name, Document* activeDocument)
-{
- ASSERT(activeDocument);
- Frame* frame = m_frame->tree().find(name);
- if (!frame || !frame->isLocalFrame() || !activeDocument->canNavigate(toLocalFrame(*frame)))
- return 0;
- return toLocalFrame(frame);
-}
-
void FrameLoader::loadHistoryItem(HistoryItem* item, FrameLoadType frameLoadType, HistoryLoadType historyLoadType, ResourceRequestCachePolicy cachePolicy)
{
RefPtrWillBeRawPtr<LocalFrame> protect(m_frame.get());
@@ -1429,9 +1421,6 @@ SandboxFlags FrameLoader::effectiveSandboxFlags() const
{
SandboxFlags flags = m_forcedSandboxFlags;
// FIXME: We need a way to propagate sandbox flags to out-of-process frames.
- Frame* parentFrame = m_frame->tree().parent();
- if (parentFrame && parentFrame->isLocalFrame())
- flags |= toLocalFrame(parentFrame)->document()->sandboxFlags();
if (FrameOwner* frameOwner = m_frame->owner())
flags |= frameOwner->sandboxFlags();
return flags;
« no previous file with comments | « Source/core/loader/FrameLoader.h ('k') | Source/core/page/CreateWindow.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698