Make WordPress Core


Ignore:
Timestamp:
01/10/2024 02:03:57 PM (9 months ago)
Author:
dmsnell
Message:

HTML API: Add support for list elements.

Adds support for the following HTML elements to the HTML Processor:

  • LI, OL, UL.
  • DD, DL, DT.

Previously, these elements were not supported and the HTML Processor would bail when encountering them.
With this patch it will proceed to parse an HTML document when encountering those tags as long as other normal conditions don't cause it to bail (such as complicated format reconstruction).

Props audrasjb, jonsurrell, bernhard-reiter.
Fixes #60215.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/tests/phpunit/tests/html-api/wpHtmlProcessorBreadcrumbs.php

    r57248 r57264  
    3939            'A',
    4040            'ABBR',
    41             'ACRONYM', // Neutralized
     41            'ACRONYM', // Neutralized.
    4242            'ADDRESS',
    4343            'ARTICLE',
     
    4848            'BDO',
    4949            'BIG',
    50             'BLINK', // Deprecated
     50            'BLINK', // Deprecated.
    5151            'BUTTON',
    5252            'CANVAS',
    53             'CENTER', // Neutralized
     53            'CENTER', // Neutralized.
    5454            'CITE',
    5555            'CODE',
    5656            'DATA',
     57            'DD',
    5758            'DATALIST',
    5859            'DFN',
     
    6364            'DIV',
    6465            'DL',
     66            'DT',
    6567            'EM',
    6668            'FIELDSET',
     
    8082            'IMG',
    8183            'INS',
     84            'LI',
    8285            'ISINDEX', // Deprecated
    8386            'KBD',
     
    9295            'NAV',
    9396            'NEXTID', // Deprecated
     97            'OL',
    9498            'OUTPUT',
    9599            'P',
     
    113117            'TT',
    114118            'U',
     119            'UL',
    115120            'VAR',
    116121            'VIDEO',
     
    157162    public function data_unsupported_elements() {
    158163        $unsupported_elements = array(
    159             'APPLET', // Deprecated
     164            'APPLET', // Deprecated.
    160165            'AREA',
    161166            'BASE',
     
    166171            'COL',
    167172            'COLGROUP',
    168             'DD',
    169             'DT',
    170173            'EMBED',
    171174            'FORM',
     
    177180            'IFRAME',
    178181            'INPUT',
    179             'KEYGEN', // Deprecated; void
    180             'LI',
     182            'KEYGEN', // Deprecated; void.
    181183            'LINK',
    182184            'LISTING', // Deprecated, use PRE instead.
    183             'MARQUEE', // Deprecated
     185            'MARQUEE', // Deprecated.
    184186            'MATH',
    185187            'META',
    186             'NOBR', // Neutralized
    187             'NOEMBED', // Neutralized
    188             'NOFRAMES', // Neutralized
     188            'NOBR', // Neutralized.
     189            'NOEMBED', // Neutralized.
     190            'NOFRAMES', // Neutralized.
    189191            'NOSCRIPT',
    190192            'OBJECT',
    191             'OL',
    192193            'OPTGROUP',
    193194            'OPTION',
    194             'PLAINTEXT', // Neutralized
     195            'PLAINTEXT', // Neutralized.
    195196            'PRE',
    196             'RB', // Neutralized
     197            'RB', // Neutralized.
    197198            'RP',
    198199            'RT',
    199             'RTC', // Neutralized
     200            'RTC', // Neutralized.
    200201            'SCRIPT',
    201202            'SELECT',
     
    214215            'TR',
    215216            'TRACK',
    216             'UL',
    217217            'WBR',
    218218            'XMP', // Deprecated, use PRE instead.
     
    349349            'MAIN inside MAIN inside SPAN'          => array( '<span><main><main target>', array( 'HTML', 'BODY', 'SPAN', 'MAIN', 'MAIN' ), 1 ),
    350350            'MAIN next to unclosed P'               => array( '<p><main target>', array( 'HTML', 'BODY', 'MAIN' ), 1 ),
     351            'LI after unclosed LI'                  => array( '<li>one<li>two<li target>three', array( 'HTML', 'BODY', 'LI' ), 3 ),
     352            'LI in UL in LI'                        => array( '<ul><li>one<ul><li target>two', array( 'HTML', 'BODY', 'UL', 'LI', 'UL', 'LI' ), 1 ),
     353            'DD and DT mutually close, LI self-closes (dt 2)' => array( '<dd><dd><dt><dt target><dd><li><li>', array( 'HTML', 'BODY', 'DT' ), 2 ),
     354            'DD and DT mutually close, LI self-closes (dd 3)' => array( '<dd><dd><dt><dt><dd target><li><li>', array( 'HTML', 'BODY', 'DD' ), 3 ),
     355            'DD and DT mutually close, LI self-closes (li 1)' => array( '<dd><dd><dt><dt><dd><li target><li>', array( 'HTML', 'BODY', 'DD', 'LI' ), 1 ),
     356            'DD and DT mutually close, LI self-closes (li 2)' => array( '<dd><dd><dt><dt><dd><li><li target>', array( 'HTML', 'BODY', 'DD', 'LI' ), 2 ),
    351357
    352358            // H1 - H6 close out _any_ H1 - H6 when encountering _any_ of H1 - H6, making this section surprising.
Note: See TracChangeset for help on using the changeset viewer.