Ver código fonte

LibWeb: Return current document URL if form action missing or empty

Adam Plumb 3 anos atrás
pai
commit
34825ad3d1

+ 13 - 0
Userland/Libraries/LibWeb/HTML/HTMLFormElement.cpp

@@ -139,4 +139,17 @@ void HTMLFormElement::remove_associated_element(Badge<FormAssociatedElement>, HT
     m_associated_elements.remove_first_matching([&](auto& entry) { return entry.ptr() == &element; });
     m_associated_elements.remove_first_matching([&](auto& entry) { return entry.ptr() == &element; });
 }
 }
 
 
+// https://html.spec.whatwg.org/#dom-fs-action
+String HTMLFormElement::action() const
+{
+    auto value = attribute(HTML::AttributeNames::action);
+
+    // Return the current URL if the action attribute is null or an empty string
+    if (value.is_null() || value.is_empty()) {
+        return document().url().to_string();
+    }
+
+    return value;
+}
+
 }
 }

+ 1 - 1
Userland/Libraries/LibWeb/HTML/HTMLFormElement.h

@@ -18,7 +18,7 @@ public:
     HTMLFormElement(DOM::Document&, QualifiedName);
     HTMLFormElement(DOM::Document&, QualifiedName);
     virtual ~HTMLFormElement() override;
     virtual ~HTMLFormElement() override;
 
 
-    String action() const { return attribute(HTML::AttributeNames::action); }
+    String action() const;
     String method() const { return attribute(HTML::AttributeNames::method); }
     String method() const { return attribute(HTML::AttributeNames::method); }
 
 
     void submit_form(RefPtr<HTMLElement> submitter, bool from_submit_binding = false);
     void submit_form(RefPtr<HTMLElement> submitter, bool from_submit_binding = false);