RESOLVED FIXED 124572
Map the dir attribute to the CSS direction property
https://bugs.webkit.org/show_bug.cgi?id=124572
Summary Map the dir attribute to the CSS direction property
Frédéric Wang (:fredw)
Reported 2013-11-19 02:51:34 PST
This is the first step for bug 123018: map dir attribute on math, mstyle, mrow and token elements to style. I'll add minimal tests for that and address Davin's request in but 124121 comment 2. The actual implementation is not done, but that should work for token elements (needed for MathJax error message) and very simple math (e.g. mrow, scripts).
Attachments
Patch V1 (12.70 KB, patch)
2013-11-19 02:57 PST, Frédéric Wang (:fredw)
no flags
Follow up V1 (4.04 KB, patch)
2013-11-20 03:31 PST, Frédéric Wang (:fredw)
no flags
Follow up V2 (7.22 KB, patch)
2013-11-20 13:04 PST, Frédéric Wang (:fredw)
no flags
Follow up V3 (9.24 KB, patch)
2013-11-21 03:14 PST, Frédéric Wang (:fredw)
no flags
Frédéric Wang (:fredw)
Comment 1 2013-11-19 02:57:38 PST
Created attachment 217283 [details] Patch V1
Darin Adler
Comment 2 2013-11-19 09:06:40 PST
Comment on attachment 217283 [details] Patch V1 View in context: https://bugs.webkit.org/attachment.cgi?id=217283&action=review This is OK, but I see room for improvement, especially on test coverage. > Source/WebCore/mathml/MathMLElement.cpp:81 > + if (name == mathbackgroundAttr || name == mathsizeAttr || name == mathcolorAttr || name == fontsizeAttr || name == backgroundAttr || name == colorAttr || name == fontstyleAttr || name == fontweightAttr || name == fontfamilyAttr || name == dirAttr) I would be more comfortable with this if statement if the attributes were in some obvious order, say alphabetical. Also would be nice if there was a test that would fail if each of these was removed. I am betting that I could remove one of these 10 without any test failing. > Source/WebCore/mathml/MathMLElement.cpp:110 > + if (hasTagName(mathTag) || hasTagName(mstyleTag) || hasTagName(mrowTag) || hasTagName(mtextTag) || hasTagName(msTag) || hasTagName(moTag) || hasTagName(miTag) || hasTagName(mnTag)) I would be more comfortable with this if statement if the tag names were in some obvious order, say alphabetical. Also would be nice if there was a test that would fail if each of these was removed. I am betting that I could remove one of these 8 without any test failing. Also, this might be a good candidate for a named function (can be inline so the code generated is the same), since it’s not obvious to me what these elements have in common. Think of the function name as a good way to comment what this set of tags represents. > Source/WebCore/mathml/mathtags.in:11 > +mstyle interfaceName=MathMLElement I’d like to see test coverage for this. We have tests that check if elements get the right kind of wrapper, and we should cover this tag in that kind of test.
WebKit Commit Bot
Comment 3 2013-11-19 09:33:41 PST
Comment on attachment 217283 [details] Patch V1 Clearing flags on attachment: 217283 Committed r159504: <http://trac.webkit.org/changeset/159504>
WebKit Commit Bot
Comment 4 2013-11-19 09:33:43 PST
All reviewed patches have been landed. Closing bug.
Brent Fulgham
Comment 5 2013-11-19 09:41:37 PST
Frédéric: Would you mind posting a secondary patch to incorporate Darin's suggestions for improvements? We can reopen this bug to do so.
Frédéric Wang (:fredw)
Comment 6 2013-11-19 09:55:49 PST
OK, I will come back to this tomorrow. Regarding the first set, there should already test coverage for these attributes and test for dir is added here. Regarding the second set, new tests are added here for each element. However, perhaps I should add a test verifying that dir has no effect on other elements like e.g. msqrt.
Frédéric Wang (:fredw)
Comment 7 2013-11-20 02:43:45 PST
(In reply to comment #6) > I’d like to see test coverage for this. We have tests that check if elements get the right kind of wrapper, and we should cover this tag in that kind of test. Can you give me an example of such a test so that I can do that for mstyle?
Frédéric Wang (:fredw)
Comment 8 2013-11-20 03:31:23 PST
Created attachment 217415 [details] Follow up V1 > if (name == mathbackgroundAttr || name == mathsizeAttr || name == mathcolorAttr || name == fontsizeAttr || name == backgroundAttr || name == colorAttr || name == fontstyleAttr || name == fontweightAttr || name == fontfamilyAttr || name == dirAttr) These were tested by mathml/presentation/attributes-mathvariant, mathsize and background-color. The dir attribute is tested by the test added in the first patch. > if (hasTagName(mathTag) || hasTagName(mstyleTag) || hasTagName(mrowTag) || hasTagName(mtextTag) || hasTagName(msTag) || hasTagName(moTag) || hasTagName(miTag) || hasTagName(mnTag)) These are tested by the new tests, especially direction-overall and direction-token. I've added a test to direction-overall to check that the dir attribute is not applied to <msqrt>. > I’d like to see test coverage for this. We have tests that check if elements get the right kind of wrapper, and we should cover this tag in that kind of test. I have not done that yet.
Darin Adler
Comment 9 2013-11-20 09:32:11 PST
(In reply to comment #7) > (In reply to comment #6) > > I’d like to see test coverage for this. We have tests that check if elements get the right kind of wrapper, and we should cover this tag in that kind of test. > > Can you give me an example of such a test so that I can do that for mstyle? fast/dom/wrapper-classes.html
Frédéric Wang (:fredw)
Comment 10 2013-11-20 13:04:14 PST
Created attachment 217469 [details] Follow up V2 Mmm, MathML does not have a DOM so I'm not really sure I can access the exact class from Javascript. I tried something but it seems to just returns "Element".
Darin Adler
Comment 11 2013-11-20 20:13:35 PST
(In reply to comment #10) > Mmm, MathML does not have a DOM so I'm not really sure I can access the exact class from Javascript. I tried something but it seems to just returns "Element". I see. I did not know that. We’ll have to test this indirectly by checking for the different behavior caused by the internal DOM class, not by looking at wrappers at all.
Frédéric Wang (:fredw)
Comment 12 2013-11-21 03:14:33 PST
Created attachment 217541 [details] Follow up V3
Frédéric Wang (:fredw)
Comment 13 2013-11-21 03:16:19 PST
(In reply to comment #11) > I see. I did not know that. > > We’ll have to test this indirectly by checking for the different behavior caused by the internal DOM class, not by looking at wrappers at all. OK, I've removed that test. Although removing one of the presentation attribute would have broken the test for the token elements, there were nothing to check the presentation attributes on <mstyle> so I've added a test for that.
Frédéric Wang (:fredw)
Comment 14 2013-11-21 03:17:10 PST
Reopening per comment 5.
Darin Adler
Comment 15 2013-11-21 13:47:03 PST
(In reply to comment #5) > Frédéric: Would you mind posting a secondary patch to incorporate Darin's suggestions for improvements? We can reopen this bug to do so. Brent, why did you suggest reopening this bug? I thought the best practice for a case like this is to use a new bug report.
Brent Fulgham
Comment 16 2013-11-21 15:21:46 PST
(In reply to comment #15) > (In reply to comment #5) > > Frédéric: Would you mind posting a secondary patch to incorporate Darin's suggestions for improvements? We can reopen this bug to do so. > > Brent, why did you suggest reopening this bug? I thought the best practice for a case like this is to use a new bug report. I thought he just had a couple of small changes to incorporate some suggestions you had on his original patch. I thought it would be easier to track this in the same bug, rather than have multiple bugs (and possibly Radars) that track a small set of changes focused on the same topic. But in the future I'll have people leave the bug closed and open a new one.
Darin Adler
Comment 17 2013-11-21 20:14:14 PST
Comment on attachment 217541 [details] Follow up V3 View in context: https://bugs.webkit.org/attachment.cgi?id=217541&action=review > Source/WebCore/mathml/MathMLElement.cpp:128 > +bool MathMLElement::isMathMLToken() const > +{ > + return hasTagName(miTag) || hasTagName(mnTag) || hasTagName(moTag) || hasTagName(msTag) || hasTagName(mtextTag); > +} Are you sure this is actually getting inlined? In older compilers we had to put the function higher in the file than the call sites, and also mark it inline here, not just in the declaration.
WebKit Commit Bot
Comment 18 2013-11-21 21:01:04 PST
Comment on attachment 217541 [details] Follow up V3 Clearing flags on attachment: 217541 Committed r159680: <http://trac.webkit.org/changeset/159680>
WebKit Commit Bot
Comment 19 2013-11-21 21:01:08 PST
All reviewed patches have been landed. Closing bug.
Frédéric Wang (:fredw)
Comment 20 2014-03-10 12:26:20 PDT
Mass change: add WebExposed keyword to help MDN documentation.
Note You need to log in before you can comment on or make changes to this bug.