OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) | 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) |
3 * (C) 1999 Antti Koivisto (koivisto@kde.org) | 3 * (C) 1999 Antti Koivisto (koivisto@kde.org) |
4 * (C) 2000 Simon Hausmann (hausmann@kde.org) | 4 * (C) 2000 Simon Hausmann (hausmann@kde.org) |
5 * (C) 2001 Dirk Mueller (mueller@kde.org) | 5 * (C) 2001 Dirk Mueller (mueller@kde.org) |
6 * Copyright (C) 2004, 2006, 2008, 2009 Apple Inc. All rights reserved. | 6 * Copyright (C) 2004, 2006, 2008, 2009 Apple Inc. All rights reserved. |
7 * | 7 * |
8 * This library is free software; you can redistribute it and/or | 8 * This library is free software; you can redistribute it and/or |
9 * modify it under the terms of the GNU Library General Public | 9 * modify it under the terms of the GNU Library General Public |
10 * License as published by the Free Software Foundation; either | 10 * License as published by the Free Software Foundation; either |
(...skipping 176 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
187 if (Frame* frame = contentFrame()) | 187 if (Frame* frame = contentFrame()) |
188 frame->transferChildFrameToNewDocument(); | 188 frame->transferChildFrameToNewDocument(); |
189 } | 189 } |
190 | 190 |
191 void HTMLFrameElementBase::insertedIntoDocument() | 191 void HTMLFrameElementBase::insertedIntoDocument() |
192 { | 192 { |
193 HTMLFrameOwnerElement::insertedIntoDocument(); | 193 HTMLFrameOwnerElement::insertedIntoDocument(); |
194 | 194 |
195 if (m_remainsAliveOnRemovalFromTree) { | 195 if (m_remainsAliveOnRemovalFromTree) { |
196 updateOnReparenting(); | 196 updateOnReparenting(); |
197 setRemainsAliveOnRemovalFromTree(false); | 197 m_remainsAliveOnRemovalFromTree = false; |
| 198 m_checkInDocumentTimer.stop(); |
198 return; | 199 return; |
199 } | 200 } |
200 // DocumentFragments don't kick of any loads. | 201 // DocumentFragments don't kick of any loads. |
201 if (!document()->frame()) | 202 if (!document()->frame()) |
202 return; | 203 return; |
203 | 204 |
204 // Loads may cause synchronous javascript execution (e.g. beforeload or | 205 // Loads may cause synchronous javascript execution (e.g. beforeload or |
205 // src=javascript), which could try to access the renderer before the normal | 206 // src=javascript), which could try to access the renderer before the normal |
206 // parser machinery would call lazyAttach() and set us as needing style | 207 // parser machinery would call lazyAttach() and set us as needing style |
207 // resolve. Any code which expects this to be attached will resolve style | 208 // resolve. Any code which expects this to be attached will resolve style |
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
289 | 290 |
290 void HTMLFrameElementBase::setRemainsAliveOnRemovalFromTree(bool value) | 291 void HTMLFrameElementBase::setRemainsAliveOnRemovalFromTree(bool value) |
291 { | 292 { |
292 ASSERT(!value || canRemainAliveOnRemovalFromTree()); | 293 ASSERT(!value || canRemainAliveOnRemovalFromTree()); |
293 m_remainsAliveOnRemovalFromTree = value; | 294 m_remainsAliveOnRemovalFromTree = value; |
294 | 295 |
295 // There is a possibility that JS will do document.adoptNode() on this eleme
nt but will not insert it into the tree. | 296 // There is a possibility that JS will do document.adoptNode() on this eleme
nt but will not insert it into the tree. |
296 // Start the async timer that is normally stopped by attach(). If it's not s
topped and fires, it'll unload the frame. | 297 // Start the async timer that is normally stopped by attach(). If it's not s
topped and fires, it'll unload the frame. |
297 if (value) | 298 if (value) |
298 m_checkInDocumentTimer.startOneShot(0); | 299 m_checkInDocumentTimer.startOneShot(0); |
299 else | 300 else { |
300 m_checkInDocumentTimer.stop(); | 301 m_checkInDocumentTimer.stop(); |
| 302 willRemove(); |
| 303 } |
301 } | 304 } |
302 | 305 |
303 void HTMLFrameElementBase::checkInDocumentTimerFired(Timer<HTMLFrameElementBase>
*) | 306 void HTMLFrameElementBase::checkInDocumentTimerFired(Timer<HTMLFrameElementBase>
*) |
304 { | 307 { |
305 ASSERT(!attached()); | 308 ASSERT(!attached()); |
306 ASSERT(m_remainsAliveOnRemovalFromTree); | 309 ASSERT(m_remainsAliveOnRemovalFromTree); |
307 | 310 |
308 m_remainsAliveOnRemovalFromTree = false; | 311 m_remainsAliveOnRemovalFromTree = false; |
309 willRemove(); | 312 willRemove(); |
310 } | 313 } |
311 | 314 |
312 void HTMLFrameElementBase::willRemove() | 315 void HTMLFrameElementBase::willRemove() |
313 { | 316 { |
314 if (m_remainsAliveOnRemovalFromTree) | 317 if (m_remainsAliveOnRemovalFromTree) |
315 return; | 318 return; |
316 | 319 |
317 HTMLFrameOwnerElement::willRemove(); | 320 HTMLFrameOwnerElement::willRemove(); |
318 } | 321 } |
319 | 322 |
320 #if ENABLE(FULLSCREEN_API) | 323 #if ENABLE(FULLSCREEN_API) |
321 bool HTMLFrameElementBase::allowFullScreen() const | 324 bool HTMLFrameElementBase::allowFullScreen() const |
322 { | 325 { |
323 return hasAttribute(webkitallowfullscreenAttr); | 326 return hasAttribute(webkitallowfullscreenAttr); |
324 } | 327 } |
325 #endif | 328 #endif |
326 | 329 |
327 } // namespace WebCore | 330 } // namespace WebCore |
OLD | NEW |