diff options
Diffstat (limited to 'Source/WebCore/page/Frame.cpp')
| -rw-r--r-- | Source/WebCore/page/Frame.cpp | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/Source/WebCore/page/Frame.cpp b/Source/WebCore/page/Frame.cpp index 4f73e785a..d16cf9480 100644 --- a/Source/WebCore/page/Frame.cpp +++ b/Source/WebCore/page/Frame.cpp @@ -40,7 +40,6 @@ #include "DOMWindow.h" #include "CachedResourceLoader.h" #include "DocumentType.h" -#include "EditingText.h" #include "EditorClient.h" #include "EventNames.h" #include "FloatQuad.h" @@ -1017,6 +1016,23 @@ void Frame::notifyChromeClientWheelEventHandlerCountChanged() const m_page->chrome()->client()->numWheelEventHandlersChanged(count); } +bool Frame::isURLAllowed(const KURL& url) const +{ + // We allow one level of self-reference because some sites depend on that, + // but we don't allow more than one. + if (m_page->subframeCount() >= Page::maxNumberOfFrames) + return false; + bool foundSelfReference = false; + for (const Frame* frame = this; frame; frame = frame->tree()->parent()) { + if (equalIgnoringFragmentIdentifier(frame->document()->url(), url)) { + if (foundSelfReference) + return false; + foundSelfReference = true; + } + } + return true; +} + #if !PLATFORM(MAC) && !PLATFORM(WIN) struct ScopedFramePaintingState { ScopedFramePaintingState(Frame* frame, Node* node) |
