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

LibHTML: Make the CSS and HTML parsers take StringViews

This allows us to avoid unnecessary making unnecessary String copies of
all the source text.
This commit is contained in:
Andreas Kling 2019-10-07 19:11:33 +02:00
parent 71e8ddcd1c
commit edbf09ea29
6 changed files with 10 additions and 10 deletions

View file

@ -27,7 +27,7 @@ void HTMLLinkElement::inserted_into(Node&)
return;
}
auto data = file->read_all();
auto sheet = parse_css(String::copy(data));
auto sheet = parse_css(data);
if (!sheet) {
dbg() << "Failed to parse " << url.to_string();

View file

@ -178,7 +178,7 @@ void HtmlView::load(const URL& url)
return;
}
String html = String::copy(f->read_all());
auto html = f->read_all();
auto document = parse_html(html, url);
document->normalize();

View file

@ -301,16 +301,16 @@ private:
int index = 0;
String css;
StringView css;
};
NonnullRefPtr<StyleSheet> parse_css(const String& css)
NonnullRefPtr<StyleSheet> parse_css(const StringView& css)
{
CSSParser parser(css);
return parser.parse_sheet();
}
NonnullRefPtr<StyleDeclaration> parse_css_declaration(const String& css)
NonnullRefPtr<StyleDeclaration> parse_css_declaration(const StringView& css)
{
CSSParser parser(css);
return parser.parse_standalone_declaration();

View file

@ -3,6 +3,6 @@
#include <AK/NonnullRefPtr.h>
#include <LibHTML/CSS/StyleSheet.h>
NonnullRefPtr<StyleSheet> parse_css(const String&);
NonnullRefPtr<StyleDeclaration> parse_css_declaration(const String&);
NonnullRefPtr<StyleSheet> parse_css(const StringView&);
NonnullRefPtr<StyleDeclaration> parse_css_declaration(const StringView&);

View file

@ -57,7 +57,7 @@ static bool is_valid_in_attribute_name(char ch)
return isalnum(ch) || ch == '_' || ch == '-';
}
static bool is_self_closing_tag(const String& tag_name)
static bool is_self_closing_tag(const StringView& tag_name)
{
return tag_name == "area"
|| tag_name == "base"
@ -75,7 +75,7 @@ static bool is_self_closing_tag(const String& tag_name)
|| tag_name == "wbr";
}
NonnullRefPtr<Document> parse_html(const String& html, const URL& url)
NonnullRefPtr<Document> parse_html(const StringView& html, const URL& url)
{
NonnullRefPtrVector<ParentNode> node_stack;

View file

@ -3,5 +3,5 @@
#include <AK/NonnullRefPtr.h>
#include <LibHTML/DOM/Document.h>
NonnullRefPtr<Document> parse_html(const String&, const URL& = URL());
NonnullRefPtr<Document> parse_html(const StringView&, const URL& = URL());