Don't select options when all children are removed#55647
Merged
chromium-wpt-export-bot merged 1 commit intomasterfrom Oct 24, 2025
Merged
Don't select options when all children are removed#55647chromium-wpt-export-bot merged 1 commit intomasterfrom
chromium-wpt-export-bot merged 1 commit intomasterfrom
Conversation
This patch fixes a regression caused when moving the calls to HTMLSelectElement::OptionInserted/OptionRemoved from HTMLSelectElement::ChildrenChanged to HTMLOptionElement::InsertedInto/RemovedFrom. In the pre-regression code path when all options are removed from the select at once via select.innerHTML = '' for example, the options selectedness would not be modified because the ResetToDefaultSelection would only be called once after all the options are removed. In the post-regression code path, ResetToDefaultSelection is called in between each option being removed in HTMLOptionElement::RemovedFrom, which results in every option becoming selected before they are eventually removed. This patch replicates the pre-regression behavior by moving calls to OptionRemoved from HTMLOptionElement::RemovedFrom to HTMLSelectElement::ChildrenChanged in the case that the option element is a direct child of the select element. A better fix might be to always set selectedness to false when an option is removed from a select element, but that might have other unintended consequences. Spec issue: whatwg/html#11825 Fixed: 444330901 Change-Id: I10b7a501993229cccff1e7aa36a7eb306f2da0d0 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7058561 Reviewed-by: David Baron <[email protected]> Commit-Queue: Joey Arhar <[email protected]> Cr-Commit-Position: refs/heads/main@{#1535201}
8accab5 to
1269ba2
Compare
wpt-pr-bot
approved these changes
Oct 24, 2025
Collaborator
wpt-pr-bot
left a comment
There was a problem hiding this comment.
The review process for this patch is being conducted in the Chromium project.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This patch fixes a regression caused when moving the calls to
HTMLSelectElement::OptionInserted/OptionRemoved from
HTMLSelectElement::ChildrenChanged to
HTMLOptionElement::InsertedInto/RemovedFrom.
In the pre-regression code path when all options are removed from the
select at once via select.innerHTML = '' for example, the options
selectedness would not be modified because the ResetToDefaultSelection
would only be called once after all the options are removed.
In the post-regression code path, ResetToDefaultSelection is called in
between each option being removed in HTMLOptionElement::RemovedFrom,
which results in every option becoming selected before they are
eventually removed.
This patch replicates the pre-regression behavior by moving calls to
OptionRemoved from HTMLOptionElement::RemovedFrom to
HTMLSelectElement::ChildrenChanged in the case that the option element
is a direct child of the select element.
A better fix might be to always set selectedness to false when an option
is removed from a select element, but that might have other unintended
consequences.
Spec issue: whatwg/html#11825
Fixed: 444330901
Change-Id: I10b7a501993229cccff1e7aa36a7eb306f2da0d0
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/7058561
Reviewed-by: David Baron <[email protected]>
Commit-Queue: Joey Arhar <[email protected]>
Cr-Commit-Position: refs/heads/main@{#1535201}