mirror of
https://github.com/LadybirdBrowser/ladybird
synced 2026-04-27 02:05:07 +02:00
LibWeb: Honor LegacyNullToEmptyString in union string conversion
The IDL generator was passing 'false' to generate_to_cpp when converting a union containing a string type. This broke WebIDL's LegacyNullToEmptyString behavior. Pass the actual legacy_null_to_empty_string flag instead. Fixes some WPTs: domparsing/outerhtml-02 trusted-types/block-string-assignment-to-Element-outerHTML trusted-types/block-string-assignment-to-HTMLElement-generic trusted-types/block-string-assignment-to-ShadowRoot-innerHTML
This commit is contained in:
Notes:
github-actions[bot]
2025-12-07 07:47:01 +00:00
Author: https://github.com/mikiubo Commit: https://github.com/LadybirdBrowser/ladybird/commit/de4e3ef63a8 Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/7043 Reviewed-by: https://github.com/AtkinsSJ ✅
@@ -0,0 +1,54 @@
|
||||
<!DOCTYPE html>
|
||||
<title>outerHTML and string conversion</title>
|
||||
<link rel="author" title="Ms2ger" href="mailto:ms2ger@gmail.com">
|
||||
<link rel="help" href="https://w3c.github.io/DOM-Parsing/#extensions-to-the-element-interface">
|
||||
<script src="../resources/testharness.js"></script>
|
||||
<script src="../resources/testharnessreport.js"></script>
|
||||
<div id="log"></div>
|
||||
<script>
|
||||
test(function() {
|
||||
var div = document.createElement("div");
|
||||
var p = div.appendChild(document.createElement("p"));
|
||||
p.outerHTML = null;
|
||||
assert_equals(div.innerHTML, "");
|
||||
assert_equals(div.textContent, "");
|
||||
}, "outerHTML and string conversion: null.")
|
||||
|
||||
test(function() {
|
||||
var div = document.createElement("div");
|
||||
var p = div.appendChild(document.createElement("p"));
|
||||
p.outerHTML = undefined;
|
||||
assert_equals(div.innerHTML, "undefined");
|
||||
assert_equals(div.textContent, "undefined");
|
||||
}, "outerHTML and string conversion: undefined.")
|
||||
|
||||
test(function() {
|
||||
var div = document.createElement("div");
|
||||
var p = div.appendChild(document.createElement("p"));
|
||||
p.outerHTML = 42;
|
||||
assert_equals(div.innerHTML, "42");
|
||||
assert_equals(div.textContent, "42");
|
||||
}, "outerHTML and string conversion: number.")
|
||||
|
||||
test(function() {
|
||||
var div = document.createElement("div");
|
||||
var p = div.appendChild(document.createElement("p"));
|
||||
p.outerHTML = {
|
||||
toString: function() { return "pass"; },
|
||||
valueOf: function() { return "fail"; }
|
||||
};
|
||||
assert_equals(div.innerHTML, "pass");
|
||||
assert_equals(div.textContent, "pass");
|
||||
}, "outerHTML and string conversion: toString.")
|
||||
|
||||
test(function() {
|
||||
var div = document.createElement("div");
|
||||
var p = div.appendChild(document.createElement("p"));
|
||||
p.outerHTML = {
|
||||
toString: undefined,
|
||||
valueOf: function() { return "pass"; }
|
||||
};
|
||||
assert_equals(div.innerHTML, "pass");
|
||||
assert_equals(div.textContent, "pass");
|
||||
}, "outerHTML and string conversion: valueOf.")
|
||||
</script>
|
||||
Reference in New Issue
Block a user