LibWeb: Change attribute type to USVString where applicable
Also mark USVString attributes as containing a URL, where applicable.
This commit is contained in:
parent
335d51d678
commit
1369fc5069
Notes:
github-actions[bot]
2024-08-17 05:59:13 +00:00
Author: https://github.com/tcl3 Commit: https://github.com/LadybirdBrowser/ladybird/commit/1369fc50695 Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/1059 Reviewed-by: https://github.com/shannonbooth
19 changed files with 66 additions and 23 deletions
|
@ -1,2 +1,2 @@
|
|||
../../Layout/input/120.png loaded
|
||||
120.png loaded
|
||||
file:///i-do-no-exist-i-swear.png failed
|
||||
|
|
14
Tests/LibWeb/Text/expected/usvstring-url-reflection.txt
Normal file
14
Tests/LibWeb/Text/expected/usvstring-url-reflection.txt
Normal file
|
@ -0,0 +1,14 @@
|
|||
audio.src final URL path segment: %EF%BF%BDa%EF%BF%BDb%EF%BF%BD
|
||||
embed.src final URL path segment: %EF%BF%BDa%EF%BF%BDb%EF%BF%BD
|
||||
frame.longDesc final URL path segment: %EF%BF%BDa%EF%BF%BDb%EF%BF%BD
|
||||
frame.src final URL path segment: %EF%BF%BDa%EF%BF%BDb%EF%BF%BD
|
||||
iframe.longDesc final URL path segment: %EF%BF%BDa%EF%BF%BDb%EF%BF%BD
|
||||
iframe.src final URL path segment: %EF%BF%BDa%EF%BF%BDb%EF%BF%BD
|
||||
img.src final URL path segment: %EF%BF%BDa%EF%BF%BDb%EF%BF%BD
|
||||
link.href final URL path segment: %EF%BF%BDa%EF%BF%BDb%EF%BF%BD
|
||||
object.codeBase final URL path segment: %EF%BF%BDa%EF%BF%BDb%EF%BF%BD
|
||||
object.data final URL path segment: %EF%BF%BDa%EF%BF%BDb%EF%BF%BD
|
||||
script.src final URL path segment: %EF%BF%BDa%EF%BF%BDb%EF%BF%BD
|
||||
source.src final URL path segment: %EF%BF%BDa%EF%BF%BDb%EF%BF%BD
|
||||
track.src final URL path segment: %EF%BF%BDa%EF%BF%BDb%EF%BF%BD
|
||||
video.src final URL path segment: %EF%BF%BDa%EF%BF%BDb%EF%BF%BD
|
|
@ -1 +1 @@
|
|||
wfh
|
||||
file:///example/file/location/wfh
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
failed to load: "data:"
|
||||
failed to load: "file:///i-do-no-exist-i-swear"
|
||||
failed to load: "https://i-do-no-exist-i-swear.net.uk"
|
||||
failed to load: "https://i-do-no-exist-i-swear.net.uk/"
|
||||
|
|
|
@ -9,7 +9,8 @@
|
|||
|
||||
return new Promise((resolve, reject) => {
|
||||
input.addEventListener("load", () => {
|
||||
resolve(`${input.src} loaded`);
|
||||
const filename = input.src.split('/').pop();
|
||||
resolve(`${filename} loaded`);
|
||||
});
|
||||
input.addEventListener("error", () => {
|
||||
resolve(`${input.src} failed`);
|
||||
|
|
28
Tests/LibWeb/Text/input/usvstring-url-reflection.html
Normal file
28
Tests/LibWeb/Text/input/usvstring-url-reflection.html
Normal file
|
@ -0,0 +1,28 @@
|
|||
<!DOCTYPE html>
|
||||
<script src="include.js"></script>
|
||||
<script>
|
||||
test(() => {
|
||||
let elementList = [
|
||||
{ "audio": "src" },
|
||||
{ "embed": "src" },
|
||||
{ "frame": "longDesc" },
|
||||
{ "frame": "src" },
|
||||
{ "iframe": "longDesc" },
|
||||
{ "iframe": "src" },
|
||||
{ "img": "src" },
|
||||
{ "link": "href" },
|
||||
{ "object": "codeBase" },
|
||||
{ "object": "data" },
|
||||
{ "script": "src" },
|
||||
{ "source": "src" },
|
||||
{ "track": "src" },
|
||||
{ "video": "src" },
|
||||
];
|
||||
for (const elementDescriptor of elementList) {
|
||||
[elementName, propertyName] = Object.entries(elementDescriptor)[0];
|
||||
const element = document.createElement(elementName);
|
||||
element[propertyName] = "\udddda\uddddb\udddd";
|
||||
println(`${elementName}.${propertyName} final URL path segment: ${element[propertyName].split("/").pop()}`);
|
||||
}
|
||||
});
|
||||
</script>
|
|
@ -1,7 +1,7 @@
|
|||
<script src="include.js"></script>
|
||||
<script type="text/javascript">
|
||||
function updateSrc() {
|
||||
video.src = "wfh";
|
||||
video.src = "file:///example/file/location/wfh";
|
||||
}
|
||||
|
||||
test(() => {
|
||||
|
|
|
@ -10,7 +10,7 @@ interface HTMLAnchorElement : HTMLElement {
|
|||
|
||||
[CEReactions, Reflect] attribute DOMString target;
|
||||
[CEReactions, Reflect] attribute DOMString download;
|
||||
[CEReactions, Reflect] attribute DOMString ping;
|
||||
[CEReactions, Reflect] attribute USVString ping;
|
||||
[CEReactions, Reflect] attribute DOMString rel;
|
||||
[SameObject, PutForwards=value] readonly attribute DOMTokenList relList;
|
||||
[CEReactions, Reflect] attribute DOMString hreflang;
|
||||
|
|
|
@ -6,7 +6,7 @@ interface HTMLEmbedElement : HTMLElement {
|
|||
|
||||
[HTMLConstructor] constructor();
|
||||
|
||||
[CEReactions, Reflect] attribute DOMString src;
|
||||
[CEReactions, Reflect, URL] attribute USVString src;
|
||||
[CEReactions, Reflect] attribute DOMString type;
|
||||
[CEReactions, Reflect] attribute DOMString width;
|
||||
[CEReactions, Reflect] attribute DOMString height;
|
||||
|
|
|
@ -8,9 +8,9 @@ interface HTMLFrameElement : HTMLElement {
|
|||
|
||||
[CEReactions, Reflect] attribute DOMString name;
|
||||
[CEReactions, Reflect] attribute DOMString scrolling;
|
||||
[CEReactions, Reflect] attribute DOMString src;
|
||||
[CEReactions, Reflect, URL] attribute USVString src;
|
||||
[CEReactions, Reflect=frameborder] attribute DOMString frameBorder;
|
||||
[CEReactions, Reflect=longdesc] attribute DOMString longDesc;
|
||||
[CEReactions, Reflect=longdesc, URL] attribute USVString longDesc;
|
||||
[CEReactions, Reflect=noresize] attribute boolean noResize;
|
||||
[FIXME] readonly attribute Document? contentDocument;
|
||||
[FIXME] readonly attribute WindowProxy? contentWindow;
|
||||
|
|
|
@ -8,7 +8,7 @@ interface HTMLIFrameElement : HTMLElement {
|
|||
|
||||
[HTMLConstructor] constructor();
|
||||
|
||||
[CEReactions, Reflect] attribute DOMString src;
|
||||
[CEReactions, Reflect, URL] attribute USVString src;
|
||||
[CEReactions, Reflect] attribute DOMString srcdoc;
|
||||
[CEReactions, Reflect] attribute DOMString name;
|
||||
[FIXME, SameObject, PutForwards=value] readonly attribute DOMTokenList sandbox;
|
||||
|
@ -26,7 +26,7 @@ interface HTMLIFrameElement : HTMLElement {
|
|||
[CEReactions, Reflect] attribute DOMString align;
|
||||
[CEReactions, Reflect] attribute DOMString scrolling;
|
||||
[CEReactions, Reflect=frameborder] attribute DOMString frameBorder;
|
||||
[CEReactions, Reflect=longdesc] attribute USVString longDesc;
|
||||
[CEReactions, Reflect=longdesc, URL] attribute USVString longDesc;
|
||||
|
||||
[CEReactions, LegacyNullToEmptyString, Reflect=marginheight] attribute DOMString marginHeight;
|
||||
[CEReactions, LegacyNullToEmptyString, Reflect=marginwidth] attribute DOMString marginWidth;
|
||||
|
|
|
@ -9,7 +9,7 @@ interface HTMLImageElement : HTMLElement {
|
|||
[HTMLConstructor] constructor();
|
||||
|
||||
[CEReactions, Reflect] attribute DOMString alt;
|
||||
[CEReactions, Reflect] attribute DOMString src;
|
||||
[CEReactions, Reflect, URL] attribute USVString src;
|
||||
[CEReactions, Reflect] attribute DOMString srcset;
|
||||
[CEReactions, Reflect] attribute DOMString sizes;
|
||||
[CEReactions, Enumerated=CORSSettingsAttribute, Reflect=crossorigin] attribute DOMString? crossOrigin;
|
||||
|
@ -34,7 +34,7 @@ interface HTMLImageElement : HTMLElement {
|
|||
[CEReactions, Reflect] attribute DOMString align;
|
||||
[CEReactions, Reflect] attribute unsigned long hspace;
|
||||
[CEReactions, Reflect] attribute unsigned long vspace;
|
||||
[CEReactions, Reflect=longdesc] attribute USVString longDesc;
|
||||
[CEReactions, Reflect=longdesc, URL] attribute USVString longDesc;
|
||||
|
||||
[CEReactions, LegacyNullToEmptyString, Reflect] attribute DOMString border;
|
||||
|
||||
|
|
|
@ -36,7 +36,7 @@ interface HTMLInputElement : HTMLElement {
|
|||
[CEReactions, Reflect=readonly] attribute boolean readOnly;
|
||||
[CEReactions, Reflect] attribute boolean required;
|
||||
[CEReactions] attribute unsigned long size;
|
||||
[CEReactions, Reflect] attribute DOMString src;
|
||||
[CEReactions, Reflect] attribute USVString src;
|
||||
[CEReactions, Reflect] attribute DOMString step;
|
||||
[CEReactions] attribute DOMString type;
|
||||
[CEReactions, Reflect=value] attribute DOMString defaultValue;
|
||||
|
|
|
@ -9,7 +9,7 @@ interface HTMLLinkElement : HTMLElement {
|
|||
|
||||
[HTMLConstructor] constructor();
|
||||
|
||||
[CEReactions, Reflect] attribute DOMString href;
|
||||
[CEReactions, Reflect, URL] attribute USVString href;
|
||||
[CEReactions, Reflect=crossorigin, Enumerated=CORSSettingsAttribute] attribute DOMString? crossOrigin;
|
||||
[CEReactions, Reflect] attribute DOMString rel;
|
||||
[CEReactions] attribute DOMString as;
|
||||
|
@ -19,7 +19,7 @@ interface HTMLLinkElement : HTMLElement {
|
|||
[CEReactions, Reflect] attribute DOMString hreflang;
|
||||
[CEReactions, Reflect] attribute DOMString type;
|
||||
[FIXME, SameObject, PutForwards=value] readonly attribute DOMTokenList sizes;
|
||||
[CEReactions, Reflect=imagesrcset] attribute DOMString imageSrcset;
|
||||
[CEReactions, Reflect=imagesrcset] attribute USVString imageSrcset;
|
||||
[CEReactions, Reflect=imagesizes] attribute DOMString imageSizes;
|
||||
[CEReactions, Reflect=referrerpolicy, Enumerated=ReferrerPolicy] attribute DOMString referrerPolicy;
|
||||
[FIXME, SameObject, PutForwards=value] readonly attribute DOMTokenList blocking;
|
||||
|
|
|
@ -30,7 +30,7 @@ interface HTMLMediaElement : HTMLElement {
|
|||
readonly attribute MediaError? error;
|
||||
|
||||
// network state
|
||||
[Reflect, CEReactions] attribute DOMString src;
|
||||
[Reflect, CEReactions, URL] attribute USVString src;
|
||||
[FIXME] attribute MediaProvider? srcObject;
|
||||
readonly attribute USVString currentSrc;
|
||||
[Reflect=crossorigin, CEReactions, Enumerated=CORSSettingsAttribute] attribute DOMString? crossOrigin;
|
||||
|
|
|
@ -7,7 +7,7 @@ interface HTMLObjectElement : HTMLElement {
|
|||
|
||||
[HTMLConstructor] constructor();
|
||||
|
||||
[CEReactions] attribute DOMString data;
|
||||
[CEReactions, URL] attribute USVString data;
|
||||
[CEReactions, Reflect] attribute DOMString type;
|
||||
[CEReactions, Reflect] attribute DOMString name;
|
||||
readonly attribute HTMLFormElement? form;
|
||||
|
@ -32,7 +32,7 @@ interface HTMLObjectElement : HTMLElement {
|
|||
[CEReactions, Reflect] attribute unsigned long hspace;
|
||||
[CEReactions, Reflect] attribute DOMString standby;
|
||||
[CEReactions, Reflect] attribute unsigned long vspace;
|
||||
[CEReactions, Reflect=codebase] attribute DOMString codeBase;
|
||||
[CEReactions, Reflect=codebase, URL] attribute USVString codeBase;
|
||||
[CEReactions, Reflect=codetype] attribute DOMString codeType;
|
||||
[CEReactions, Reflect=usemap] attribute DOMString useMap;
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@ interface HTMLScriptElement : HTMLElement {
|
|||
|
||||
[HTMLConstructor] constructor();
|
||||
|
||||
[CEReactions, Reflect] attribute DOMString src;
|
||||
[CEReactions, Reflect, URL] attribute USVString src;
|
||||
[CEReactions, Reflect] attribute DOMString type;
|
||||
[CEReactions, Reflect=nomodule] attribute boolean noModule;
|
||||
[CEReactions] attribute boolean async;
|
||||
|
|
|
@ -6,9 +6,9 @@ interface HTMLSourceElement : HTMLElement {
|
|||
|
||||
[HTMLConstructor] constructor();
|
||||
|
||||
[CEReactions, Reflect] attribute DOMString src;
|
||||
[CEReactions, Reflect, URL] attribute USVString src;
|
||||
[CEReactions, Reflect] attribute DOMString type;
|
||||
[CEReactions, Reflect] attribute DOMString srcset;
|
||||
[CEReactions, Reflect] attribute USVString srcset;
|
||||
[CEReactions, Reflect] attribute DOMString sizes;
|
||||
[CEReactions, Reflect] attribute DOMString media;
|
||||
[CEReactions, Reflect] attribute unsigned long width;
|
||||
|
|
|
@ -17,7 +17,7 @@ interface HTMLTrackElement : HTMLElement {
|
|||
[HTMLConstructor] constructor();
|
||||
|
||||
[CEReactions, Enumerated=TrackKindAttribute, Reflect] attribute DOMString kind;
|
||||
[CEReactions, Reflect] attribute DOMString src;
|
||||
[CEReactions, Reflect, URL] attribute USVString src;
|
||||
[CEReactions, Reflect] attribute DOMString srclang;
|
||||
[CEReactions, Reflect] attribute DOMString label;
|
||||
[CEReactions, Reflect] attribute boolean default;
|
||||
|
|
Loading…
Add table
Reference in a new issue