diff options
Diffstat (limited to 'WebCore/page/DOMWindow.cpp')
-rw-r--r-- | WebCore/page/DOMWindow.cpp | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/WebCore/page/DOMWindow.cpp b/WebCore/page/DOMWindow.cpp index 22e1355..17b4c3d 100644 --- a/WebCore/page/DOMWindow.cpp +++ b/WebCore/page/DOMWindow.cpp @@ -867,7 +867,7 @@ void DOMWindow::blur() page->chrome()->unfocus(); } -void DOMWindow::close() +void DOMWindow::close(ScriptExecutionContext* context) { if (!m_frame) return; @@ -879,6 +879,16 @@ void DOMWindow::close() if (m_frame != page->mainFrame()) return; + if (context) { + ASSERT(WTF::isMainThread()); + Frame* activeFrame = static_cast<Document*>(context)->frame(); + if (!activeFrame) + return; + + if (!activeFrame->loader()->shouldAllowNavigation(m_frame)) + return; + } + Settings* settings = m_frame->settings(); bool allowScriptsToCloseWindows = settings && settings->allowScriptsToCloseWindows(); |