| Index: Source/core/html/HTMLElement.cpp
|
| diff --git a/Source/core/html/HTMLElement.cpp b/Source/core/html/HTMLElement.cpp
|
| index 42d27a47a5b5ea39d6f55b467ebc5b1888525e90..01bf126bcecf1cbfe0824bf4c98e5ddd81ed2559 100644
|
| --- a/Source/core/html/HTMLElement.cpp
|
| +++ b/Source/core/html/HTMLElement.cpp
|
| @@ -158,6 +158,62 @@ static inline bool isValidDirAttribute(const AtomicString& value)
|
| return equalIgnoringCase(value, "auto") || equalIgnoringCase(value, "ltr") || equalIgnoringCase(value, "rtl");
|
| }
|
|
|
| +static bool shouldUseUnicodeBidiEmbed(const Element* element)
|
| +{
|
| + if (element->hasTagName(bdoTag)
|
| + || element->hasTagName(addressTag)
|
| + || element->hasTagName(blockquoteTag)
|
| + || element->hasTagName(centerTag)
|
| + || element->hasTagName(divTag)
|
| + || element->hasTagName(figureTag)
|
| + || element->hasTagName(figcaptionTag)
|
| + || element->hasTagName(footerTag)
|
| + || element->hasTagName(formTag)
|
| + || element->hasTagName(headerTag)
|
| + || element->hasTagName(hrTag)
|
| + || element->hasTagName(legendTag)
|
| + || element->hasTagName(listingTag)
|
| + || element->hasTagName(pTag)
|
| + || element->hasTagName(plaintextTag)
|
| + || element->hasTagName(preTag)
|
| + || element->hasTagName(summaryTag)
|
| + || element->hasTagName(xmpTag)
|
| + || element->hasTagName(articleTag)
|
| + || element->hasTagName(asideTag)
|
| + || element->hasTagName(h1Tag)
|
| + || element->hasTagName(h2Tag)
|
| + || element->hasTagName(h3Tag)
|
| + || element->hasTagName(h4Tag)
|
| + || element->hasTagName(h5Tag)
|
| + || element->hasTagName(h6Tag)
|
| + || element->hasTagName(hgroupTag)
|
| + || element->hasTagName(mainTag)
|
| + || element->hasTagName(navTag)
|
| + || element->hasTagName(sectionTag)
|
| + || element->hasTagName(tableTag)
|
| + || element->hasTagName(captionTag)
|
| + || element->hasTagName(colgroupTag)
|
| + || element->hasTagName(colTag)
|
| + || element->hasTagName(theadTag)
|
| + || element->hasTagName(tbodyTag)
|
| + || element->hasTagName(tfootTag)
|
| + || element->hasTagName(trTag)
|
| + || element->hasTagName(tdTag)
|
| + || element->hasTagName(thTag)
|
| + || element->hasTagName(dirTag)
|
| + || element->hasTagName(ddTag)
|
| + || element->hasTagName(dlTag)
|
| + || element->hasTagName(dtTag)
|
| + || element->hasTagName(menuTag)
|
| + || element->hasTagName(olTag)
|
| + || element->hasTagName(ulTag)
|
| + || element->hasTagName(liTag)
|
| + || element->hasTagName(bdiTag)
|
| + || element->hasTagName(outputTag))
|
| + return false;
|
| + return true;
|
| +}
|
| +
|
| void HTMLElement::collectStyleForPresentationAttribute(const QualifiedName& name, const AtomicString& value, MutableStylePropertySet* style)
|
| {
|
| if (name == alignAttr) {
|
| @@ -192,7 +248,7 @@ void HTMLElement::collectStyleForPresentationAttribute(const QualifiedName& name
|
| addPropertyToPresentationAttributeStyle(style, CSSPropertyDirection, value);
|
| else
|
| addPropertyToPresentationAttributeStyle(style, CSSPropertyDirection, "ltr");
|
| - if (!hasTagName(bdiTag) && !hasTagName(bdoTag) && !hasTagName(outputTag))
|
| + if (shouldUseUnicodeBidiEmbed(this))
|
| addPropertyToPresentationAttributeStyle(style, CSSPropertyUnicodeBidi, CSSValueEmbed);
|
| }
|
| } else if (name.matches(XMLNames::langAttr))
|
|
|