Skip to content

HTML API: Replace Open Elements handlers with explicit stack accounting#12037

Open
dmsnell wants to merge 6 commits into
WordPress:trunkfrom
dmsnell:html-api/replace-push-pop-handlers
Open

HTML API: Replace Open Elements handlers with explicit stack accounting#12037
dmsnell wants to merge 6 commits into
WordPress:trunkfrom
dmsnell:html-api/replace-push-pop-handlers

Conversation

@dmsnell

@dmsnell dmsnell commented Jun 1, 2026

Copy link
Copy Markdown
Member

Trac ticket: Core-65383

The push and pop handlers in the HTML API were convenient when initially building the class, but being indirect, they involve an overhead when calling and require additional protection for avoiding calling the wrong handlers when and if an instance of the class were to be unserialized.

This patch replaces the direct calls by modifying the return values of the methods in the Open Elements calss to return pushed or popped elements. This makes it possible for the HTML Processor to track its own accounting directly while still delegating the stack operations to the Open Elements.

Patch developed by Codex on instruction from dmsnell.

@github-actions

github-actions Bot commented Jun 1, 2026

Copy link
Copy Markdown

Test using WordPress Playground

The changes in this pull request can previewed and tested using a WordPress Playground instance.

WordPress Playground is an experimental project that creates a full WordPress instance entirely within the browser.

Some things to be aware of

  • All changes will be lost when closing a tab with a Playground instance.
  • All changes will be lost when refreshing the page.
  • A fresh instance is created each time the link below is clicked.
  • Every time this pull request is updated, a new ZIP file containing all changes is created. If changes are not reflected in the Playground instance,
    it's possible that the most recent build failed, or has not completed. Check the list of workflow runs to be sure.

For more details about these limitations and more, check out the Limitations page in the WordPress Playground documentation.

Test this pull request with WordPress Playground.

The push and pop handlers in the HTML API were convenient when initially
building the class, but being indirect, they involve an overhead when
calling and require additional protection for avoiding calling the wrong
handlers when and if an instance of the class were to be unserialized.

This patch replaces the direct calls by modifying the return values of
the methods in the Open Elements calss to return pushed or popped
elements. This makes it possible for the HTML Processor to track its
own accounting directly while still delegating the stack operations to
the Open Elements.

Patch developed by Codex on instruction from dmsnell.
@dmsnell dmsnell force-pushed the html-api/replace-push-pop-handlers branch from 60ab0f1 to 989d4ab Compare June 1, 2026 13:07
@dmsnell dmsnell marked this pull request as ready for review June 11, 2026 03:55
@github-actions

Copy link
Copy Markdown

The following accounts have interacted with this PR and/or linked issues. I will continue to update these lists as activity occurs. You can also manually ask me to refresh this list by adding the props-bot label.

Unlinked Accounts

The following contributors have not linked their GitHub and WordPress.org accounts: @codex.

Contributors, please read how to link your accounts to ensure your work is properly credited in WordPress releases.

Core Committers: Use this line as a base for the props when committing in SVN:

Props dmsnell.

To understand the WordPress project's expectations around crediting contributors, please review the Contributor Attribution page in the Core Handbook.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants