X-Git-Url: https://git.webkit.org/?p=WebKit-https.git;a=blobdiff_plain;f=WebCore%2Fpage%2FFrameTree.cpp;h=76abdf1a1de79fed33b7da7a0b2e9b970c8b4ac6;hp=1fbea6372a71d1e305a710adb7d246dcda746408;hb=a5264a426813aed83c5386f16acc0acb37c32c53;hpb=dd10c6f7aec802339afbf6d71cc05b787669f2e0;ds=inline diff --git a/WebCore/page/FrameTree.cpp b/WebCore/page/FrameTree.cpp index 1fbea6372a71..76abdf1a1de7 100644 --- a/WebCore/page/FrameTree.cpp +++ b/WebCore/page/FrameTree.cpp @@ -49,6 +49,13 @@ void FrameTree::setName(const AtomicString& name) m_name = parent()->tree()->uniqueChildName(name); } +Frame* FrameTree::parent(bool checkForDisconnectedFrame) const +{ + if (checkForDisconnectedFrame && m_thisFrame->isDisconnected()) + return 0; + return m_parent; +} + void FrameTree::appendChild(PassRefPtr child) { ASSERT(child->page() == m_thisFrame->page()); @@ -289,14 +296,14 @@ Frame* FrameTree::deepLastChild() const return result; } -Frame* FrameTree::top() const +Frame* FrameTree::top(bool checkForDisconnectedFrame) const { - if (Page* page = m_thisFrame->page()) - return page->mainFrame(); - Frame* frame = m_thisFrame; - while (Frame* parent = frame->tree()->parent()) + for (Frame* parent = m_thisFrame; parent; parent = parent->tree()->parent()) { frame = parent; + if (checkForDisconnectedFrame && frame->isDisconnected()) + return frame; + } return frame; }