Jelajahi Sumber

LibWeb: Handle radio/checkbox default-or-on value attribute state

If the value attribute is missing, these input elements should be
returning 'on' as their value in their IDL.
Shannon Booth 1 tahun lalu
induk
melakukan
0f374afc8f
1 mengubah file dengan 7 tambahan dan 0 penghapusan
  1. 7 0
      Userland/Libraries/LibWeb/HTML/HTMLInputElement.cpp

+ 7 - 0
Userland/Libraries/LibWeb/HTML/HTMLInputElement.cpp

@@ -2,6 +2,7 @@
  * Copyright (c) 2018-2023, Andreas Kling <kling@serenityos.org>
  * Copyright (c) 2022, Adam Hodgen <ant1441@gmail.com>
  * Copyright (c) 2022, Andrew Kaster <akaster@serenityos.org>
+ * Copyright (c) 2023, Shannon Booth <shannon@serenityos.org>
  *
  * SPDX-License-Identifier: BSD-2-Clause
  */
@@ -310,6 +311,12 @@ DeprecatedString HTMLInputElement::value() const
         return DeprecatedString::empty();
     }
 
+    // https://html.spec.whatwg.org/multipage/input.html#dom-input-value-default-on
+    if (type_state() == TypeAttributeState::Checkbox || type_state() == TypeAttributeState::RadioButton) {
+        // On getting, if the element has a value content attribute, return that attribute's value; otherwise, return the string "on".
+        return has_attribute(AttributeNames::value) ? get_attribute(AttributeNames::value) : "on";
+    }
+
     // https://html.spec.whatwg.org/multipage/input.html#dom-input-value-value
     // Return the current value of the element.
     return m_value;