Changeset 206246 in webkit


Ignore:
Timestamp:
Sep 21, 2016 9:36:22 PM (8 years ago)
Author:
Chris Dumez
Message:

Fix serialization of bgsound, keygen and track elements
https://bugs.webkit.org/show_bug.cgi?id=162353

Reviewed by Darin Adler.

LayoutTests/imported/w3c:

Rebaseline W3C tests now that more checks are passing.

  • web-platform-tests/html/syntax/serializing-html-fragments/outerHTML-expected.txt:
  • web-platform-tests/html/syntax/serializing-html-fragments/serializing-expected.txt:
  • web-platform-tests/html/syntax/serializing-xml-fragments/outerHTML-expected.txt:

Source/WebCore:

Fix serialization of keygen and track elements to match the specification:

They are not supposed to have an end tag. Firefox and Chrome agree with
the specification.

No new tests, rebaselined existing tests.

  • editing/MarkupAccumulator.cpp:

(WebCore::MarkupAccumulator::elementCannotHaveEndTag):

Location:
trunk
Files:
2 added
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/imported/w3c/ChangeLog

    r206243 r206246  
     12016-09-21  Chris Dumez  <cdumez@apple.com>
     2
     3        Fix serialization of bgsound, keygen and track elements
     4        https://bugs.webkit.org/show_bug.cgi?id=162353
     5
     6        Reviewed by Darin Adler.
     7
     8        Rebaseline W3C tests now that more checks are passing.
     9
     10        * web-platform-tests/html/syntax/serializing-html-fragments/outerHTML-expected.txt:
     11        * web-platform-tests/html/syntax/serializing-html-fragments/serializing-expected.txt:
     12        * web-platform-tests/html/syntax/serializing-xml-fragments/outerHTML-expected.txt:
     13
    1142016-09-21  Chris Dumez  <cdumez@apple.com>
    215
  • trunk/LayoutTests/imported/w3c/web-platform-tests/html/syntax/serializing-html-fragments/outerHTML-expected.txt

    r206201 r206246  
    104104PASS Node for img
    105105PASS Node for input
    106 FAIL Node for keygen assert_equals: keygen node created. expected "<keygen>" but got "<keygen></keygen>"
     106PASS Node for keygen
    107107PASS Node for link
    108108PASS Node for meta
    109109PASS Node for param
    110110PASS Node for source
    111 FAIL Node for track assert_equals: track node created. expected "<track>" but got "<track></track>"
     111PASS Node for track
    112112PASS Node for wbr
    113113
  • trunk/LayoutTests/imported/w3c/web-platform-tests/html/syntax/serializing-html-fragments/serializing-expected.txt

    r206240 r206246  
    9393PASS innerHTML Void context node base
    9494PASS innerHTML Void context node basefont
    95 FAIL innerHTML Void context node bgsound assert_equals: expected "" but got "<a><!--abc--></a><b><c>abc</c></b>"
     95PASS innerHTML Void context node bgsound
    9696PASS innerHTML Void context node br
    9797PASS innerHTML Void context node col
     
    101101PASS innerHTML Void context node img
    102102PASS innerHTML Void context node input
    103 FAIL innerHTML Void context node keygen assert_equals: expected "" but got "<a><!--abc--></a><b><c>abc</c></b>"
     103PASS innerHTML Void context node keygen
    104104PASS innerHTML Void context node link
    105105FAIL innerHTML Void context node menuitem assert_equals: expected "" but got "<a><!--abc--></a><b><c>abc</c></b>"
     
    107107PASS innerHTML Void context node param
    108108PASS innerHTML Void context node source
    109 FAIL innerHTML Void context node track assert_equals: expected "" but got "<a><!--abc--></a><b><c>abc</c></b>"
     109PASS innerHTML Void context node track
    110110PASS innerHTML Void context node wbr
    111111FAIL innerHTML void as first child with following siblings area assert_equals: expected "<area><a>test</a><b></b>" but got "<area></area><a>test</a><b></b>"
    112112FAIL innerHTML void as first child with following siblings base assert_equals: expected "<base><a>test</a><b></b>" but got "<base></base><a>test</a><b></b>"
    113113FAIL innerHTML void as first child with following siblings basefont assert_equals: expected "<basefont><a>test</a><b></b>" but got "<basefont></basefont><a>test</a><b></b>"
    114 FAIL innerHTML void as first child with following siblings bgsound assert_equals: expected "<bgsound><a>test</a><b></b>" but got "<bgsound><a><!--abc--></a><b><c>abc</c></b></bgsound><a>test</a><b></b>"
     114FAIL innerHTML void as first child with following siblings bgsound assert_equals: expected "<bgsound><a>test</a><b></b>" but got "<bgsound></bgsound><a>test</a><b></b>"
    115115FAIL innerHTML void as first child with following siblings br assert_equals: expected "<br><a>test</a><b></b>" but got "<br></br><a>test</a><b></b>"
    116116FAIL innerHTML void as first child with following siblings col assert_equals: expected "<col><a>test</a><b></b>" but got "<col></col><a>test</a><b></b>"
     
    120120FAIL innerHTML void as first child with following siblings img assert_equals: expected "<img><a>test</a><b></b>" but got "<img></img><a>test</a><b></b>"
    121121FAIL innerHTML void as first child with following siblings input assert_equals: expected "<input><a>test</a><b></b>" but got "<input></input><a>test</a><b></b>"
    122 FAIL innerHTML void as first child with following siblings keygen assert_equals: expected "<keygen><a>test</a><b></b>" but got "<keygen><a><!--abc--></a><b><c>abc</c></b></keygen><a>test</a><b></b>"
     122FAIL innerHTML void as first child with following siblings keygen assert_equals: expected "<keygen><a>test</a><b></b>" but got "<keygen></keygen><a>test</a><b></b>"
    123123FAIL innerHTML void as first child with following siblings link assert_equals: expected "<link><a>test</a><b></b>" but got "<link></link><a>test</a><b></b>"
    124124FAIL innerHTML void as first child with following siblings menuitem assert_equals: expected "<menuitem><a>test</a><b></b>" but got "<menuitem><a><!--abc--></a><b><c>abc</c></b></menuitem><a>test</a><b></b>"
     
    126126FAIL innerHTML void as first child with following siblings param assert_equals: expected "<param><a>test</a><b></b>" but got "<param></param><a>test</a><b></b>"
    127127FAIL innerHTML void as first child with following siblings source assert_equals: expected "<source><a>test</a><b></b>" but got "<source></source><a>test</a><b></b>"
    128 FAIL innerHTML void as first child with following siblings track assert_equals: expected "<track><a>test</a><b></b>" but got "<track><a><!--abc--></a><b><c>abc</c></b></track><a>test</a><b></b>"
     128FAIL innerHTML void as first child with following siblings track assert_equals: expected "<track><a>test</a><b></b>" but got "<track></track><a>test</a><b></b>"
    129129FAIL innerHTML void as first child with following siblings wbr assert_equals: expected "<wbr><a>test</a><b></b>" but got "<wbr></wbr><a>test</a><b></b>"
    130130FAIL innerHTML void as second child with following siblings area assert_equals: expected "<a>test</a><area><b></b>" but got "<a>test</a><area></area><b></b>"
    131131FAIL innerHTML void as second child with following siblings base assert_equals: expected "<a>test</a><base><b></b>" but got "<a>test</a><base></base><b></b>"
    132132FAIL innerHTML void as second child with following siblings basefont assert_equals: expected "<a>test</a><basefont><b></b>" but got "<a>test</a><basefont></basefont><b></b>"
    133 FAIL innerHTML void as second child with following siblings bgsound assert_equals: expected "<a>test</a><bgsound><b></b>" but got "<a>test</a><bgsound><a><!--abc--></a><b><c>abc</c></b></bgsound><b></b>"
     133FAIL innerHTML void as second child with following siblings bgsound assert_equals: expected "<a>test</a><bgsound><b></b>" but got "<a>test</a><bgsound></bgsound><b></b>"
    134134FAIL innerHTML void as second child with following siblings br assert_equals: expected "<a>test</a><br><b></b>" but got "<a>test</a><br></br><b></b>"
    135135FAIL innerHTML void as second child with following siblings col assert_equals: expected "<a>test</a><col><b></b>" but got "<a>test</a><col></col><b></b>"
     
    139139FAIL innerHTML void as second child with following siblings img assert_equals: expected "<a>test</a><img><b></b>" but got "<a>test</a><img></img><b></b>"
    140140FAIL innerHTML void as second child with following siblings input assert_equals: expected "<a>test</a><input><b></b>" but got "<a>test</a><input></input><b></b>"
    141 FAIL innerHTML void as second child with following siblings keygen assert_equals: expected "<a>test</a><keygen><b></b>" but got "<a>test</a><keygen><a><!--abc--></a><b><c>abc</c></b></keygen><b></b>"
     141FAIL innerHTML void as second child with following siblings keygen assert_equals: expected "<a>test</a><keygen><b></b>" but got "<a>test</a><keygen></keygen><b></b>"
    142142FAIL innerHTML void as second child with following siblings link assert_equals: expected "<a>test</a><link><b></b>" but got "<a>test</a><link></link><b></b>"
    143143FAIL innerHTML void as second child with following siblings menuitem assert_equals: expected "<a>test</a><menuitem><b></b>" but got "<a>test</a><menuitem><a><!--abc--></a><b><c>abc</c></b></menuitem><b></b>"
     
    145145FAIL innerHTML void as second child with following siblings param assert_equals: expected "<a>test</a><param><b></b>" but got "<a>test</a><param></param><b></b>"
    146146FAIL innerHTML void as second child with following siblings source assert_equals: expected "<a>test</a><source><b></b>" but got "<a>test</a><source></source><b></b>"
    147 FAIL innerHTML void as second child with following siblings track assert_equals: expected "<a>test</a><track><b></b>" but got "<a>test</a><track><a><!--abc--></a><b><c>abc</c></b></track><b></b>"
     147FAIL innerHTML void as second child with following siblings track assert_equals: expected "<a>test</a><track><b></b>" but got "<a>test</a><track></track><b></b>"
    148148FAIL innerHTML void as second child with following siblings wbr assert_equals: expected "<a>test</a><wbr><b></b>" but got "<a>test</a><wbr></wbr><b></b>"
    149149FAIL innerHTML void as last child with preceding siblings area assert_equals: expected "<a>test</a><b></b><area>" but got "<a>test</a><b></b><area></area>"
    150150FAIL innerHTML void as last child with preceding siblings base assert_equals: expected "<a>test</a><b></b><base>" but got "<a>test</a><b></b><base></base>"
    151151FAIL innerHTML void as last child with preceding siblings basefont assert_equals: expected "<a>test</a><b></b><basefont>" but got "<a>test</a><b></b><basefont></basefont>"
    152 FAIL innerHTML void as last child with preceding siblings bgsound assert_equals: expected "<a>test</a><b></b><bgsound>" but got "<a>test</a><b></b><bgsound><a><!--abc--></a><b><c>abc</c></b></bgsound>"
     152FAIL innerHTML void as last child with preceding siblings bgsound assert_equals: expected "<a>test</a><b></b><bgsound>" but got "<a>test</a><b></b><bgsound></bgsound>"
    153153FAIL innerHTML void as last child with preceding siblings br assert_equals: expected "<a>test</a><b></b><br>" but got "<a>test</a><b></b><br></br>"
    154154FAIL innerHTML void as last child with preceding siblings col assert_equals: expected "<a>test</a><b></b><col>" but got "<a>test</a><b></b><col></col>"
     
    158158FAIL innerHTML void as last child with preceding siblings img assert_equals: expected "<a>test</a><b></b><img>" but got "<a>test</a><b></b><img></img>"
    159159FAIL innerHTML void as last child with preceding siblings input assert_equals: expected "<a>test</a><b></b><input>" but got "<a>test</a><b></b><input></input>"
    160 FAIL innerHTML void as last child with preceding siblings keygen assert_equals: expected "<a>test</a><b></b><keygen>" but got "<a>test</a><b></b><keygen><a><!--abc--></a><b><c>abc</c></b></keygen>"
     160FAIL innerHTML void as last child with preceding siblings keygen assert_equals: expected "<a>test</a><b></b><keygen>" but got "<a>test</a><b></b><keygen></keygen>"
    161161FAIL innerHTML void as last child with preceding siblings link assert_equals: expected "<a>test</a><b></b><link>" but got "<a>test</a><b></b><link></link>"
    162162FAIL innerHTML void as last child with preceding siblings menuitem assert_equals: expected "<a>test</a><b></b><menuitem>" but got "<a>test</a><b></b><menuitem><a><!--abc--></a><b><c>abc</c></b></menuitem>"
     
    164164FAIL innerHTML void as last child with preceding siblings param assert_equals: expected "<a>test</a><b></b><param>" but got "<a>test</a><b></b><param></param>"
    165165FAIL innerHTML void as last child with preceding siblings source assert_equals: expected "<a>test</a><b></b><source>" but got "<a>test</a><b></b><source></source>"
    166 FAIL innerHTML void as last child with preceding siblings track assert_equals: expected "<a>test</a><b></b><track>" but got "<a>test</a><b></b><track><a><!--abc--></a><b><c>abc</c></b></track>"
     166FAIL innerHTML void as last child with preceding siblings track assert_equals: expected "<a>test</a><b></b><track>" but got "<a>test</a><b></b><track></track>"
    167167FAIL innerHTML void as last child with preceding siblings wbr assert_equals: expected "<a>test</a><b></b><wbr>" but got "<a>test</a><b></b><wbr></wbr>"
    168168FAIL outerHTML Void context node area assert_equals: expected "<area>" but got "<area></area>"
    169169FAIL outerHTML Void context node base assert_equals: expected "<base>" but got "<base></base>"
    170170FAIL outerHTML Void context node basefont assert_equals: expected "<basefont>" but got "<basefont></basefont>"
    171 FAIL outerHTML Void context node bgsound assert_equals: expected "<bgsound>" but got "<bgsound><a><!--abc--></a><b><c>abc</c></b></bgsound>"
     171FAIL outerHTML Void context node bgsound assert_equals: expected "<bgsound>" but got "<bgsound></bgsound>"
    172172FAIL outerHTML Void context node br assert_equals: expected "<br>" but got "<br></br>"
    173173FAIL outerHTML Void context node col assert_equals: expected "<col>" but got "<col></col>"
     
    177177FAIL outerHTML Void context node img assert_equals: expected "<img>" but got "<img></img>"
    178178FAIL outerHTML Void context node input assert_equals: expected "<input>" but got "<input></input>"
    179 FAIL outerHTML Void context node keygen assert_equals: expected "<keygen>" but got "<keygen><a><!--abc--></a><b><c>abc</c></b></keygen>"
     179FAIL outerHTML Void context node keygen assert_equals: expected "<keygen>" but got "<keygen></keygen>"
    180180FAIL outerHTML Void context node link assert_equals: expected "<link>" but got "<link></link>"
    181181FAIL outerHTML Void context node menuitem assert_equals: expected "<menuitem>" but got "<menuitem><a><!--abc--></a><b><c>abc</c></b></menuitem>"
     
    183183FAIL outerHTML Void context node param assert_equals: expected "<param>" but got "<param></param>"
    184184FAIL outerHTML Void context node source assert_equals: expected "<source>" but got "<source></source>"
    185 FAIL outerHTML Void context node track assert_equals: expected "<track>" but got "<track><a><!--abc--></a><b><c>abc</c></b></track>"
     185FAIL outerHTML Void context node track assert_equals: expected "<track>" but got "<track></track>"
    186186FAIL outerHTML Void context node wbr assert_equals: expected "<wbr>" but got "<wbr></wbr>"
    187187FAIL outerHTML void as first child with following siblings area assert_equals: expected "<span><area><a>test</a><b></b></span>" but got "<span><area></area><a>test</a><b></b></span>"
    188188FAIL outerHTML void as first child with following siblings base assert_equals: expected "<span><base><a>test</a><b></b></span>" but got "<span><base></base><a>test</a><b></b></span>"
    189189FAIL outerHTML void as first child with following siblings basefont assert_equals: expected "<span><basefont><a>test</a><b></b></span>" but got "<span><basefont></basefont><a>test</a><b></b></span>"
    190 FAIL outerHTML void as first child with following siblings bgsound assert_equals: expected "<span><bgsound><a>test</a><b></b></span>" but got "<span><bgsound><a><!--abc--></a><b><c>abc</c></b></bgsound><a>test</a><b></b></span>"
     190FAIL outerHTML void as first child with following siblings bgsound assert_equals: expected "<span><bgsound><a>test</a><b></b></span>" but got "<span><bgsound></bgsound><a>test</a><b></b></span>"
    191191FAIL outerHTML void as first child with following siblings br assert_equals: expected "<span><br><a>test</a><b></b></span>" but got "<span><br></br><a>test</a><b></b></span>"
    192192FAIL outerHTML void as first child with following siblings col assert_equals: expected "<span><col><a>test</a><b></b></span>" but got "<span><col></col><a>test</a><b></b></span>"
     
    196196FAIL outerHTML void as first child with following siblings img assert_equals: expected "<span><img><a>test</a><b></b></span>" but got "<span><img></img><a>test</a><b></b></span>"
    197197FAIL outerHTML void as first child with following siblings input assert_equals: expected "<span><input><a>test</a><b></b></span>" but got "<span><input></input><a>test</a><b></b></span>"
    198 FAIL outerHTML void as first child with following siblings keygen assert_equals: expected "<span><keygen><a>test</a><b></b></span>" but got "<span><keygen><a><!--abc--></a><b><c>abc</c></b></keygen><a>test</a><b></b></span>"
     198FAIL outerHTML void as first child with following siblings keygen assert_equals: expected "<span><keygen><a>test</a><b></b></span>" but got "<span><keygen></keygen><a>test</a><b></b></span>"
    199199FAIL outerHTML void as first child with following siblings link assert_equals: expected "<span><link><a>test</a><b></b></span>" but got "<span><link></link><a>test</a><b></b></span>"
    200200FAIL outerHTML void as first child with following siblings menuitem assert_equals: expected "<span><menuitem><a>test</a><b></b></span>" but got "<span><menuitem><a><!--abc--></a><b><c>abc</c></b></menuitem><a>test</a><b></b></span>"
     
    202202FAIL outerHTML void as first child with following siblings param assert_equals: expected "<span><param><a>test</a><b></b></span>" but got "<span><param></param><a>test</a><b></b></span>"
    203203FAIL outerHTML void as first child with following siblings source assert_equals: expected "<span><source><a>test</a><b></b></span>" but got "<span><source></source><a>test</a><b></b></span>"
    204 FAIL outerHTML void as first child with following siblings track assert_equals: expected "<span><track><a>test</a><b></b></span>" but got "<span><track><a><!--abc--></a><b><c>abc</c></b></track><a>test</a><b></b></span>"
     204FAIL outerHTML void as first child with following siblings track assert_equals: expected "<span><track><a>test</a><b></b></span>" but got "<span><track></track><a>test</a><b></b></span>"
    205205FAIL outerHTML void as first child with following siblings wbr assert_equals: expected "<span><wbr><a>test</a><b></b></span>" but got "<span><wbr></wbr><a>test</a><b></b></span>"
    206206FAIL outerHTML void as second child with following siblings area assert_equals: expected "<span><a>test</a><area><b></b></span>" but got "<span><a>test</a><area></area><b></b></span>"
    207207FAIL outerHTML void as second child with following siblings base assert_equals: expected "<span><a>test</a><base><b></b></span>" but got "<span><a>test</a><base></base><b></b></span>"
    208208FAIL outerHTML void as second child with following siblings basefont assert_equals: expected "<span><a>test</a><basefont><b></b></span>" but got "<span><a>test</a><basefont></basefont><b></b></span>"
    209 FAIL outerHTML void as second child with following siblings bgsound assert_equals: expected "<span><a>test</a><bgsound><b></b></span>" but got "<span><a>test</a><bgsound><a><!--abc--></a><b><c>abc</c></b></bgsound><b></b></span>"
     209FAIL outerHTML void as second child with following siblings bgsound assert_equals: expected "<span><a>test</a><bgsound><b></b></span>" but got "<span><a>test</a><bgsound></bgsound><b></b></span>"
    210210FAIL outerHTML void as second child with following siblings br assert_equals: expected "<span><a>test</a><br><b></b></span>" but got "<span><a>test</a><br></br><b></b></span>"
    211211FAIL outerHTML void as second child with following siblings col assert_equals: expected "<span><a>test</a><col><b></b></span>" but got "<span><a>test</a><col></col><b></b></span>"
     
    215215FAIL outerHTML void as second child with following siblings img assert_equals: expected "<span><a>test</a><img><b></b></span>" but got "<span><a>test</a><img></img><b></b></span>"
    216216FAIL outerHTML void as second child with following siblings input assert_equals: expected "<span><a>test</a><input><b></b></span>" but got "<span><a>test</a><input></input><b></b></span>"
    217 FAIL outerHTML void as second child with following siblings keygen assert_equals: expected "<span><a>test</a><keygen><b></b></span>" but got "<span><a>test</a><keygen><a><!--abc--></a><b><c>abc</c></b></keygen><b></b></span>"
     217FAIL outerHTML void as second child with following siblings keygen assert_equals: expected "<span><a>test</a><keygen><b></b></span>" but got "<span><a>test</a><keygen></keygen><b></b></span>"
    218218FAIL outerHTML void as second child with following siblings link assert_equals: expected "<span><a>test</a><link><b></b></span>" but got "<span><a>test</a><link></link><b></b></span>"
    219219FAIL outerHTML void as second child with following siblings menuitem assert_equals: expected "<span><a>test</a><menuitem><b></b></span>" but got "<span><a>test</a><menuitem><a><!--abc--></a><b><c>abc</c></b></menuitem><b></b></span>"
     
    221221FAIL outerHTML void as second child with following siblings param assert_equals: expected "<span><a>test</a><param><b></b></span>" but got "<span><a>test</a><param></param><b></b></span>"
    222222FAIL outerHTML void as second child with following siblings source assert_equals: expected "<span><a>test</a><source><b></b></span>" but got "<span><a>test</a><source></source><b></b></span>"
    223 FAIL outerHTML void as second child with following siblings track assert_equals: expected "<span><a>test</a><track><b></b></span>" but got "<span><a>test</a><track><a><!--abc--></a><b><c>abc</c></b></track><b></b></span>"
     223FAIL outerHTML void as second child with following siblings track assert_equals: expected "<span><a>test</a><track><b></b></span>" but got "<span><a>test</a><track></track><b></b></span>"
    224224FAIL outerHTML void as second child with following siblings wbr assert_equals: expected "<span><a>test</a><wbr><b></b></span>" but got "<span><a>test</a><wbr></wbr><b></b></span>"
    225225FAIL outerHTML void as last child with preceding siblings area assert_equals: expected "<span><a>test</a><b></b><area></span>" but got "<span><a>test</a><b></b><area></area></span>"
    226226FAIL outerHTML void as last child with preceding siblings base assert_equals: expected "<span><a>test</a><b></b><base></span>" but got "<span><a>test</a><b></b><base></base></span>"
    227227FAIL outerHTML void as last child with preceding siblings basefont assert_equals: expected "<span><a>test</a><b></b><basefont></span>" but got "<span><a>test</a><b></b><basefont></basefont></span>"
    228 FAIL outerHTML void as last child with preceding siblings bgsound assert_equals: expected "<span><a>test</a><b></b><bgsound></span>" but got "<span><a>test</a><b></b><bgsound><a><!--abc--></a><b><c>abc</c></b></bgsound></span>"
     228FAIL outerHTML void as last child with preceding siblings bgsound assert_equals: expected "<span><a>test</a><b></b><bgsound></span>" but got "<span><a>test</a><b></b><bgsound></bgsound></span>"
    229229FAIL outerHTML void as last child with preceding siblings br assert_equals: expected "<span><a>test</a><b></b><br></span>" but got "<span><a>test</a><b></b><br></br></span>"
    230230FAIL outerHTML void as last child with preceding siblings col assert_equals: expected "<span><a>test</a><b></b><col></span>" but got "<span><a>test</a><b></b><col></col></span>"
     
    234234FAIL outerHTML void as last child with preceding siblings img assert_equals: expected "<span><a>test</a><b></b><img></span>" but got "<span><a>test</a><b></b><img></img></span>"
    235235FAIL outerHTML void as last child with preceding siblings input assert_equals: expected "<span><a>test</a><b></b><input></span>" but got "<span><a>test</a><b></b><input></input></span>"
    236 FAIL outerHTML void as last child with preceding siblings keygen assert_equals: expected "<span><a>test</a><b></b><keygen></span>" but got "<span><a>test</a><b></b><keygen><a><!--abc--></a><b><c>abc</c></b></keygen></span>"
     236FAIL outerHTML void as last child with preceding siblings keygen assert_equals: expected "<span><a>test</a><b></b><keygen></span>" but got "<span><a>test</a><b></b><keygen></keygen></span>"
    237237FAIL outerHTML void as last child with preceding siblings link assert_equals: expected "<span><a>test</a><b></b><link></span>" but got "<span><a>test</a><b></b><link></link></span>"
    238238FAIL outerHTML void as last child with preceding siblings menuitem assert_equals: expected "<span><a>test</a><b></b><menuitem></span>" but got "<span><a>test</a><b></b><menuitem><a><!--abc--></a><b><c>abc</c></b></menuitem></span>"
     
    240240FAIL outerHTML void as last child with preceding siblings param assert_equals: expected "<span><a>test</a><b></b><param></span>" but got "<span><a>test</a><b></b><param></param></span>"
    241241FAIL outerHTML void as last child with preceding siblings source assert_equals: expected "<span><a>test</a><b></b><source></span>" but got "<span><a>test</a><b></b><source></source></span>"
    242 FAIL outerHTML void as last child with preceding siblings track assert_equals: expected "<span><a>test</a><b></b><track></span>" but got "<span><a>test</a><b></b><track><a><!--abc--></a><b><c>abc</c></b></track></span>"
     242FAIL outerHTML void as last child with preceding siblings track assert_equals: expected "<span><a>test</a><b></b><track></span>" but got "<span><a>test</a><b></b><track></track></span>"
    243243FAIL outerHTML void as last child with preceding siblings wbr assert_equals: expected "<span><a>test</a><b></b><wbr></span>" but got "<span><a>test</a><b></b><wbr></wbr></span>"
    244244
  • trunk/LayoutTests/imported/w3c/web-platform-tests/html/syntax/serializing-xml-fragments/outerHTML-expected.txt

    r206201 r206246  
    104104PASS Node for img
    105105PASS Node for input
    106 FAIL Node for keygen assert_equals: keygen node created. expected "<keygen xmlns=\"http://www.w3.org/1999/xhtml\" />" but got "<keygen xmlns=\"http://www.w3.org/1999/xhtml\"></keygen>"
     106PASS Node for keygen
    107107PASS Node for link
    108108PASS Node for meta
    109109PASS Node for param
    110110PASS Node for source
    111 FAIL Node for track assert_equals: track node created. expected "<track xmlns=\"http://www.w3.org/1999/xhtml\" />" but got "<track xmlns=\"http://www.w3.org/1999/xhtml\"></track>"
     111PASS Node for track
    112112PASS Node for wbr
    113113
  • trunk/Source/WebCore/ChangeLog

    r206245 r206246  
     12016-09-21  Chris Dumez  <cdumez@apple.com>
     2
     3        Fix serialization of bgsound, keygen and track elements
     4        https://bugs.webkit.org/show_bug.cgi?id=162353
     5
     6        Reviewed by Darin Adler.
     7
     8        Fix serialization of keygen and track elements to match the specification:
     9        - https://html.spec.whatwg.org/#serialising-html-fragments
     10
     11        They are not supposed to have an end tag. Firefox and Chrome agree with
     12        the specification.
     13
     14        No new tests, rebaselined existing tests.
     15
     16        * editing/MarkupAccumulator.cpp:
     17        (WebCore::MarkupAccumulator::elementCannotHaveEndTag):
     18
    1192016-09-21  Keith Miller  <keith_miller@apple.com>
    220
  • trunk/Source/WebCore/editing/MarkupAccumulator.cpp

    r204114 r206246  
    591591        return false;
    592592
    593     // FIXME: ieForbidsInsertHTML may not be the right function to call here
    594     // ieForbidsInsertHTML is used to disallow setting innerHTML/outerHTML
    595     // or createContextualFragment.  It does not necessarily align with
    596     // which elements should be serialized w/o end tags.
    597     return downcast<HTMLElement>(node).ieForbidsInsertHTML();
     593    // From https://html.spec.whatwg.org/#serialising-html-fragments:
     594    // If current node is an area, base, basefont, bgsound, br, col, embed, frame, hr, img,
     595    // input, keygen, link, meta, param, source, track or wbr element, then continue on to
     596    // the next child node at this point.
     597    static const HTMLQualifiedName* tags[] = { &areaTag, &baseTag, &basefontTag, &bgsoundTag, &brTag, &colTag, &embedTag,
     598        &frameTag, &hrTag, &imgTag, &inputTag, &keygenTag, &linkTag, &metaTag, &paramTag, &sourceTag, &trackTag, &wbrTag };
     599    auto& element = downcast<HTMLElement>(node);
     600    for (auto* tag : tags) {
     601        if (element.hasTagName(*tag))
     602            return true;
     603    }
     604    return false;
    598605}
    599606
Note: See TracChangeset for help on using the changeset viewer.