Chromium Code Reviews| Index: Source/core/html/HTMLElement.cpp |
| diff --git a/Source/core/html/HTMLElement.cpp b/Source/core/html/HTMLElement.cpp |
| index 3be827717869a0807fb0eb671583a1ab14fc78c5..21205e91b4058d188ae5b773bccfcfeba9b5c9d5 100644 |
| --- a/Source/core/html/HTMLElement.cpp |
| +++ b/Source/core/html/HTMLElement.cpp |
| @@ -157,6 +157,62 @@ static inline bool isValidDirAttribute(const AtomicString& value) |
| return equalIgnoringCase(value, "auto") || equalIgnoringCase(value, "ltr") || equalIgnoringCase(value, "rtl"); |
| } |
| +static bool shouldUseUnicodeBidiEmbed(const Element* element) |
|
eseidel
2013/11/14 06:41:30
Is this trying to list all block elements? Why wo
|
| +{ |
| + if (element->hasTagName(bdoTag) |
|
esprehn
2013/11/14 06:46:54
This is not right.
|
| + || 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) { |
| @@ -191,7 +247,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)) |