LibWeb: Include submitter name and value when constructing FormData

This fixes the SSO buttons on OpenAI's login page giving "Unknown
error"
This commit is contained in:
Luke Wilde 2025-07-15 15:48:55 +01:00 committed by Jelle Raaijmakers
commit d9cb8185cc
Notes: github-actions[bot] 2025-07-15 18:51:17 +00:00
4 changed files with 23 additions and 7 deletions

View file

@ -43,8 +43,8 @@ WebIDL::ExceptionOr<GC::Ref<FormData>> FormData::construct_impl(JS::Realm& realm
}
}
// 2. Let list be the result of constructing the entry list for form.
auto entry_list = TRY(construct_entry_list(realm, *form));
// 2. Let list be the result of constructing the entry list for form and submitter.
auto entry_list = TRY(construct_entry_list(realm, *form, submitter));
// 3. If list is null, then throw an "InvalidStateError" DOMException.
if (!entry_list.has_value())
return WebIDL::InvalidStateError::create(realm, "Form element does not contain any entries."_string);

View file

@ -0,0 +1 @@
'test-button-name' = 'test-button-value'

View file

@ -2,14 +2,13 @@ Harness status: OK
Found 9 tests
6 Pass
3 Fail
9 Pass
Pass FormData construction should allow a null submitter
Pass FormData construction should allow an undefined form and an undefined submitter
Pass FormData construction should allow an undefined form and a null submitter
Pass FormData construction should throw a TypeError if a non-null submitter is not a submit button
Pass FormData construction should throw a 'NotFoundError' DOMException if a non-null submitter is not owned by the form
Fail The constructed FormData object should contain an in-tree-order entry for a named submit button submitter
Pass The constructed FormData object should contain an in-tree-order entry for a named submit button submitter
Pass The constructed FormData object should not contain an entry for an unnamed submit button submitter
Fail The constructed FormData object should contain in-tree-order entries for an activated Image Button submitter
Fail The constructed FormData object should contain in-tree-order entries for an unactivated Image Button submitter
Pass The constructed FormData object should contain in-tree-order entries for an activated Image Button submitter
Pass The constructed FormData object should contain in-tree-order entries for an unactivated Image Button submitter

View file

@ -0,0 +1,16 @@
<!DOCTYPE html>
<form id="test-form">
<button id="test-button" name="test-button-name" value="test-button-value"></button>
</form>
<script src="../include.js"></script>
<script>
test(() => {
const testForm = document.getElementById("test-form");
const testButton = document.getElementById("test-button");
const formData = new FormData(testForm, testButton);
for (const [name, value] of formData.entries()) {
println(`'${name}' = '${value}'`);
}
});
</script>