Просмотр исходного кода

LibWeb: Use correct value when parsing datetime-local input type

Tim Ledbetter 10 месяцев назад
Родитель
Сommit
eb4e40bc49

+ 1 - 1
Tests/LibWeb/Text/expected/HTML/HTMLInputElement-valueAsNumber.txt

@@ -33,7 +33,7 @@ date did not throw: NaN
 month did not throw: NaN
 week did not throw: NaN
 time did not throw: NaN
-datetime-local threw exception: InvalidStateError: valueAsNumber: Invalid input type used
+datetime-local did not throw: NaN
 number did not throw: 100
 range did not throw: 100
 color threw exception: InvalidStateError: valueAsNumber: Invalid input type used

+ 2 - 2
Userland/Libraries/LibWeb/HTML/HTMLInputElement.cpp

@@ -1291,7 +1291,7 @@ WebIDL::ExceptionOr<void> HTMLInputElement::handle_src_attribute(String const& v
 HTMLInputElement::TypeAttributeState HTMLInputElement::parse_type_attribute(StringView type)
 {
 #define __ENUMERATE_HTML_INPUT_TYPE_ATTRIBUTE(keyword, state) \
-    if (type.equals_ignoring_ascii_case(#keyword##sv))        \
+    if (type.equals_ignoring_ascii_case(keyword##sv))         \
         return HTMLInputElement::TypeAttributeState::state;
     ENUMERATE_HTML_INPUT_TYPE_ATTRIBUTES
 #undef __ENUMERATE_HTML_INPUT_TYPE_ATTRIBUTE
@@ -1308,7 +1308,7 @@ StringView HTMLInputElement::type() const
     switch (m_type) {
 #define __ENUMERATE_HTML_INPUT_TYPE_ATTRIBUTE(keyword, state) \
     case TypeAttributeState::state:                           \
-        return #keyword##sv;
+        return keyword##sv;
         ENUMERATE_HTML_INPUT_TYPE_ATTRIBUTES
 #undef __ENUMERATE_HTML_INPUT_TYPE_ATTRIBUTE
     }

+ 21 - 21
Userland/Libraries/LibWeb/HTML/HTMLInputElement.h

@@ -24,28 +24,28 @@ namespace Web::HTML {
 
 // https://html.spec.whatwg.org/multipage/input.html#attr-input-type
 #define ENUMERATE_HTML_INPUT_TYPE_ATTRIBUTES                                  \
-    __ENUMERATE_HTML_INPUT_TYPE_ATTRIBUTE(hidden, Hidden)                     \
-    __ENUMERATE_HTML_INPUT_TYPE_ATTRIBUTE(text, Text)                         \
-    __ENUMERATE_HTML_INPUT_TYPE_ATTRIBUTE(search, Search)                     \
-    __ENUMERATE_HTML_INPUT_TYPE_ATTRIBUTE(tel, Telephone)                     \
-    __ENUMERATE_HTML_INPUT_TYPE_ATTRIBUTE(url, URL)                           \
-    __ENUMERATE_HTML_INPUT_TYPE_ATTRIBUTE(email, Email)                       \
-    __ENUMERATE_HTML_INPUT_TYPE_ATTRIBUTE(password, Password)                 \
-    __ENUMERATE_HTML_INPUT_TYPE_ATTRIBUTE(date, Date)                         \
-    __ENUMERATE_HTML_INPUT_TYPE_ATTRIBUTE(month, Month)                       \
-    __ENUMERATE_HTML_INPUT_TYPE_ATTRIBUTE(week, Week)                         \
-    __ENUMERATE_HTML_INPUT_TYPE_ATTRIBUTE(time, Time)                         \
+    __ENUMERATE_HTML_INPUT_TYPE_ATTRIBUTE("hidden", Hidden)                   \
+    __ENUMERATE_HTML_INPUT_TYPE_ATTRIBUTE("text", Text)                       \
+    __ENUMERATE_HTML_INPUT_TYPE_ATTRIBUTE("search", Search)                   \
+    __ENUMERATE_HTML_INPUT_TYPE_ATTRIBUTE("tel", Telephone)                   \
+    __ENUMERATE_HTML_INPUT_TYPE_ATTRIBUTE("url", URL)                         \
+    __ENUMERATE_HTML_INPUT_TYPE_ATTRIBUTE("email", Email)                     \
+    __ENUMERATE_HTML_INPUT_TYPE_ATTRIBUTE("password", Password)               \
+    __ENUMERATE_HTML_INPUT_TYPE_ATTRIBUTE("date", Date)                       \
+    __ENUMERATE_HTML_INPUT_TYPE_ATTRIBUTE("month", Month)                     \
+    __ENUMERATE_HTML_INPUT_TYPE_ATTRIBUTE("week", Week)                       \
+    __ENUMERATE_HTML_INPUT_TYPE_ATTRIBUTE("time", Time)                       \
     __ENUMERATE_HTML_INPUT_TYPE_ATTRIBUTE("datetime-local", LocalDateAndTime) \
-    __ENUMERATE_HTML_INPUT_TYPE_ATTRIBUTE(number, Number)                     \
-    __ENUMERATE_HTML_INPUT_TYPE_ATTRIBUTE(range, Range)                       \
-    __ENUMERATE_HTML_INPUT_TYPE_ATTRIBUTE(color, Color)                       \
-    __ENUMERATE_HTML_INPUT_TYPE_ATTRIBUTE(checkbox, Checkbox)                 \
-    __ENUMERATE_HTML_INPUT_TYPE_ATTRIBUTE(radio, RadioButton)                 \
-    __ENUMERATE_HTML_INPUT_TYPE_ATTRIBUTE(file, FileUpload)                   \
-    __ENUMERATE_HTML_INPUT_TYPE_ATTRIBUTE(submit, SubmitButton)               \
-    __ENUMERATE_HTML_INPUT_TYPE_ATTRIBUTE(image, ImageButton)                 \
-    __ENUMERATE_HTML_INPUT_TYPE_ATTRIBUTE(reset, ResetButton)                 \
-    __ENUMERATE_HTML_INPUT_TYPE_ATTRIBUTE(button, Button)
+    __ENUMERATE_HTML_INPUT_TYPE_ATTRIBUTE("number", Number)                   \
+    __ENUMERATE_HTML_INPUT_TYPE_ATTRIBUTE("range", Range)                     \
+    __ENUMERATE_HTML_INPUT_TYPE_ATTRIBUTE("color", Color)                     \
+    __ENUMERATE_HTML_INPUT_TYPE_ATTRIBUTE("checkbox", Checkbox)               \
+    __ENUMERATE_HTML_INPUT_TYPE_ATTRIBUTE("radio", RadioButton)               \
+    __ENUMERATE_HTML_INPUT_TYPE_ATTRIBUTE("file", FileUpload)                 \
+    __ENUMERATE_HTML_INPUT_TYPE_ATTRIBUTE("submit", SubmitButton)             \
+    __ENUMERATE_HTML_INPUT_TYPE_ATTRIBUTE("image", ImageButton)               \
+    __ENUMERATE_HTML_INPUT_TYPE_ATTRIBUTE("reset", ResetButton)               \
+    __ENUMERATE_HTML_INPUT_TYPE_ATTRIBUTE("button", Button)
 
 class HTMLInputElement final
     : public HTMLElement