Chromium Code Reviews| 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 229 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 240 | 240 |
| 241 if (usePlaceholderContent()) | 241 if (usePlaceholderContent()) |
| 242 return new RenderBlockFlow(this); | 242 return new RenderBlockFlow(this); |
| 243 | 243 |
| 244 return new RenderEmbeddedObject(this); | 244 return new RenderEmbeddedObject(this); |
| 245 } | 245 } |
| 246 | 246 |
| 247 void HTMLPlugInElement::willRecalcStyle(StyleRecalcChange) | 247 void HTMLPlugInElement::willRecalcStyle(StyleRecalcChange) |
| 248 { | 248 { |
| 249 // FIXME: Why is this necessary? Manual re-attach is almost always wrong. | 249 // FIXME: Why is this necessary? Manual re-attach is almost always wrong. |
| 250 // | |
| 251 // Attributes like type/classid/data determines the type of the embedded con tent | |
| 252 // rendered. If that type changes, the RenderObject needs to be re-attached. | |
| 253 // That is triggered by the triggerReattachThroughStyleRecalcHack() method b elow | |
| 254 // causing a style recalc, which in turn calls this method, where the render er is | |
| 255 // re-attached below. | |
| 256 // | |
| 257 // There are possibly side-effects of doing that here, and not as part of re -attaching | |
| 258 // inside Element::recalcStyle. | |
| 259 // | |
| 260 // Alternatively, we could call lazyReattachIfAttached() where | |
| 261 // triggerReattachThroughStyleRecalcHack() is currently called. | |
| 262 // | |
| 263 // Doing that currently causes regressions in some tests because | |
| 264 // reattachWhitespaceSiblings() will be called after a reattach that is done from | |
|
esprehn
2014/09/19 04:15:08
Can we just rebaseline those tests? What did it ac
rune
2014/09/19 11:21:59
We regressed in an paint invalidation test where t
| |
| 265 // Element::recalcStyle. | |
| 266 // | |
| 267 // The fact that HTMLObjectElement::updateWidgetInternal (called from a time r) is | |
| 268 // responsible for reattaching fallback content, while reattaching embedded content | |
| 269 // renderers happens here as part of style recalc also seems sketchy since t hey are | |
| 270 // both responses to determining the content type. | |
| 271 | |
| 250 if (!useFallbackContent() && !usePlaceholderContent() && needsWidgetUpdate() && renderer() && !isImageType()) | 272 if (!useFallbackContent() && !usePlaceholderContent() && needsWidgetUpdate() && renderer() && !isImageType()) |
| 251 reattach(); | 273 reattach(); |
| 252 } | 274 } |
| 253 | 275 |
| 276 void HTMLPlugInElement::triggerReattachThroughStyleRecalcHack() | |
| 277 { | |
| 278 // No styles to recalc, just to trigger a call to willRecalcStyle() :-( | |
|
esprehn
2014/09/19 04:15:08
FIXME:
| |
| 279 setNeedsStyleRecalc(LocalStyleChange); | |
| 280 } | |
| 281 | |
| 254 void HTMLPlugInElement::finishParsingChildren() | 282 void HTMLPlugInElement::finishParsingChildren() |
| 255 { | 283 { |
| 256 HTMLFrameOwnerElement::finishParsingChildren(); | 284 HTMLFrameOwnerElement::finishParsingChildren(); |
| 257 if (useFallbackContent()) | 285 if (useFallbackContent()) |
| 258 return; | 286 return; |
| 259 | 287 |
| 260 setNeedsWidgetUpdate(true); | 288 setNeedsWidgetUpdate(true); |
| 261 if (inDocument()) | 289 if (inDocument()) |
| 262 setNeedsStyleRecalc(SubtreeStyleChange); | 290 triggerReattachThroughStyleRecalcHack(); |
| 263 } | 291 } |
| 264 | 292 |
| 265 void HTMLPlugInElement::resetInstance() | 293 void HTMLPlugInElement::resetInstance() |
| 266 { | 294 { |
| 267 m_pluginWrapper.clear(); | 295 m_pluginWrapper.clear(); |
| 268 } | 296 } |
| 269 | 297 |
| 270 SharedPersistent<v8::Object>* HTMLPlugInElement::pluginWrapper() | 298 SharedPersistent<v8::Object>* HTMLPlugInElement::pluginWrapper() |
| 271 { | 299 { |
| 272 LocalFrame* frame = document().frame(); | 300 LocalFrame* frame = document().frame(); |
| (...skipping 313 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 586 | 614 |
| 587 void HTMLPlugInElement::setUsePlaceholderContent(bool use) | 615 void HTMLPlugInElement::setUsePlaceholderContent(bool use) |
| 588 { | 616 { |
| 589 if (use != m_usePlaceholderContent) { | 617 if (use != m_usePlaceholderContent) { |
| 590 m_usePlaceholderContent = use; | 618 m_usePlaceholderContent = use; |
| 591 lazyReattachIfAttached(); | 619 lazyReattachIfAttached(); |
| 592 } | 620 } |
| 593 } | 621 } |
| 594 | 622 |
| 595 } | 623 } |
| OLD | NEW |