Browse Source

LibWeb: Use the cached HTMLInputElement type within associated getters

Timothy Flynn 3 years ago
parent
commit
1a99cc4a14

+ 6 - 25
Userland/Libraries/LibWeb/HTML/HTMLInputElement.cpp

@@ -239,34 +239,15 @@ void HTMLInputElement::did_remove_attribute(FlyString const& name)
 
 String HTMLInputElement::type() const
 {
-    auto value = attribute(HTML::AttributeNames::type);
-
-#define __ENUMERATE_HTML_INPUT_TYPE_ATTRIBUTE(keyword, _) \
-    if (value.equals_ignoring_case(#keyword))             \
-        return #keyword;
-    ENUMERATE_HTML_INPUT_TYPE_ATTRIBUTES
-#undef __ENUMERATE_HTML_INPUT_TYPE_ATTRIBUTE
-
-    // The missing value default and the invalid value default are the Text state.
-    // https://html.spec.whatwg.org/multipage/input.html#the-input-element:missing-value-default
-    // https://html.spec.whatwg.org/multipage/input.html#the-input-element:invalid-value-default
-    return "text";
-}
-
-HTMLInputElement::TypeAttributeState HTMLInputElement::type_state() const
-{
-    auto value = attribute(HTML::AttributeNames::type);
-
+    switch (m_type) {
 #define __ENUMERATE_HTML_INPUT_TYPE_ATTRIBUTE(keyword, state) \
-    if (value.equals_ignoring_case(#keyword))                 \
-        return HTMLInputElement::TypeAttributeState::state;
-    ENUMERATE_HTML_INPUT_TYPE_ATTRIBUTES
+    case TypeAttributeState::state:                           \
+        return #keyword##sv;
+        ENUMERATE_HTML_INPUT_TYPE_ATTRIBUTES
 #undef __ENUMERATE_HTML_INPUT_TYPE_ATTRIBUTE
+    }
 
-    // The missing value default and the invalid value default are the Text state.
-    // https://html.spec.whatwg.org/multipage/input.html#the-input-element:missing-value-default
-    // https://html.spec.whatwg.org/multipage/input.html#the-input-element:invalid-value-default
-    return HTMLInputElement::TypeAttributeState::Text;
+    VERIFY_NOT_REACHED();
 }
 
 void HTMLInputElement::set_type(String const& type)

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

@@ -53,7 +53,7 @@ public:
     };
 
     String type() const;
-    TypeAttributeState type_state() const;
+    TypeAttributeState type_state() const { return m_type; }
     void set_type(String const&);
 
     String default_value() const { return attribute(HTML::AttributeNames::value); }