| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 1998, 1999 Torben Weis <weis@kde.org> | 2 * Copyright (C) 1998, 1999 Torben Weis <weis@kde.org> |
| 3 * 1999 Lars Knoll <knoll@kde.org> | 3 * 1999 Lars Knoll <knoll@kde.org> |
| 4 * 1999 Antti Koivisto <koivisto@kde.org> | 4 * 1999 Antti Koivisto <koivisto@kde.org> |
| 5 * 2000 Simon Hausmann <hausmann@kde.org> | 5 * 2000 Simon Hausmann <hausmann@kde.org> |
| 6 * 2000 Stefan Schimanski <1Stein@gmx.de> | 6 * 2000 Stefan Schimanski <1Stein@gmx.de> |
| 7 * 2001 George Staikos <staikos@kde.org> | 7 * 2001 George Staikos <staikos@kde.org> |
| 8 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All r
ights reserved. | 8 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All r
ights reserved. |
| 9 * Copyright (C) 2005 Alexey Proskuryakov <ap@nypop.com> | 9 * Copyright (C) 2005 Alexey Proskuryakov <ap@nypop.com> |
| 10 * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies) | 10 * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies) |
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 73 if (m_owner) { | 73 if (m_owner) { |
| 74 if (m_owner->isLocal()) | 74 if (m_owner->isLocal()) |
| 75 toHTMLFrameOwnerElement(m_owner)->setContentFrame(*this); | 75 toHTMLFrameOwnerElement(m_owner)->setContentFrame(*this); |
| 76 } else { | 76 } else { |
| 77 page()->setMainFrame(this); | 77 page()->setMainFrame(this); |
| 78 } | 78 } |
| 79 } | 79 } |
| 80 | 80 |
| 81 Frame::~Frame() | 81 Frame::~Frame() |
| 82 { | 82 { |
| 83 #if ENABLE(OILPAN) | |
| 84 ASSERT(!m_owner); | 83 ASSERT(!m_owner); |
| 85 #else | 84 #if !ENABLE(OILPAN) |
| 86 // FIXME: We should not be doing all this work inside the destructor | 85 // FIXME: We should not be doing all this work inside the destructor |
| 87 disconnectOwnerElement(); | |
| 88 setDOMWindow(nullptr); | 86 setDOMWindow(nullptr); |
| 89 #endif | 87 #endif |
| 90 | 88 |
| 91 #ifndef NDEBUG | 89 #ifndef NDEBUG |
| 92 frameCounter.decrement(); | 90 frameCounter.decrement(); |
| 93 #endif | 91 #endif |
| 94 } | 92 } |
| 95 | 93 |
| 96 void Frame::trace(Visitor* visitor) | 94 void Frame::trace(Visitor* visitor) |
| 97 { | 95 { |
| 98 visitor->trace(m_treeNode); | 96 visitor->trace(m_treeNode); |
| 99 visitor->trace(m_host); | 97 visitor->trace(m_host); |
| 100 visitor->trace(m_owner); | 98 visitor->trace(m_owner); |
| 101 visitor->trace(m_domWindow); | 99 visitor->trace(m_domWindow); |
| 102 } | 100 } |
| 103 | 101 |
| 104 void Frame::detach() | 102 void Frame::detach() |
| 105 { | 103 { |
| 106 // client() should never be null because that means we somehow re-entered | 104 // client() should never be null because that means we somehow re-entered |
| 107 // the frame detach code... but it is sometimes. | 105 // the frame detach code... but it is sometimes. |
| 108 // FIXME: Understand why this is happening so we can document this insanity. | 106 // FIXME: Understand why this is happening so we can document this insanity. |
| 109 // http://crbug.com/371084 is a probable explanation. | 107 // http://crbug.com/371084 is a probable explanation. |
| 110 if (!client()) | 108 if (!client()) |
| 111 return; | 109 return; |
| 110 disconnectOwnerElement(); |
| 112 // After this, we must no longer talk to the client since this clears | 111 // After this, we must no longer talk to the client since this clears |
| 113 // its owning reference back to our owning LocalFrame. | 112 // its owning reference back to our owning LocalFrame. |
| 114 m_client->detached(); | 113 m_client->detached(); |
| 115 m_client = nullptr; | 114 m_client = nullptr; |
| 116 m_host = nullptr; | 115 m_host = nullptr; |
| 117 } | 116 } |
| 118 | 117 |
| 119 void Frame::detachChildren() | 118 void Frame::detachChildren() |
| 120 { | 119 { |
| 121 typedef WillBeHeapVector<RefPtrWillBeMember<Frame> > FrameVector; | 120 typedef WillBeHeapVector<RefPtrWillBeMember<Frame> > FrameVector; |
| (...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 223 } | 222 } |
| 224 m_owner = nullptr; | 223 m_owner = nullptr; |
| 225 } | 224 } |
| 226 | 225 |
| 227 HTMLFrameOwnerElement* Frame::deprecatedLocalOwner() const | 226 HTMLFrameOwnerElement* Frame::deprecatedLocalOwner() const |
| 228 { | 227 { |
| 229 return m_owner && m_owner->isLocal() ? toHTMLFrameOwnerElement(m_owner) : 0; | 228 return m_owner && m_owner->isLocal() ? toHTMLFrameOwnerElement(m_owner) : 0; |
| 230 } | 229 } |
| 231 | 230 |
| 232 } // namespace blink | 231 } // namespace blink |
| OLD | NEW |