mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 23:47:45 +00:00
LibWeb: Make factory methods of CSS::CSSRuleList fallible
This commit is contained in:
parent
5601f439f9
commit
48872cd190
3 changed files with 16 additions and 14 deletions
|
@ -17,9 +17,9 @@
|
||||||
|
|
||||||
namespace Web::CSS {
|
namespace Web::CSS {
|
||||||
|
|
||||||
CSSRuleList* CSSRuleList::create(JS::Realm& realm, JS::MarkedVector<CSSRule*> const& rules)
|
WebIDL::ExceptionOr<JS::NonnullGCPtr<CSSRuleList>> CSSRuleList::create(JS::Realm& realm, JS::MarkedVector<CSSRule*> const& rules)
|
||||||
{
|
{
|
||||||
auto rule_list = realm.heap().allocate<CSSRuleList>(realm, realm).release_allocated_value_but_fixme_should_propagate_errors();
|
auto rule_list = MUST_OR_THROW_OOM(realm.heap().allocate<CSSRuleList>(realm, realm));
|
||||||
for (auto* rule : rules)
|
for (auto* rule : rules)
|
||||||
rule_list->m_rules.append(*rule);
|
rule_list->m_rules.append(*rule);
|
||||||
return rule_list;
|
return rule_list;
|
||||||
|
@ -30,9 +30,9 @@ CSSRuleList::CSSRuleList(JS::Realm& realm)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
CSSRuleList* CSSRuleList::create_empty(JS::Realm& realm)
|
WebIDL::ExceptionOr<JS::NonnullGCPtr<CSSRuleList>> CSSRuleList::create_empty(JS::Realm& realm)
|
||||||
{
|
{
|
||||||
return realm.heap().allocate<CSSRuleList>(realm, realm).release_allocated_value_but_fixme_should_propagate_errors();
|
return MUST_OR_THROW_OOM(realm.heap().allocate<CSSRuleList>(realm, realm));
|
||||||
}
|
}
|
||||||
|
|
||||||
JS::ThrowCompletionOr<void> CSSRuleList::initialize(JS::Realm& realm)
|
JS::ThrowCompletionOr<void> CSSRuleList::initialize(JS::Realm& realm)
|
||||||
|
|
|
@ -23,8 +23,8 @@ class CSSRuleList : public Bindings::LegacyPlatformObject {
|
||||||
WEB_PLATFORM_OBJECT(CSSRuleList, Bindings::LegacyPlatformObject);
|
WEB_PLATFORM_OBJECT(CSSRuleList, Bindings::LegacyPlatformObject);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
static CSSRuleList* create(JS::Realm&, JS::MarkedVector<CSSRule*> const&);
|
static WebIDL::ExceptionOr<JS::NonnullGCPtr<CSSRuleList>> create(JS::Realm&, JS::MarkedVector<CSSRule*> const&);
|
||||||
static CSSRuleList* create_empty(JS::Realm&);
|
static WebIDL::ExceptionOr<JS::NonnullGCPtr<CSSRuleList>> create_empty(JS::Realm&);
|
||||||
|
|
||||||
~CSSRuleList() = default;
|
~CSSRuleList() = default;
|
||||||
|
|
||||||
|
|
|
@ -127,8 +127,8 @@ CSSStyleSheet* Parser::parse_as_css_stylesheet(Optional<AK::URL> location)
|
||||||
rules.append(rule);
|
rules.append(rule);
|
||||||
}
|
}
|
||||||
|
|
||||||
auto* rule_list = CSSRuleList::create(m_context.realm(), rules);
|
auto rule_list = CSSRuleList::create(m_context.realm(), rules).release_value_but_fixme_should_propagate_errors();
|
||||||
return CSSStyleSheet::create(m_context.realm(), *rule_list, *MediaList::create(m_context.realm(), {}), move(location));
|
return CSSStyleSheet::create(m_context.realm(), rule_list, *MediaList::create(m_context.realm(), {}), move(location));
|
||||||
}
|
}
|
||||||
|
|
||||||
Optional<SelectorList> Parser::parse_as_selector(SelectorParsingMode parsing_mode)
|
Optional<SelectorList> Parser::parse_as_selector(SelectorParsingMode parsing_mode)
|
||||||
|
@ -3057,8 +3057,8 @@ CSSRule* Parser::convert_to_rule(NonnullRefPtr<Rule> rule)
|
||||||
if (auto* child_rule = convert_to_rule(raw_rule))
|
if (auto* child_rule = convert_to_rule(raw_rule))
|
||||||
child_rules.append(child_rule);
|
child_rules.append(child_rule);
|
||||||
}
|
}
|
||||||
auto* rule_list = CSSRuleList::create(m_context.realm(), child_rules);
|
auto rule_list = CSSRuleList::create(m_context.realm(), child_rules).release_value_but_fixme_should_propagate_errors();
|
||||||
return CSSMediaRule::create(m_context.realm(), *MediaList::create(m_context.realm(), move(media_query_list)), *rule_list).release_value_but_fixme_should_propagate_errors();
|
return CSSMediaRule::create(m_context.realm(), *MediaList::create(m_context.realm(), move(media_query_list)), rule_list).release_value_but_fixme_should_propagate_errors();
|
||||||
}
|
}
|
||||||
if (rule->at_rule_name().equals_ignoring_case("supports"sv)) {
|
if (rule->at_rule_name().equals_ignoring_case("supports"sv)) {
|
||||||
auto supports_tokens = TokenStream { rule->prelude() };
|
auto supports_tokens = TokenStream { rule->prelude() };
|
||||||
|
@ -3081,8 +3081,8 @@ CSSRule* Parser::convert_to_rule(NonnullRefPtr<Rule> rule)
|
||||||
child_rules.append(child_rule);
|
child_rules.append(child_rule);
|
||||||
}
|
}
|
||||||
|
|
||||||
auto* rule_list = CSSRuleList::create(m_context.realm(), child_rules);
|
auto rule_list = CSSRuleList::create(m_context.realm(), child_rules).release_value_but_fixme_should_propagate_errors();
|
||||||
return CSSSupportsRule::create(m_context.realm(), supports.release_nonnull(), *rule_list);
|
return CSSSupportsRule::create(m_context.realm(), supports.release_nonnull(), rule_list);
|
||||||
}
|
}
|
||||||
|
|
||||||
// FIXME: More at rules!
|
// FIXME: More at rules!
|
||||||
|
@ -7396,8 +7396,10 @@ namespace Web {
|
||||||
|
|
||||||
CSS::CSSStyleSheet* parse_css_stylesheet(CSS::Parser::ParsingContext const& context, StringView css, Optional<AK::URL> location)
|
CSS::CSSStyleSheet* parse_css_stylesheet(CSS::Parser::ParsingContext const& context, StringView css, Optional<AK::URL> location)
|
||||||
{
|
{
|
||||||
if (css.is_empty())
|
if (css.is_empty()) {
|
||||||
return CSS::CSSStyleSheet::create(context.realm(), *CSS::CSSRuleList::create_empty(context.realm()), *CSS::MediaList::create(context.realm(), {}), location);
|
auto rule_list = CSS::CSSRuleList::create_empty(context.realm()).release_value_but_fixme_should_propagate_errors();
|
||||||
|
return CSS::CSSStyleSheet::create(context.realm(), rule_list, *CSS::MediaList::create(context.realm(), {}), location);
|
||||||
|
}
|
||||||
CSS::Parser::Parser parser(context, css);
|
CSS::Parser::Parser parser(context, css);
|
||||||
return parser.parse_as_css_stylesheet(location);
|
return parser.parse_as_css_stylesheet(location);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue