浏览代码

LibWeb: Implement HTMLFormElement.enctype

Shannon Booth 1 年之前
父节点
当前提交
aeb815cc66

+ 5 - 0
Tests/LibWeb/Text/expected/HTML/form-element-enctype.txt

@@ -0,0 +1,5 @@
+   enctype  | application/x-www-form-urlencoded
+
+enctype  | text/plain
+
+enctype  | application/x-www-form-urlencoded

+ 18 - 0
Tests/LibWeb/Text/input/HTML/form-element-enctype.html

@@ -0,0 +1,18 @@
+<form id="testForm"></form>
+<script src="../include.js"></script>
+<script>
+    test(() => {
+        const form = document.getElementById('testForm');
+
+        println(`enctype  | ${form.enctype}`);
+        println('');
+
+        form.enctype = 'text/plain';
+
+        println(`enctype  | ${form.enctype}`);
+        println('');
+
+        form.enctype = 'invalid-value';
+        println(`enctype  | ${form.enctype}`);
+    });
+</script>

+ 9 - 1
Userland/Libraries/LibWeb/HTML/HTMLFormElement.idl

@@ -1,6 +1,14 @@
 #import <DOM/HTMLFormControlsCollection.idl>
 #import <DOM/HTMLFormControlsCollection.idl>
 #import <HTML/HTMLElement.idl>
 #import <HTML/HTMLElement.idl>
 
 
+// https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#attr-fs-enctype
+[MissingValueDefault=application/x-www-form-urlencoded, InvalidValueDefault=application/x-www-form-urlencoded]
+enum EnctypeAttribute {
+    "application/x-www-form-urlencoded",
+    "multipart/form-data",
+    "text/plain"
+};
+
 // https://html.spec.whatwg.org/multipage/semantics.html#htmlformelement
 // https://html.spec.whatwg.org/multipage/semantics.html#htmlformelement
 [Exposed=Window, LegacyOverrideBuiltIns, LegacyUnenumerableNamedProperties]
 [Exposed=Window, LegacyOverrideBuiltIns, LegacyUnenumerableNamedProperties]
 interface HTMLFormElement : HTMLElement {
 interface HTMLFormElement : HTMLElement {
@@ -10,7 +18,7 @@ interface HTMLFormElement : HTMLElement {
     [CEReactions, Reflect=accept-charset] attribute DOMString acceptCharset;
     [CEReactions, Reflect=accept-charset] attribute DOMString acceptCharset;
     [CEReactions] attribute USVString action;
     [CEReactions] attribute USVString action;
     [FIXME, CEReactions] attribute DOMString autocomplete;
     [FIXME, CEReactions] attribute DOMString autocomplete;
-    [FIXME, CEReactions] attribute DOMString enctype;
+    [CEReactions, Enumerated=EnctypeAttribute, Reflect] attribute DOMString enctype;
     [FIXME, CEReactions] attribute DOMString encoding;
     [FIXME, CEReactions] attribute DOMString encoding;
     [CEReactions] attribute DOMString method;
     [CEReactions] attribute DOMString method;
     [CEReactions, Reflect] attribute DOMString name;
     [CEReactions, Reflect] attribute DOMString name;