Chromium Code Reviews| Index: Source/core/html/HTMLObjectElement.cpp |
| diff --git a/Source/core/html/HTMLObjectElement.cpp b/Source/core/html/HTMLObjectElement.cpp |
| index c2751ebf6bf50e2cbe22c5aa2434900cc588c65c..6bca4a6ac0c09bb46bc5931d20447481f5295451 100644 |
| --- a/Source/core/html/HTMLObjectElement.cpp |
| +++ b/Source/core/html/HTMLObjectElement.cpp |
| @@ -98,8 +98,12 @@ void HTMLObjectElement::parseAttribute(const QualifiedName& name, const AtomicSt |
| size_t pos = m_serviceType.find(";"); |
| if (pos != kNotFound) |
| m_serviceType = m_serviceType.left(pos); |
| - if (renderer()) |
| + if (renderer()) { |
|
esprehn
2014/01/15 00:16:38
Blah, this isn't right, if the thing was display:
sof
2014/01/15 15:26:58
ok, I went ahead & did it here/now.
|
| setNeedsWidgetUpdate(true); |
| + // Per spec, only re-determine representation iff 'classid' and 'data' aren't present. |
|
eseidel
2014/01/15 00:09:41
setNeedsWidgetUpdate is going to cause a recalc, n
esprehn
2014/01/15 00:16:38
no, it just sets a boolean, that whole system is b
|
| + if (inDocument() && !fastHasAttribute(classidAttr) && !fastHasAttribute(dataAttr)) |
|
esprehn
2014/01/15 00:16:38
You don't need the inDocument() check, setNeedsSty
sof
2014/01/15 15:26:58
Done.
|
| + setNeedsStyleRecalc(); |
| + } |
| } else if (name == dataAttr) { |
| m_url = stripLeadingAndTrailingHTMLSpaces(value); |
| if (renderer()) { |
| @@ -108,12 +112,18 @@ void HTMLObjectElement::parseAttribute(const QualifiedName& name, const AtomicSt |
| if (!m_imageLoader) |
| m_imageLoader = adoptPtr(new HTMLImageLoader(this)); |
| m_imageLoader->updateFromElementIgnoringPreviousError(); |
| + } else if (inDocument() && !fastHasAttribute(classidAttr)) { |
|
esprehn
2014/01/15 00:16:38
Same, don't check inDocument()
sof
2014/01/15 15:26:58
Done.
|
| + setNeedsStyleRecalc(); |
| } |
| } |
| } else if (name == classidAttr) { |
| m_classId = value; |
| - if (renderer()) |
| + if (renderer()) { |
| setNeedsWidgetUpdate(true); |
| + // Always re-determine representation upon 'classid' changing. |
| + if (inDocument()) |
|
esprehn
2014/01/15 00:16:38
Remove inDocument()
sof
2014/01/15 15:26:58
Done.
|
| + setNeedsStyleRecalc(); |
| + } |
| } else if (name == onbeforeloadAttr) { |
| setAttributeEventListener(EventTypeNames::beforeload, createAttributeEventListener(this, name, value)); |
| } else { |