LibWeb: Require existing Selection for .execCommand("selectAll")

Disable the command if no selection is available. This is a spec bug:

https://github.com/w3c/editing/issues/475

Fixes #3325
This commit is contained in:
Jelle Raaijmakers 2025-01-20 23:56:55 +01:00 committed by Tim Ledbetter
parent 96e074b38f
commit d967f56936
Notes: github-actions[bot] 2025-01-21 02:28:49 +00:00
3 changed files with 21 additions and 5 deletions

View file

@ -112,17 +112,17 @@ bool Document::query_command_enabled(FlyString const& command)
if (command.is_one_of(
Editing::CommandNames::defaultParagraphSeparator,
Editing::CommandNames::redo,
Editing::CommandNames::selectAll,
Editing::CommandNames::styleWithCSS,
Editing::CommandNames::undo,
Editing::CommandNames::useCSS))
return true;
// AD-HOC: selectAll requires a selection object to exist.
if (command == Editing::CommandNames::selectAll)
return get_selection();
// The other commands defined here are enabled if the active range is not null,
auto selection = get_selection();
if (!selection)
return false;
auto active_range = selection->range();
auto active_range = Editing::active_range(*this);
if (!active_range)
return false;