WordPress/wp-includes
Bernhard Reiter 44629e6286 HTML-API: Introduce minimal HTML Processor.
This patch introduces the //first// of //many// iterations on the evolution of the HTML API, the HTML Processor, which is built in order to understand HTML structure including nesting, misnesting, and complicated semantic rules.

In the first iteration, the HTML Processor is arbitrarily limited to a minimal subset of functionality so that we can review it, ship it, test it, and collect feedback before moving forward. This means that this patch is more or less an extension to the Tag Processor query language, providing the ability not only to scan for a tag of a given name, but also to find an HTML element in a specific nesting path.

The HTML Processor also aborts any time it encounters:
 - a tag that isn't a `P`, `DIV`, `FIGURE`, `FIGCAPTION`, `IMG`, `STRONG`, `B`, `EM`, `I`, `A`, `BIG`, `CODE`, `FONT`, `SMALL`, `STRIKE`, `TT`, or `U` tag. this limit exists because many HTML elements require specific rules and we are trying to limit the number of rules introduced at once. this work is targeted at existing work in places like the image block.
 - certain misnesting constructs that evoke complicated resolution inside the HTML spec. where possible and where simple to do reliably, certain parse errors are handled. in most cases the HTML Processor aborts.

The structure of the HTML Processor is established in this patch. Further spec-compliance comes through filling out //more of the same// kind and nature of code as is found in this patch. Certain critical HTML algorithms are partially supported, and where support requires more than is present, the HTML Processor acknowledges this and refuses to operate.

In this patch are explorations for how to verify that new HTML support is fully added (instead of allowing for partial updates that leave some code paths non-compliant). Performance is hard to measure since support is so limited at the current time, but it should generally follow the performance of the Tag Processor somewhat close as the overhead is minimized as much as practical.

Props dmsnell, zieladam, costdev.
Fixes #58517.
Built from https://develop.svn.wordpress.org/trunk@56274


