mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-07-29 04:09:13 +00:00
LibWeb/CSS: Extract CSSStyleSheet's ParsingParams code into a method
This repeated code is a bit unwieldy.
This commit is contained in:
parent
1abc628cd8
commit
c679643391
Notes:
github-actions[bot]
2025-04-09 17:47:33 +00:00
Author: https://github.com/AtkinsSJ
Commit: c679643391
Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/4285
Reviewed-by: https://github.com/tcl3 ✅
2 changed files with 13 additions and 6 deletions
|
@ -140,8 +140,7 @@ WebIDL::ExceptionOr<unsigned> CSSStyleSheet::insert_rule(StringView rule, unsign
|
||||||
return WebIDL::NotAllowedError::create(realm(), "Can't call insert_rule() on non-modifiable stylesheets."_string);
|
return WebIDL::NotAllowedError::create(realm(), "Can't call insert_rule() on non-modifiable stylesheets."_string);
|
||||||
|
|
||||||
// 3. Let parsed rule be the return value of invoking parse a rule with rule.
|
// 3. Let parsed rule be the return value of invoking parse a rule with rule.
|
||||||
auto context = !m_owning_documents_or_shadow_roots.is_empty() ? Parser::ParsingParams { (*m_owning_documents_or_shadow_roots.begin())->document() } : Parser::ParsingParams { realm() };
|
auto parsed_rule = parse_css_rule(make_parsing_params(), rule);
|
||||||
auto parsed_rule = parse_css_rule(context, rule);
|
|
||||||
|
|
||||||
// 4. If parsed rule is a syntax error, return parsed rule.
|
// 4. If parsed rule is a syntax error, return parsed rule.
|
||||||
if (!parsed_rule)
|
if (!parsed_rule)
|
||||||
|
@ -208,8 +207,7 @@ GC::Ref<WebIDL::Promise> CSSStyleSheet::replace(String text)
|
||||||
HTML::TemporaryExecutionContext execution_context { realm, HTML::TemporaryExecutionContext::CallbacksEnabled::Yes };
|
HTML::TemporaryExecutionContext execution_context { realm, HTML::TemporaryExecutionContext::CallbacksEnabled::Yes };
|
||||||
|
|
||||||
// 1. Let rules be the result of running parse a stylesheet’s contents from text.
|
// 1. Let rules be the result of running parse a stylesheet’s contents from text.
|
||||||
auto context = !m_owning_documents_or_shadow_roots.is_empty() ? Parser::ParsingParams { (*m_owning_documents_or_shadow_roots.begin())->document() } : CSS::Parser::ParsingParams { realm };
|
auto* parsed_stylesheet = parse_css_stylesheet(make_parsing_params(), text);
|
||||||
auto* parsed_stylesheet = parse_css_stylesheet(context, text);
|
|
||||||
auto& rules = parsed_stylesheet->rules();
|
auto& rules = parsed_stylesheet->rules();
|
||||||
|
|
||||||
// 2. If rules contains one or more @import rules, remove those rules from rules.
|
// 2. If rules contains one or more @import rules, remove those rules from rules.
|
||||||
|
@ -242,8 +240,7 @@ WebIDL::ExceptionOr<void> CSSStyleSheet::replace_sync(StringView text)
|
||||||
return WebIDL::NotAllowedError::create(realm(), "Can't call replaceSync() on non-modifiable stylesheets"_string);
|
return WebIDL::NotAllowedError::create(realm(), "Can't call replaceSync() on non-modifiable stylesheets"_string);
|
||||||
|
|
||||||
// 2. Let rules be the result of running parse a stylesheet’s contents from text.
|
// 2. Let rules be the result of running parse a stylesheet’s contents from text.
|
||||||
auto context = !m_owning_documents_or_shadow_roots.is_empty() ? Parser::ParsingParams { (*m_owning_documents_or_shadow_roots.begin())->document() } : CSS::Parser::ParsingParams { realm() };
|
auto* parsed_stylesheet = parse_css_stylesheet(make_parsing_params(), text);
|
||||||
auto* parsed_stylesheet = parse_css_stylesheet(context, text);
|
|
||||||
auto& rules = parsed_stylesheet->rules();
|
auto& rules = parsed_stylesheet->rules();
|
||||||
|
|
||||||
// 3. If rules contains one or more @import rules, remove those rules from rules.
|
// 3. If rules contains one or more @import rules, remove those rules from rules.
|
||||||
|
@ -426,4 +423,11 @@ bool CSSStyleSheet::has_associated_font_loader(FontLoader& font_loader) const
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Parser::ParsingParams CSSStyleSheet::make_parsing_params() const
|
||||||
|
{
|
||||||
|
if (!m_owning_documents_or_shadow_roots.is_empty())
|
||||||
|
return Parser::ParsingParams { (*m_owning_documents_or_shadow_roots.begin())->document() };
|
||||||
|
return Parser::ParsingParams { realm() };
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,6 +12,7 @@
|
||||||
#include <LibWeb/CSS/CSSRule.h>
|
#include <LibWeb/CSS/CSSRule.h>
|
||||||
#include <LibWeb/CSS/CSSRuleList.h>
|
#include <LibWeb/CSS/CSSRuleList.h>
|
||||||
#include <LibWeb/CSS/CSSStyleRule.h>
|
#include <LibWeb/CSS/CSSStyleRule.h>
|
||||||
|
#include <LibWeb/CSS/Parser/Parser.h>
|
||||||
#include <LibWeb/CSS/StyleSheet.h>
|
#include <LibWeb/CSS/StyleSheet.h>
|
||||||
#include <LibWeb/DOM/Node.h>
|
#include <LibWeb/DOM/Node.h>
|
||||||
#include <LibWeb/WebIDL/Types.h>
|
#include <LibWeb/WebIDL/Types.h>
|
||||||
|
@ -105,6 +106,8 @@ private:
|
||||||
void set_constructed(bool constructed) { m_constructed = constructed; }
|
void set_constructed(bool constructed) { m_constructed = constructed; }
|
||||||
void set_disallow_modification(bool disallow_modification) { m_disallow_modification = disallow_modification; }
|
void set_disallow_modification(bool disallow_modification) { m_disallow_modification = disallow_modification; }
|
||||||
|
|
||||||
|
Parser::ParsingParams make_parsing_params() const;
|
||||||
|
|
||||||
Optional<String> m_source_text;
|
Optional<String> m_source_text;
|
||||||
|
|
||||||
GC::Ptr<CSSRuleList> m_rules;
|
GC::Ptr<CSSRuleList> m_rules;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue