summaryrefslogtreecommitdiff
path: root/Source/WebCore/page/Frame.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/WebCore/page/Frame.cpp')
-rw-r--r--Source/WebCore/page/Frame.cpp18
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)