dir=auto should imply unicode-bidi:isolate by default
authorrniwa@webkit.org <rniwa@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 28 Nov 2011 19:19:37 +0000 (19:19 +0000)
committerrniwa@webkit.org <rniwa@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 28 Nov 2011 19:19:37 +0000 (19:19 +0000)
commit01f7f670bc936de0dba531677adfe62a9dcd24db
tree03f4c8422f3a6a137cefab926dbef9a291af927b
parentd00eff91e85132fbd4b26e97a330dc8d3b7a6170
dir=auto should imply unicode-bidi:isolate by default
https://bugs.webkit.org/show_bug.cgi?id=63903

Reviewed by Dan Bernstein.

Source/WebCore:

Fixed WebKit's implementation of bdo, bdi, and output elements to match HTML5 spec section 10.3.5:
http://dev.w3.org/html5/spec/Overview.html#bidirectional-text

Any element with dir=auto other than bdo, textarea, and pre should use unicode-bidi: -webkit-isolate by default.

We still don't use -webkit-isolate for non-phrasing elements by default and unicode-override -webkit-isolate for
bdo[dir=auto] so these two cases are failing in the added test.

Test: fast/css/default-bidi-css-rules.html

* css/html.css:
(bdi, output): bdi and output should both use -webkit-isolate as the default value for unicode-bidi.
(bdo): bdo should use bidi-override as the default value for unicode-bidi.
* dom/MappedAttributeEntry.h: Add eBDI, which is used by bdi and output elements.
* html/HTMLElement.cpp:
(WebCore::HTMLElement::mapToEntry): Don't share the cache for dir attribute between bdi and other elements
just like we don't share the cache for dir attribute between bdo and other elements.
(WebCore::unicodeBidiAttributeForDirAuto): Don't set bidi-override for bdo element since this is done
in the UA stylesheet now. Set unicode-bidi to -webkit-isolate for elements other than pre and textarea now that
this function is called only when dir=auto.
called when dir=auto as the name implies.
(WebCore::HTMLElement::parseMappedAttribute): Don't call unicodeBidiAttributeForDirAuto when dir is not
auto. Also set unicode-bidi to embed when dir is not auto and the element is neither bdi, bdo, nor output.
* html/HTMLOutputElement.cpp:
(WebCore::HTMLOutputElement::mapToEntry): Don't share the cache for dir between output and other elements.
* html/HTMLOutputElement.h:
* html/HTMLTagNames.in:

LayoutTests:

Added a test to ensure WebKit implements HTML5 bidirectional text support properly:
http://dev.w3.org/html5/spec/Overview.html#bidirectional-text

* fast/css/default-bidi-css-rules-expected.txt: Added.
* fast/css/default-bidi-css-rules.html: Added.

git-svn-id: http://svn.webkit.org/repository/webkit/trunk@101268 268f45cc-cd09-0410-ab3c-d52691b4dbfc
LayoutTests/ChangeLog
LayoutTests/fast/css/default-bidi-css-rules-expected.txt [new file with mode: 0644]
LayoutTests/fast/css/default-bidi-css-rules.html [new file with mode: 0644]
Source/WebCore/ChangeLog
Source/WebCore/css/html.css
Source/WebCore/dom/MappedAttributeEntry.h
Source/WebCore/html/HTMLElement.cpp
Source/WebCore/html/HTMLOutputElement.cpp
Source/WebCore/html/HTMLOutputElement.h
Source/WebCore/html/HTMLTagNames.in