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

Unified Diff: Source/core/frame/DOMWindow.cpp

Issue 131113003: Fix DOMWindow::isCurrentlyDisplayedInFrame to return false when detached (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Fix ScreenOrientation + test window.open. Created 6 years, 10 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/frame/BarProp.cpp ('k') | Source/core/timing/Performance.cpp » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/core/frame/DOMWindow.cpp
diff --git a/Source/core/frame/DOMWindow.cpp b/Source/core/frame/DOMWindow.cpp
index 010eab9c6c2b5c65b33a56affb7cede7be951b2b..5373088b201620f65f01341a36446d31f30cd4f2 100644
--- a/Source/core/frame/DOMWindow.cpp
+++ b/Source/core/frame/DOMWindow.cpp
@@ -590,7 +590,7 @@ void DOMWindow::resetDOMWindowProperties()
bool DOMWindow::isCurrentlyDisplayedInFrame() const
{
- return m_frame && m_frame->domWindow() == this;
+ return m_frame && m_frame->domWindow() == this && m_frame->host();
}
int DOMWindow::orientation() const
@@ -605,8 +605,6 @@ int DOMWindow::orientation() const
Screen* DOMWindow::screen() const
{
- if (!isCurrentlyDisplayedInFrame())
- return 0;
abarth-chromium 2014/03/01 07:00:32 Why doesn't this change web-visible behavior? Pre
dcheng 2014/03/01 09:41:53 It doesn't change web visible behavior because the
if (!m_screen)
m_screen = Screen::create(m_frame);
return m_screen.get();
@@ -614,8 +612,6 @@ Screen* DOMWindow::screen() const
History* DOMWindow::history() const
{
- if (!isCurrentlyDisplayedInFrame())
- return 0;
if (!m_history)
m_history = History::create(m_frame);
return m_history.get();
@@ -624,8 +620,6 @@ History* DOMWindow::history() const
BarProp* DOMWindow::locationbar() const
{
UseCounter::count(document(), UseCounter::BarPropLocationbar);
- if (!isCurrentlyDisplayedInFrame())
- return 0;
if (!m_locationbar)
m_locationbar = BarProp::create(m_frame, BarProp::Locationbar);
return m_locationbar.get();
@@ -634,8 +628,6 @@ BarProp* DOMWindow::locationbar() const
BarProp* DOMWindow::menubar() const
{
UseCounter::count(document(), UseCounter::BarPropMenubar);
- if (!isCurrentlyDisplayedInFrame())
- return 0;
if (!m_menubar)
m_menubar = BarProp::create(m_frame, BarProp::Menubar);
return m_menubar.get();
@@ -644,8 +636,6 @@ BarProp* DOMWindow::menubar() const
BarProp* DOMWindow::personalbar() const
{
UseCounter::count(document(), UseCounter::BarPropPersonalbar);
- if (!isCurrentlyDisplayedInFrame())
- return 0;
if (!m_personalbar)
m_personalbar = BarProp::create(m_frame, BarProp::Personalbar);
return m_personalbar.get();
@@ -654,8 +644,6 @@ BarProp* DOMWindow::personalbar() const
BarProp* DOMWindow::scrollbars() const
{
UseCounter::count(document(), UseCounter::BarPropScrollbars);
- if (!isCurrentlyDisplayedInFrame())
- return 0;
if (!m_scrollbars)
m_scrollbars = BarProp::create(m_frame, BarProp::Scrollbars);
return m_scrollbars.get();
@@ -664,8 +652,6 @@ BarProp* DOMWindow::scrollbars() const
BarProp* DOMWindow::statusbar() const
{
UseCounter::count(document(), UseCounter::BarPropStatusbar);
- if (!isCurrentlyDisplayedInFrame())
- return 0;
if (!m_statusbar)
m_statusbar = BarProp::create(m_frame, BarProp::Statusbar);
return m_statusbar.get();
@@ -674,8 +660,6 @@ BarProp* DOMWindow::statusbar() const
BarProp* DOMWindow::toolbar() const
{
UseCounter::count(document(), UseCounter::BarPropToolbar);
- if (!isCurrentlyDisplayedInFrame())
- return 0;
if (!m_toolbar)
m_toolbar = BarProp::create(m_frame, BarProp::Toolbar);
return m_toolbar.get();
@@ -683,8 +667,6 @@ BarProp* DOMWindow::toolbar() const
Console* DOMWindow::console() const
{
- if (!isCurrentlyDisplayedInFrame())
- return 0;
if (!m_console)
m_console = Console::create(m_frame);
return m_console.get();
@@ -708,8 +690,6 @@ ApplicationCache* DOMWindow::applicationCache() const
Navigator* DOMWindow::navigator() const
{
- if (!isCurrentlyDisplayedInFrame())
- return 0;
if (!m_navigator)
m_navigator = Navigator::create(m_frame);
return m_navigator.get();
@@ -717,8 +697,6 @@ Navigator* DOMWindow::navigator() const
Performance* DOMWindow::performance() const
{
- if (!isCurrentlyDisplayedInFrame())
- return 0;
if (!m_performance)
m_performance = Performance::create(m_frame);
return m_performance.get();
@@ -726,8 +704,6 @@ Performance* DOMWindow::performance() const
Location* DOMWindow::location() const
{
- if (!isCurrentlyDisplayedInFrame())
- return 0;
if (!m_location)
m_location = Location::create(m_frame);
return m_location.get();
@@ -867,10 +843,7 @@ void DOMWindow::postMessageTimerFired(PassOwnPtr<PostMessageTimer> t)
{
OwnPtr<PostMessageTimer> timer(t);
- // FIXME: The frame()->host() check really does not belong here. We should
- // move it up into isCurrentlyDisplayedInFrame(); however, doing so breaks a
- // number of window properties like window.toolbar.
- if (!isCurrentlyDisplayedInFrame() || !frame()->host())
+ if (!isCurrentlyDisplayedInFrame())
return;
RefPtr<MessageEvent> event = timer->event();
@@ -1294,8 +1267,6 @@ Document* DOMWindow::document() const
PassRefPtr<StyleMedia> DOMWindow::styleMedia() const
{
- if (!isCurrentlyDisplayedInFrame())
- return nullptr;
if (!m_media)
m_media = StyleMedia::create(m_frame);
return m_media.get();
« no previous file with comments | « Source/core/frame/BarProp.cpp ('k') | Source/core/timing/Performance.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698