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)) |