| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2006, 2007, 2009 Apple Inc. All rights reserved. | 2 * Copyright (C) 2006, 2007, 2009 Apple Inc. All rights reserved. |
| 3 * | 3 * |
| 4 * This library is free software; you can redistribute it and/or | 4 * This library is free software; you can redistribute it and/or |
| 5 * modify it under the terms of the GNU Library General Public | 5 * modify it under the terms of the GNU Library General Public |
| 6 * License as published by the Free Software Foundation; either | 6 * License as published by the Free Software Foundation; either |
| 7 * version 2 of the License, or (at your option) any later version. | 7 * version 2 of the License, or (at your option) any later version. |
| 8 * | 8 * |
| 9 * This library is distributed in the hope that it will be useful, | 9 * This library is distributed in the hope that it will be useful, |
| 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of | 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| (...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 145 } | 145 } |
| 146 | 146 |
| 147 void HTMLFrameOwnerElement::disconnectContentFrame() | 147 void HTMLFrameOwnerElement::disconnectContentFrame() |
| 148 { | 148 { |
| 149 // FIXME: Currently we don't do this in removedFrom because this causes an | 149 // FIXME: Currently we don't do this in removedFrom because this causes an |
| 150 // unload event in the subframe which could execute script that could then | 150 // unload event in the subframe which could execute script that could then |
| 151 // reach up into this document and then attempt to look back down. We should | 151 // reach up into this document and then attempt to look back down. We should |
| 152 // see if this behavior is really needed as Gecko does not allow this. | 152 // see if this behavior is really needed as Gecko does not allow this. |
| 153 if (RefPtrWillBeRawPtr<Frame> frame = contentFrame()) { | 153 if (RefPtrWillBeRawPtr<Frame> frame = contentFrame()) { |
| 154 frame->detach(); | 154 frame->detach(); |
| 155 frame->disconnectOwnerElement(); | |
| 156 } | 155 } |
| 157 #if ENABLE(OILPAN) | 156 #if ENABLE(OILPAN) |
| 158 // Oilpan: a plugin container must be explicitly disposed before it | 157 // Oilpan: a plugin container must be explicitly disposed before it |
| 159 // is swept and finalized. This is because the underlying plugin needs | 158 // is swept and finalized. This is because the underlying plugin needs |
| 160 // to be able to access a fully-functioning frame (and all it refers | 159 // to be able to access a fully-functioning frame (and all it refers |
| 161 // to) while it destructs and cleans out its resources. | 160 // to) while it destructs and cleans out its resources. |
| 162 if (m_widget) { | 161 if (m_widget) { |
| 163 m_widget->dispose(); | 162 m_widget->dispose(); |
| 164 m_widget = nullptr; | 163 m_widget = nullptr; |
| 165 } | 164 } |
| 166 #endif | 165 #endif |
| 167 } | 166 } |
| 168 | 167 |
| 169 HTMLFrameOwnerElement::~HTMLFrameOwnerElement() | 168 HTMLFrameOwnerElement::~HTMLFrameOwnerElement() |
| 170 { | 169 { |
| 171 #if ENABLE(OILPAN) | |
| 172 // An owner must by now have been informed of detachment | 170 // An owner must by now have been informed of detachment |
| 173 // when the frame was closed. | 171 // when the frame was closed. |
| 174 ASSERT(!m_contentFrame); | 172 ASSERT(!m_contentFrame); |
| 175 #else | |
| 176 if (m_contentFrame) | |
| 177 m_contentFrame->disconnectOwnerElement(); | |
| 178 #endif | |
| 179 } | 173 } |
| 180 | 174 |
| 181 Document* HTMLFrameOwnerElement::contentDocument() const | 175 Document* HTMLFrameOwnerElement::contentDocument() const |
| 182 { | 176 { |
| 183 return (m_contentFrame && m_contentFrame->isLocalFrame()) ? toLocalFrame(m_c
ontentFrame)->document() : 0; | 177 return (m_contentFrame && m_contentFrame->isLocalFrame()) ? toLocalFrame(m_c
ontentFrame)->document() : 0; |
| 184 } | 178 } |
| 185 | 179 |
| 186 LocalDOMWindow* HTMLFrameOwnerElement::contentWindow() const | 180 LocalDOMWindow* HTMLFrameOwnerElement::contentWindow() const |
| 187 { | 181 { |
| 188 return m_contentFrame ? m_contentFrame->domWindow() : 0; | 182 return m_contentFrame ? m_contentFrame->domWindow() : 0; |
| (...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 267 void HTMLFrameOwnerElement::trace(Visitor* visitor) | 261 void HTMLFrameOwnerElement::trace(Visitor* visitor) |
| 268 { | 262 { |
| 269 visitor->trace(m_contentFrame); | 263 visitor->trace(m_contentFrame); |
| 270 visitor->trace(m_widget); | 264 visitor->trace(m_widget); |
| 271 HTMLElement::trace(visitor); | 265 HTMLElement::trace(visitor); |
| 272 FrameOwner::trace(visitor); | 266 FrameOwner::trace(visitor); |
| 273 } | 267 } |
| 274 | 268 |
| 275 | 269 |
| 276 } // namespace blink | 270 } // namespace blink |
| OLD | NEW |