summaryrefslogtreecommitdiff
path: root/Source/WebCore/page/DOMWindow.cpp
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@nokia.com>2012-06-01 10:36:58 +0200
committerSimon Hausmann <simon.hausmann@nokia.com>2012-06-01 10:36:58 +0200
commitb1e9e47fa11f608ae16bc07f97a2acf95bf80272 (patch)
treec88c45e80c9c44506e7cdf9a3bb39ebf82a8cd5b /Source/WebCore/page/DOMWindow.cpp
parentbe01689f43cf6882cf670d33df49ead1f570c53a (diff)
downloadqtwebkit-b1e9e47fa11f608ae16bc07f97a2acf95bf80272.tar.gz
Imported WebKit commit 499c84c99aa98e9870fa7eaa57db476c6d160d46 (http://svn.webkit.org/repository/webkit/trunk@119200)
Weekly update :). Particularly relevant changes for Qt are the use of the WebCore image decoders and direct usage of libpng/libjpeg if available in the system.
Diffstat (limited to 'Source/WebCore/page/DOMWindow.cpp')
-rw-r--r--Source/WebCore/page/DOMWindow.cpp17
1 files changed, 15 insertions, 2 deletions
diff --git a/Source/WebCore/page/DOMWindow.cpp b/Source/WebCore/page/DOMWindow.cpp
index 400270b07..86c12126a 100644
--- a/Source/WebCore/page/DOMWindow.cpp
+++ b/Source/WebCore/page/DOMWindow.cpp
@@ -95,6 +95,7 @@
#include "SuddenTermination.h"
#include "WebKitPoint.h"
#include "WindowFeatures.h"
+#include "WindowFocusAllowedIndicator.h"
#include <algorithm>
#include <wtf/CurrentTime.h>
#include <wtf/MainThread.h>
@@ -899,7 +900,7 @@ Element* DOMWindow::frameElement() const
return m_frame->ownerElement();
}
-void DOMWindow::focus()
+void DOMWindow::focus(ScriptExecutionContext* context)
{
if (!m_frame)
return;
@@ -908,8 +909,16 @@ void DOMWindow::focus()
if (!page)
return;
+ bool allowFocus = WindowFocusAllowedIndicator::windowFocusAllowed() || !m_frame->settings()->windowFocusRestricted();
+ if (context) {
+ ASSERT(isMainThread());
+ Document* activeDocument = static_cast<Document*>(context);
+ if (opener() && activeDocument->domWindow() == opener())
+ allowFocus = true;
+ }
+
// If we're a top level window, bring the window to the front.
- if (m_frame == page->mainFrame())
+ if (m_frame == page->mainFrame() && allowFocus)
page->chrome()->focus();
if (!m_frame)
@@ -920,6 +929,7 @@ void DOMWindow::focus()
void DOMWindow::blur()
{
+
if (!m_frame)
return;
@@ -927,6 +937,9 @@ void DOMWindow::blur()
if (!page)
return;
+ if (m_frame->settings()->windowFocusRestricted())
+ return;
+
if (m_frame != page->mainFrame())
return;