mirror of
https://github.com/SerenityOS/serenity
synced 2024-07-23 02:55:15 +00:00
LibWeb: Port HTMLToken prefix and namespace to Optional<FlyString>
Previously these were DeprecatedStrings that contained a null state. After the null state was removed, the nullability of these members was broken. This doesn't seem to cause any problems currently as the HTML parser is not inserting attributes with their full qualified name, but after we fix that problem, this bug surfaces.
This commit is contained in:
parent
fcde808308
commit
8fbf72b5bf
|
@ -2298,21 +2298,22 @@ void HTMLParser::adjust_svg_attributes(HTMLToken& token)
|
|||
token.adjust_attribute_name("zoomandpan"_fly_string, "zoomAndPan"_fly_string);
|
||||
}
|
||||
|
||||
// https://html.spec.whatwg.org/multipage/parsing.html#adjust-foreign-attributes
|
||||
void HTMLParser::adjust_foreign_attributes(HTMLToken& token)
|
||||
{
|
||||
token.adjust_foreign_attribute("xlink:actuate"_fly_string, "xlink", "actuate"_fly_string, Namespace::XLink);
|
||||
token.adjust_foreign_attribute("xlink:arcrole"_fly_string, "xlink", "arcrole"_fly_string, Namespace::XLink);
|
||||
token.adjust_foreign_attribute("xlink:href"_fly_string, "xlink", "href"_fly_string, Namespace::XLink);
|
||||
token.adjust_foreign_attribute("xlink:role"_fly_string, "xlink", "role"_fly_string, Namespace::XLink);
|
||||
token.adjust_foreign_attribute("xlink:show"_fly_string, "xlink", "show"_fly_string, Namespace::XLink);
|
||||
token.adjust_foreign_attribute("xlink:title"_fly_string, "xlink", "title"_fly_string, Namespace::XLink);
|
||||
token.adjust_foreign_attribute("xlink:type"_fly_string, "xlink", "type"_fly_string, Namespace::XLink);
|
||||
token.adjust_foreign_attribute("xlink:actuate"_fly_string, "xlink"_fly_string, "actuate"_fly_string, Namespace::XLink);
|
||||
token.adjust_foreign_attribute("xlink:arcrole"_fly_string, "xlink"_fly_string, "arcrole"_fly_string, Namespace::XLink);
|
||||
token.adjust_foreign_attribute("xlink:href"_fly_string, "xlink"_fly_string, "href"_fly_string, Namespace::XLink);
|
||||
token.adjust_foreign_attribute("xlink:role"_fly_string, "xlink"_fly_string, "role"_fly_string, Namespace::XLink);
|
||||
token.adjust_foreign_attribute("xlink:show"_fly_string, "xlink"_fly_string, "show"_fly_string, Namespace::XLink);
|
||||
token.adjust_foreign_attribute("xlink:title"_fly_string, "xlink"_fly_string, "title"_fly_string, Namespace::XLink);
|
||||
token.adjust_foreign_attribute("xlink:type"_fly_string, "xlink"_fly_string, "type"_fly_string, Namespace::XLink);
|
||||
|
||||
token.adjust_foreign_attribute("xml:lang"_fly_string, "xml", "lang"_fly_string, Namespace::XML);
|
||||
token.adjust_foreign_attribute("xml:space"_fly_string, "xml", "space"_fly_string, Namespace::XML);
|
||||
token.adjust_foreign_attribute("xml:lang"_fly_string, "xml"_fly_string, "lang"_fly_string, Namespace::XML);
|
||||
token.adjust_foreign_attribute("xml:space"_fly_string, "xml"_fly_string, "space"_fly_string, Namespace::XML);
|
||||
|
||||
token.adjust_foreign_attribute("xmlns"_fly_string, "", "xmlns"_fly_string, Namespace::XMLNS);
|
||||
token.adjust_foreign_attribute("xmlns:xlink"_fly_string, "xmlns", "xlink"_fly_string, Namespace::XMLNS);
|
||||
token.adjust_foreign_attribute("xmlns"_fly_string, {}, "xmlns"_fly_string, Namespace::XMLNS);
|
||||
token.adjust_foreign_attribute("xmlns:xlink"_fly_string, "xmlns"_fly_string, "xlink"_fly_string, Namespace::XMLNS);
|
||||
}
|
||||
|
||||
void HTMLParser::increment_script_nesting_level()
|
||||
|
|
|
@ -150,7 +150,7 @@ private:
|
|||
void adjust_mathml_attributes(HTMLToken&);
|
||||
void adjust_svg_tag_names(HTMLToken&);
|
||||
void adjust_svg_attributes(HTMLToken&);
|
||||
void adjust_foreign_attributes(HTMLToken&);
|
||||
static void adjust_foreign_attributes(HTMLToken&);
|
||||
|
||||
enum AdoptionAgencyAlgorithmOutcome {
|
||||
DoNothing,
|
||||
|
|
|
@ -42,9 +42,9 @@ public:
|
|||
};
|
||||
|
||||
struct Attribute {
|
||||
DeprecatedString prefix;
|
||||
Optional<FlyString> prefix;
|
||||
FlyString local_name;
|
||||
FlyString namespace_;
|
||||
Optional<FlyString> namespace_;
|
||||
String value;
|
||||
Position name_start_position;
|
||||
Position value_start_position;
|
||||
|
@ -290,7 +290,7 @@ public:
|
|||
});
|
||||
}
|
||||
|
||||
void adjust_foreign_attribute(FlyString const& old_name, DeprecatedFlyString const& prefix, FlyString const& local_name, FlyString const& namespace_)
|
||||
void adjust_foreign_attribute(FlyString const& old_name, Optional<FlyString> const& prefix, FlyString const& local_name, Optional<FlyString> const& namespace_)
|
||||
{
|
||||
VERIFY(is_start_tag() || is_end_tag());
|
||||
for_each_attribute([&](Attribute& attribute) {
|
||||
|
|
Loading…
Reference in a new issue