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 Stefan Schimanski (1Stein@gmx.de) | 4 * (C) 2000 Stefan Schimanski (1Stein@gmx.de) |
5 * Copyright (C) 2004, 2005, 2006 Apple Computer, Inc. | 5 * Copyright (C) 2004, 2005, 2006 Apple Computer, Inc. |
6 * | 6 * |
7 * This library is free software; you can redistribute it and/or | 7 * This library is free software; you can redistribute it and/or |
8 * modify it under the terms of the GNU Library General Public | 8 * modify it under the terms of the GNU Library General Public |
9 * License as published by the Free Software Foundation; either | 9 * License as published by the Free Software Foundation; either |
10 * version 2 of the License, or (at your option) any later version. | 10 * version 2 of the License, or (at your option) any later version. |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
63 , m_NPObject(0) | 63 , m_NPObject(0) |
64 , m_isCapturingMouseEvents(false) | 64 , m_isCapturingMouseEvents(false) |
65 // m_needsWidgetUpdate(!createdByParser) allows HTMLObjectElement to delay | 65 // m_needsWidgetUpdate(!createdByParser) allows HTMLObjectElement to delay |
66 // widget updates until after all children are parsed. For HTMLEmbedElement | 66 // widget updates until after all children are parsed. For HTMLEmbedElement |
67 // this delay is unnecessary, but it is simpler to make both classes share | 67 // this delay is unnecessary, but it is simpler to make both classes share |
68 // the same codepath in this class. | 68 // the same codepath in this class. |
69 , m_needsWidgetUpdate(!createdByParser) | 69 , m_needsWidgetUpdate(!createdByParser) |
70 , m_shouldPreferPlugInsForImages(preferPlugInsForImagesOption == ShouldPrefe
rPlugInsForImages) | 70 , m_shouldPreferPlugInsForImages(preferPlugInsForImagesOption == ShouldPrefe
rPlugInsForImages) |
71 , m_usePlaceholderContent(false) | 71 , m_usePlaceholderContent(false) |
72 { | 72 { |
73 setHasCustomStyleCallbacks(); | |
74 } | 73 } |
75 | 74 |
76 HTMLPlugInElement::~HTMLPlugInElement() | 75 HTMLPlugInElement::~HTMLPlugInElement() |
77 { | 76 { |
78 ASSERT(!m_pluginWrapper); // cleared in detach() | 77 ASSERT(!m_pluginWrapper); // cleared in detach() |
79 ASSERT(!m_isDelayingLoadEvent); | 78 ASSERT(!m_isDelayingLoadEvent); |
80 | 79 |
81 if (m_NPObject) { | 80 if (m_NPObject) { |
82 _NPN_ReleaseObject(m_NPObject); | 81 _NPN_ReleaseObject(m_NPObject); |
83 m_NPObject = 0; | 82 m_NPObject = 0; |
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
238 image->setImageResource(RenderImageResource::create()); | 237 image->setImageResource(RenderImageResource::create()); |
239 return image; | 238 return image; |
240 } | 239 } |
241 | 240 |
242 if (usePlaceholderContent()) | 241 if (usePlaceholderContent()) |
243 return new RenderBlockFlow(this); | 242 return new RenderBlockFlow(this); |
244 | 243 |
245 return new RenderEmbeddedObject(this); | 244 return new RenderEmbeddedObject(this); |
246 } | 245 } |
247 | 246 |
248 void HTMLPlugInElement::willRecalcStyle(StyleRecalcChange) | |
249 { | |
250 // FIXME: Why is this necessary? Manual re-attach is almost always wrong. | |
251 if (!useFallbackContent() && !usePlaceholderContent() && needsWidgetUpdate()
&& renderer() && !isImageType()) | |
252 reattach(); | |
253 } | |
254 | |
255 void HTMLPlugInElement::finishParsingChildren() | 247 void HTMLPlugInElement::finishParsingChildren() |
256 { | 248 { |
257 HTMLFrameOwnerElement::finishParsingChildren(); | 249 HTMLFrameOwnerElement::finishParsingChildren(); |
258 if (useFallbackContent()) | 250 if (useFallbackContent()) |
259 return; | 251 return; |
260 | 252 |
261 setNeedsWidgetUpdate(true); | 253 setNeedsWidgetUpdate(true); |
262 if (inDocument()) | 254 if (inDocument()) |
263 setNeedsStyleRecalc(SubtreeStyleChange, StyleChangeReasonForTracing::cre
ate(StyleChangeReason::Plugin)); | 255 lazyReattachIfNeeded(); |
264 } | 256 } |
265 | 257 |
266 void HTMLPlugInElement::resetInstance() | 258 void HTMLPlugInElement::resetInstance() |
267 { | 259 { |
268 m_pluginWrapper.clear(); | 260 m_pluginWrapper.clear(); |
269 } | 261 } |
270 | 262 |
271 SharedPersistent<v8::Object>* HTMLPlugInElement::pluginWrapper() | 263 SharedPersistent<v8::Object>* HTMLPlugInElement::pluginWrapper() |
272 { | 264 { |
273 LocalFrame* frame = document().frame(); | 265 LocalFrame* frame = document().frame(); |
(...skipping 317 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
591 } | 583 } |
592 | 584 |
593 void HTMLPlugInElement::setUsePlaceholderContent(bool use) | 585 void HTMLPlugInElement::setUsePlaceholderContent(bool use) |
594 { | 586 { |
595 if (use != m_usePlaceholderContent) { | 587 if (use != m_usePlaceholderContent) { |
596 m_usePlaceholderContent = use; | 588 m_usePlaceholderContent = use; |
597 lazyReattachIfAttached(); | 589 lazyReattachIfAttached(); |
598 } | 590 } |
599 } | 591 } |
600 | 592 |
| 593 void HTMLPlugInElement::lazyReattachIfNeeded() |
| 594 { |
| 595 if (!useFallbackContent() && !usePlaceholderContent() && needsWidgetUpdate()
&& renderer() && !isImageType()) |
| 596 lazyReattachIfAttached(); |
601 } | 597 } |
| 598 |
| 599 } |
OLD | NEW |