1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 18:28:12 +00:00

LibWeb: Parse "input" tags during the "in body" insertion mode

This commit is contained in:
Andreas Kling 2020-05-28 12:18:46 +02:00
parent 7aa7a2078f
commit 772b51038e
4 changed files with 26 additions and 0 deletions

View file

@ -32,6 +32,7 @@ namespace AttributeNames {
FlyString id;
FlyString class_;
FlyString type;
void initialize()
{
@ -40,6 +41,7 @@ void initialize()
return;
id = "id";
class_ = "class";
type = "type";
s_initialized = true;
}

View file

@ -36,6 +36,7 @@ void initialize();
extern FlyString id;
extern FlyString class_;
extern FlyString type;
}
}

View file

@ -751,6 +751,18 @@ void HTMLDocumentParser::handle_in_body(HTMLToken& token)
return;
}
if (token.is_start_tag() && token.tag_name() == "input") {
reconstruct_the_active_formatting_elements();
insert_html_element(token);
m_stack_of_open_elements.pop();
token.acknowledge_self_closing_flag_if_set();
auto type_attribute = token.attribute(HTML::AttributeNames::type);
if (type_attribute.is_null() || type_attribute != "hidden") {
m_frameset_ok = false;
}
return;
}
if (token.is_start_tag()) {
reconstruct_the_active_formatting_elements();
insert_html_element(token);

View file

@ -26,6 +26,7 @@
#pragma once
#include <AK/FlyString.h>
#include <AK/String.h>
#include <AK/StringBuilder.h>
#include <AK/Types.h>
@ -104,6 +105,16 @@ public:
m_tag.self_closing_acknowledged = true;
}
StringView attribute(const FlyString& attribute_name)
{
ASSERT(is_start_tag() || is_end_tag());
for (auto& attribute : m_tag.attributes) {
if (attribute_name == attribute.name_builder.string_view())
return attribute.value_builder.string_view();
}
return {};
}
Type type() const { return m_type; }
String to_string() const;