git-svn-id: http://core.svn.wordpress.org/trunk@55786 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2023-07-20 13:43:25 +00:00
..
assets Editor: update npm packages with second round of bug fixes for 6.3 RC1. 2023-07-18 07:20:48 +00:00
block-patterns
block-supports Editor: Lazily load Duotone settings only when needed. 2023-07-13 11:34:28 +00:00
blocks Editor: update npm packages with second round of bug fixes for 6.3 RC1. 2023-07-18 07:20:48 +00:00
certificates
css Editor: update npm packages with second round of bug fixes for 6.3 RC1. 2023-07-18 07:20:48 +00:00
customize Docs: Replace multiple single line comments with multi-line comments. 2023-07-10 23:00:22 +00:00
fonts
html-api HTML-API: Introduce minimal HTML Processor. 2023-07-20 13:43:25 +00:00
ID3
images
IXR
js Editor: update npm packages with second round of bug fixes for 6.3 RC1. 2023-07-18 07:20:48 +00:00
php-compat
PHPMailer
pomo Code Modernization: Replace usage of substr() with str_starts_with() and str_ends_with(). 2023-06-22 14:57:24 +00:00
Requests
rest-api Docs: Fix indentation issue in WP_REST_Global_Styles_Revisions_Controller class. 2023-07-19 22:53:23 +00:00
SimplePie
sitemaps Docs: Replace multiple single line comments with multi-line comments. 2023-07-10 23:19:23 +00:00
sodium_compat
style-engine Editor: add box shadow support to blocks. 2023-06-26 23:44:29 +00:00
Text
theme-compat General: Replace some instances of "blog" with "site" in documentation, translator comments, and user-facing text strings. 2023-06-19 18:27:27 +00:00
widgets Docs: Replace multiple single line comments with multi-line comments. 2023-07-10 23:21:22 +00:00
admin-bar.php Help/About: Add a “Get Involved” tab to the About page. 2023-07-12 12:54:24 +00:00
atomlib.php
author-template.php
block-editor.php Editor: add iframe around post editor. 2023-06-27 00:23:23 +00:00
block-i18n.json
block-patterns.php Editor: allow filtering block patterns by source. 2023-06-27 11:13:27 +00:00
block-template-utils.php Editor: fix typos in templates info. 2023-07-14 05:18:22 +00:00
block-template.php Toolbar: Make the 'Edit site' link open the editor with the current template. 2023-07-11 11:33:27 +00:00
blocks.php Editor: trim footnote anchors from post excerpts. 2023-07-17 01:47:26 +00:00
bookmark-template.php Code Modernization: Replace usage of substr() with str_starts_with() and str_ends_with(). 2023-06-22 14:57:24 +00:00
bookmark.php Docs: Replace multiple single line comments with multi-line comments. 2023-07-09 20:17:29 +00:00
cache-compat.php
cache.php
canonical.php Code Modernization: Use str_contains() in a few more places. 2023-07-17 13:18:27 +00:00
capabilities.php Docs: Replace multiple single line comments with multi-line comments. 2023-07-09 20:17:29 +00:00
category-template.php
category.php Coding Standards: Use strict comparison in wp-includes/category.php. 2023-06-05 11:16:18 +00:00
class-feed.php
class-http.php
class-IXR.php
class-json.php
class-oembed.php
class-phpass.php
class-phpmailer.php
class-pop3.php
class-requests.php
class-simplepie.php
class-smtp.php
class-snoopy.php
class-walker-category-dropdown.php
class-walker-category.php Coding Standards: Use strict comparison in wp-includes/class-walker-category.php. 2023-06-06 00:30:20 +00:00
class-walker-comment.php
class-walker-nav-menu.php Menus: Allow themes and plugins to pass HTML attributes to various Nav Walker outputs. 2023-06-27 15:26:27 +00:00
class-walker-page-dropdown.php Coding Standards: Use strict comparison in wp-includes/class-walker-page-dropdown.php. 2023-06-11 09:27:18 +00:00
class-walker-page.php Coding Standards: Use strict comparison in wp-includes/class-walker-page.php. 2023-06-12 06:12:24 +00:00
class-wp-admin-bar.php Docs: Replace multiple single line comments with multi-line comments. 2023-07-09 20:17:29 +00:00
class-wp-ajax-response.php
class-wp-application-passwords.php
class-wp-block-editor-context.php
class-wp-block-list.php
class-wp-block-parser-block.php Editor: Update block-serialization-default-parser package for WP 6.3 Beta 1. 2023-06-27 00:45:38 +00:00
class-wp-block-parser-frame.php Editor: Update block-serialization-default-parser package for WP 6.3 Beta 1. 2023-06-27 00:45:38 +00:00
class-wp-block-parser.php Editor: Update block-serialization-default-parser package for WP 6.3 Beta 1. 2023-06-27 00:45:38 +00:00
class-wp-block-pattern-categories-registry.php
class-wp-block-patterns-registry.php
class-wp-block-styles-registry.php
class-wp-block-supports.php
class-wp-block-template.php REST API: return post modified datetime for Templates. 2023-06-23 06:29:23 +00:00
class-wp-block-type-registry.php
class-wp-block-type.php
class-wp-block.php
class-wp-classic-to-block-menu-converter.php Docs: Various docblocks corrections. 2023-07-18 07:37:21 +00:00
class-wp-comment-query.php Code Modernization: Replace usage of strpos() with str_contains(). 2023-06-22 14:36:26 +00:00
class-wp-comment.php
class-wp-customize-control.php Docs: Replace multiple single line comments with multi-line comments. 2023-07-09 20:17:29 +00:00
class-wp-customize-manager.php Docs: Replace multiple single line comments with multi-line comments. 2023-07-09 20:17:29 +00:00
class-wp-customize-nav-menus.php Code Modernization: Replace usage of substr() with str_starts_with() and str_ends_with(). 2023-06-22 14:57:24 +00:00
class-wp-customize-panel.php
class-wp-customize-section.php
class-wp-customize-setting.php
class-wp-customize-widgets.php
class-wp-date-query.php Code Modernization: Replace usage of strpos() with str_contains(). 2023-06-22 14:36:26 +00:00
class-wp-dependencies.php
class-wp-dependency.php
class-wp-duotone.php Editor: Lazily load Duotone settings only when needed. 2023-07-13 11:34:28 +00:00
class-wp-editor.php Editir: Fix open_basedir warnings on the classic Edit Post screen when additional TinyMCE plugins are used. 2023-07-14 20:59:26 +00:00
class-wp-embed.php Docs: Replace multiple single line comments with multi-line comments. 2023-07-09 20:17:29 +00:00
class-wp-error.php
class-wp-fatal-error-handler.php
class-wp-feed-cache-transient.php
class-wp-feed-cache.php Code Modernization: Add AllowDynamicProperties attribute to all (parent) classes. 2022-09-12 15:47:14 +00:00
class-wp-hook.php
class-wp-http-cookie.php Code Modernization: Use str_starts_with() and str_ends_with() in a few more places. 2023-06-24 17:17:23 +00:00
class-wp-http-curl.php HTTP API: Declare a few default parameters in WP_Http_Curl and WP_Http_Streams. 2023-07-03 14:03:29 +00:00
class-wp-http-encoding.php Code Modernization: Replace usage of substr() with str_starts_with() and str_ends_with(). 2023-06-22 14:57:24 +00:00
class-wp-http-ixr-client.php
class-wp-http-proxy.php Code Modernization: Replace usage of strpos() with str_contains(). 2023-06-22 14:36:26 +00:00
class-wp-http-requests-hooks.php
class-wp-http-requests-response.php
class-wp-http-response.php
class-wp-http-streams.php HTTP API: Declare a few default parameters in WP_Http_Curl and WP_Http_Streams. 2023-07-03 14:03:29 +00:00
class-wp-http.php Code Modernization: Replace usage of strpos() with str_contains(). 2023-06-22 14:36:26 +00:00
class-wp-image-editor-gd.php Docs: Fix incorrect type for $crop param is various WP_Image_Editor classes and methods. 2023-07-11 06:31:22 +00:00
class-wp-image-editor-imagick.php Media: Adjust PDF upload handling to remove non-opaque alpha channels from previews. 2023-07-19 22:35:27 +00:00
class-wp-image-editor.php Docs: Fix incorrect type for $crop param is various WP_Image_Editor classes and methods. 2023-07-11 06:31:22 +00:00
class-wp-list-util.php General: Revert strict comparison in WP_List_Util for now. 2023-07-05 11:15:22 +00:00
class-wp-locale-switcher.php Docs: Replace multiple single line comments with multi-line comments. 2023-07-09 21:25:23 +00:00
class-wp-locale.php Docs: Replace multiple single line comments with multi-line comments. 2023-07-09 21:25:23 +00:00
class-wp-matchesmapregex.php
class-wp-meta-query.php Code Modernization: Replace usage of strpos() with str_contains(). 2023-06-22 14:36:26 +00:00
class-wp-metadata-lazyloader.php
class-wp-navigation-fallback.php Docs: Various docblocks corrections. 2023-07-18 07:37:21 +00:00
class-wp-network-query.php
class-wp-network.php Coding Standards: Use strict comparison in wp-includes/class-wp-network.php. 2023-07-12 09:46:25 +00:00
class-wp-object-cache.php
class-wp-oembed-controller.php
class-wp-oembed.php Docs: Replace multiple single line comments with multi-line comments. 2023-07-09 21:25:23 +00:00
class-wp-paused-extensions-storage.php
class-wp-post-type.php Code Modernization: Replace usage of strpos() with str_contains(). 2023-06-22 14:36:26 +00:00
class-wp-post.php
class-wp-query.php Docs: Replace multiple single line comments with multi-line comments. 2023-07-09 21:25:23 +00:00
class-wp-recovery-mode-cookie-service.php
class-wp-recovery-mode-email-service.php
class-wp-recovery-mode-key-service.php
class-wp-recovery-mode-link-service.php
class-wp-recovery-mode.php
class-wp-rewrite.php Coding Standards: Use strict comparison in wp-includes/class-wp-rewrite.php. 2023-07-11 11:35:23 +00:00
class-wp-role.php
class-wp-roles.php
class-wp-scripts.php Coding Standards: Correct equals sign alignment in various files. 2023-07-20 00:06:21 +00:00
class-wp-session-tokens.php
class-wp-simplepie-file.php Coding Standards: Use strict comparison in wp-includes/class-wp-simplepie-file.php. 2023-07-07 06:42:25 +00:00
class-wp-simplepie-sanitize-kses.php
class-wp-site-query.php Code Modernization: Replace usage of strpos() with str_contains(). 2023-06-22 14:36:26 +00:00
class-wp-site.php
class-wp-styles.php
class-wp-tax-query.php Coding Standards: Use strict comparison in wp-includes/class-wp-tax-query.php. 2023-07-08 10:48:24 +00:00
class-wp-taxonomy.php
class-wp-term-query.php
class-wp-term.php
class-wp-text-diff-renderer-inline.php
class-wp-text-diff-renderer-table.php Docs: Replace multiple single line comments with multi-line comments. 2023-07-09 21:25:23 +00:00
class-wp-textdomain-registry.php Docs: Replace multiple single line comments with multi-line comments. 2023-07-09 21:25:23 +00:00
class-wp-theme-json-data.php
class-wp-theme-json-resolver.php Docs: Replace multiple single line comments with multi-line comments. 2023-07-09 21:40:23 +00:00
class-wp-theme-json-schema.php
class-wp-theme-json.php General: Fix an error introduced in [56179]. 2023-07-09 22:17:22 +00:00
class-wp-theme.php Docs: Replace multiple single line comments with multi-line comments. 2023-07-09 21:48:22 +00:00
class-wp-user-meta-session-tokens.php
class-wp-user-query.php Coding Standards: Use strict comparison in wp-includes/class-wp-user-query.php. 2023-07-09 09:59:24 +00:00
class-wp-user-request.php
class-wp-user.php Coding Standards: Use strict comparison in wp-includes/class-wp-user.php. 2023-07-10 12:53:26 +00:00
class-wp-walker.php
class-wp-widget-factory.php
class-wp-widget.php
class-wp-xmlrpc-server.php Code Modernization: Use str_contains() in a few more places. 2023-07-17 13:18:27 +00:00
class-wp.php Docs: Replace multiple single line comments with multi-line comments. 2023-07-09 21:48:22 +00:00
class-wpdb.php Docs: Replace multiple single line comments with multi-line comments. 2023-07-09 21:48:22 +00:00
class.wp-dependencies.php
class.wp-scripts.php
class.wp-styles.php
comment-template.php Code Modernization: Replace usage of substr() with str_starts_with() and str_ends_with(). 2023-06-22 14:57:24 +00:00
comment.php Docs: Replace multiple single line comments with multi-line comments. 2023-07-09 21:48:22 +00:00
compat.php General: Increase the minimum supported version of PHP to 7.0.0. 2023-07-05 17:41:22 +00:00
cron.php Docs: Replace multiple single line comments with multi-line comments. 2023-07-09 21:48:22 +00:00
date.php
default-constants.php Docs: Clarify where the wp_get_development_mode() value is retrieved from. 2023-07-14 14:10:26 +00:00
default-filters.php Default Filters: Correct hook type for wp_print_scripts and customize_controls_print_styles. 2023-07-05 16:21:27 +00:00
default-widgets.php
deprecated.php General: Rename wp_in_development_mode() to wp_is_development_mode(). 2023-07-17 14:50:21 +00:00
embed-template.php
embed.php Docs: Replace multiple single line comments with multi-line comments. 2023-07-09 21:48:22 +00:00
error-protection.php
feed-atom-comments.php
feed-atom.php
feed-rdf.php
feed-rss2-comments.php
feed-rss2.php
feed-rss.php
feed.php Docs: Replace multiple single line comments with multi-line comments. 2023-07-09 21:48:22 +00:00
formatting.php Editor: trim footnote anchors from post excerpts. 2023-07-17 01:47:26 +00:00
functions.php I18n: Improve the use of dashicons-external icon for external links. 2023-07-11 12:59:25 +00:00
functions.wp-scripts.php Script Loader: Add support for HTML 5 "async" and "defer" attributes. 2023-06-26 13:42:23 +00:00
functions.wp-styles.php
general-template.php Code Modernization: Use str_contains() in a few more places. 2023-06-26 10:17:25 +00:00
global-styles-and-settings.php Editor: Fix bug where it was not possible to style custom block elements in theme.json. 2023-07-18 00:02:22 +00:00
http.php Code Modernization: Replace usage of substr() with str_starts_with() and str_ends_with(). 2023-06-22 14:57:24 +00:00
https-detection.php Docs: Replace multiple single line comments with multi-line comments. 2023-07-10 22:38:25 +00:00
https-migration.php Docs: Replace multiple single line comments with multi-line comments. 2023-07-10 22:38:25 +00:00
kses.php Docs: Replace multiple single line comments with multi-line comments. 2023-07-10 22:38:25 +00:00
l10n.php I18N: Ensure determine_locale() does not potentially return an empty string. 2023-06-23 16:03:25 +00:00
link-template.php Code Modernization: Use str_contains() in a few more places. 2023-07-17 13:18:27 +00:00
load.php General: Rename wp_in_development_mode() to wp_is_development_mode(). 2023-07-17 14:50:21 +00:00
locale.php
media-template.php Media: Redirect deprecated wp-admin/media.php file. 2023-06-19 23:20:21 +00:00
media.php Coding Standards: Correct equals sign alignment in various files. 2023-07-20 00:06:21 +00:00
meta.php Docs: Replace multiple single line comments with multi-line comments. 2023-07-10 22:38:25 +00:00
ms-blogs.php Code Modernization: Replace usage of substr() with str_starts_with() and str_ends_with(). 2023-06-22 14:57:24 +00:00
ms-default-constants.php Docs: Replace multiple single line comments with multi-line comments. 2023-07-10 22:48:22 +00:00
ms-default-filters.php
ms-deprecated.php Code Modernization: Replace usage of substr() with str_starts_with() and str_ends_with(). 2023-06-22 14:57:24 +00:00
ms-files.php Code Modernization: Replace usage of strpos() with str_contains(). 2023-06-22 14:36:26 +00:00
ms-functions.php Docs: Replace multiple single line comments with multi-line comments. 2023-07-10 22:48:22 +00:00
ms-load.php Docs: Replace multiple single line comments with multi-line comments. 2023-07-10 22:48:22 +00:00
ms-network.php
ms-settings.php Code Modernization: Replace usage of substr() with str_starts_with() and str_ends_with(). 2023-06-22 14:57:24 +00:00
ms-site.php Docs: Replace multiple single line comments with multi-line comments. 2023-07-10 22:48:22 +00:00
nav-menu-template.php
nav-menu.php Docs: Replace multiple single line comments with multi-line comments. 2023-07-10 22:48:22 +00:00
navigation-fallback.php Editor: add navigation fallback. 2023-06-27 05:54:19 +00:00
option.php Docs: Replace multiple single line comments with multi-line comments. 2023-07-10 22:48:22 +00:00
pluggable-deprecated.php
pluggable.php Code Modernization: Use str_contains() in a few more places. 2023-07-17 13:18:27 +00:00
plugin.php Docs: Mark apply_filters() third parameter $args as optional. 2023-06-08 07:54:22 +00:00
post-formats.php
post-template.php Docs: Replace multiple single line comments with multi-line comments. 2023-07-10 22:48:22 +00:00
post-thumbnail-template.php
post.php Editor: update string incorrectly marked for translation in Chrome. 2023-07-11 05:10:23 +00:00
query.php Docs: Replace multiple single line comments with multi-line comments. 2023-07-10 22:48:22 +00:00
registration-functions.php
registration.php
rest-api.php Docs: Replace multiple single line comments with multi-line comments. 2023-07-10 22:48:22 +00:00
revision.php Docs: Replace multiple single line comments with multi-line comments. 2023-07-10 22:48:22 +00:00
rewrite.php Coding Standards: Use strict comparison in wp-includes/rewrite.php. 2023-07-11 11:15:27 +00:00
robots-template.php
rss-functions.php
rss.php
script-loader.php Docs: Replace multiple single line comments with multi-line comments. 2023-07-10 23:11:22 +00:00
session.php
shortcodes.php Coding Standards: Correct equals sign alignment in various files. 2023-07-20 00:06:21 +00:00
sitemaps.php
spl-autoload-compat.php
style-engine.php
taxonomy.php Docs: Replace multiple single line comments with multi-line comments. 2023-07-10 23:11:22 +00:00
template-canvas.php
template-loader.php
template.php Docs: Replace multiple single line comments with multi-line comments. 2023-07-10 23:11:22 +00:00
theme-i18n.json
theme-previews.php General: Escape nonce used for block theme activation. 2023-07-12 05:21:23 +00:00
theme-templates.php Docs: Replace multiple single line comments with multi-line comments. 2023-07-10 23:11:22 +00:00
theme.json Editor: stabilise layout and refactor definitions. 2023-06-27 07:25:22 +00:00
theme.php Docs: Replace multiple single line comments with multi-line comments. 2023-07-10 23:11:22 +00:00
update.php Upgrade/Install: Pass the full database version string to WordPress.org for parsing. 2023-06-27 05:11:27 +00:00
user.php Docs: Replace multiple single line comments with multi-line comments. 2023-07-10 23:11:22 +00:00
vars.php General: Update Opera browser sniff follow UA string changes. 2023-07-13 00:58:25 +00:00
version.php HTML-API: Introduce minimal HTML Processor. 2023-07-20 13:43:25 +00:00
widgets.php Docs: Replace multiple single line comments with multi-line comments. 2023-07-10 23:11:22 +00:00
wp-db.php
wp-diff.php