srctree

Robin Linden parent 8d132b42 2126eba4
html2: Fix <style> text in AfterHead being dropped

inlinesplit
html2/parser_states.cpp added: 10, removed: 4, total 6
@@ -467,9 +467,9 @@ std::optional<InsertionMode> AfterHead::process(IActions &a, html2::Token const
// Parse error.
a.push_head_as_current_open_element();
auto mode_override = current_insertion_mode_override(a, AfterHead{});
InHead{}.process(mode_override, token);
auto new_state = InHead{}.process(mode_override, token);
a.remove_from_open_elements("head");
return {};
return new_state;
}
 
if (start->tag_name == "head") {
 
html2/parser_states_test.cpp added: 10, removed: 4, total 6
@@ -366,6 +366,12 @@ void after_head_tests() {
auto res = parse("<head></head><frameset>", {});
expect_eq(res.document.html(), dom::Element{"html", {}, {dom::Element{"head"}, dom::Element{"frameset"}}});
});
 
etest::test("AfterHead: <style>p { color: green; }", [] {
auto res = parse("<head></head><style>p { color: green; }</style>", {});
auto style = dom::Element{"style", {}, {dom::Text{"p { color: green; }"}}};
expect_eq(res.document.html(), dom::Element{"html", {}, {dom::Element{"head", {}, {std::move(style)}}}});
});
}
 
void in_frameset_tests() {