1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-27 10:27:35 +00:00

LibJS+Everywhere: Allow Cell::initialize overrides to throw OOM errors

Note that as of this commit, there aren't any such throwers, and the
call site in Heap::allocate will drop exceptions on the floor. This
commit only serves to change the declaration of the overrides, make sure
they return an empty value, and to propagate OOM errors frm their base
initialize invocations.
This commit is contained in:
Timothy Flynn 2023-01-28 12:33:35 -05:00 committed by Linus Groh
parent 1c1b902a6a
commit 2692db8699
694 changed files with 1774 additions and 1065 deletions

View file

@ -22,10 +22,12 @@ void CSSConditionRule::for_each_effective_style_rule(Function<void(CSSStyleRule
CSSGroupingRule::for_each_effective_style_rule(callback);
}
void CSSConditionRule::initialize(JS::Realm& realm)
JS::ThrowCompletionOr<void> CSSConditionRule::initialize(JS::Realm& realm)
{
Base::initialize(realm);
MUST_OR_THROW_OOM(Base::initialize(realm));
set_prototype(&Bindings::ensure_web_prototype<Bindings::CSSConditionRulePrototype>(realm, "CSSConditionRule"));
return {};
}
}

View file

@ -27,7 +27,7 @@ public:
protected:
CSSConditionRule(JS::Realm&, CSSRuleList&);
virtual void initialize(JS::Realm&) override;
virtual JS::ThrowCompletionOr<void> initialize(JS::Realm&) override;
};
}

View file

@ -23,10 +23,12 @@ CSSFontFaceRule::CSSFontFaceRule(JS::Realm& realm, FontFace&& font_face)
{
}
void CSSFontFaceRule::initialize(JS::Realm& realm)
JS::ThrowCompletionOr<void> CSSFontFaceRule::initialize(JS::Realm& realm)
{
Base::initialize(realm);
MUST_OR_THROW_OOM(Base::initialize(realm));
set_prototype(&Bindings::ensure_web_prototype<Bindings::CSSFontFaceRulePrototype>(realm, "CSSFontFaceRule"));
return {};
}
CSSStyleDeclaration* CSSFontFaceRule::style()

View file

@ -28,7 +28,7 @@ public:
private:
CSSFontFaceRule(JS::Realm&, FontFace&&);
virtual void initialize(JS::Realm&) override;
virtual JS::ThrowCompletionOr<void> initialize(JS::Realm&) override;
virtual DeprecatedString serialized() const override;
FontFace m_font_face;

View file

@ -22,10 +22,12 @@ CSSGroupingRule::CSSGroupingRule(JS::Realm& realm, CSSRuleList& rules)
rule.set_parent_rule(this);
}
void CSSGroupingRule::initialize(JS::Realm& realm)
JS::ThrowCompletionOr<void> CSSGroupingRule::initialize(JS::Realm& realm)
{
Base::initialize(realm);
MUST_OR_THROW_OOM(Base::initialize(realm));
set_prototype(&Bindings::ensure_web_prototype<Bindings::CSSGroupingRulePrototype>(realm, "CSSGroupingRule"));
return {};
}
void CSSGroupingRule::visit_edges(Cell::Visitor& visitor)

View file

@ -33,7 +33,7 @@ public:
protected:
CSSGroupingRule(JS::Realm&, CSSRuleList&);
virtual void initialize(JS::Realm&) override;
virtual JS::ThrowCompletionOr<void> initialize(JS::Realm&) override;
virtual void visit_edges(Cell::Visitor&) override;
private:

View file

@ -39,10 +39,12 @@ CSSImportRule::CSSImportRule(AK::URL url, DOM::Document& document)
set_resource(ResourceLoader::the().load_resource(Resource::Type::Generic, request));
}
void CSSImportRule::initialize(JS::Realm& realm)
JS::ThrowCompletionOr<void> CSSImportRule::initialize(JS::Realm& realm)
{
Base::initialize(realm);
MUST_OR_THROW_OOM(Base::initialize(realm));
set_prototype(&Bindings::ensure_web_prototype<Bindings::CSSImportRulePrototype>(realm, "CSSImportRule"));
return {};
}
void CSSImportRule::visit_edges(Cell::Visitor& visitor)

View file

@ -40,7 +40,7 @@ public:
private:
CSSImportRule(AK::URL, DOM::Document&);
virtual void initialize(JS::Realm&) override;
virtual JS::ThrowCompletionOr<void> initialize(JS::Realm&) override;
virtual void visit_edges(Cell::Visitor&) override;
virtual DeprecatedString serialized() const override;

View file

@ -23,10 +23,12 @@ CSSMediaRule::CSSMediaRule(JS::Realm& realm, MediaList& media, CSSRuleList& rule
{
}
void CSSMediaRule::initialize(JS::Realm& realm)
JS::ThrowCompletionOr<void> CSSMediaRule::initialize(JS::Realm& realm)
{
Base::initialize(realm);
MUST_OR_THROW_OOM(Base::initialize(realm));
set_prototype(&Bindings::ensure_web_prototype<Bindings::CSSMediaRulePrototype>(realm, "CSSMediaRule"));
return {};
}
void CSSMediaRule::visit_edges(Cell::Visitor& visitor)

View file

@ -35,7 +35,7 @@ public:
private:
CSSMediaRule(JS::Realm&, MediaList&, CSSRuleList&);
virtual void initialize(JS::Realm&) override;
virtual JS::ThrowCompletionOr<void> initialize(JS::Realm&) override;
virtual void visit_edges(Cell::Visitor&) override;
virtual DeprecatedString serialized() const override;

View file

@ -35,10 +35,12 @@ CSSRuleList* CSSRuleList::create_empty(JS::Realm& realm)
return realm.heap().allocate<CSSRuleList>(realm, realm);
}
void CSSRuleList::initialize(JS::Realm& realm)
JS::ThrowCompletionOr<void> CSSRuleList::initialize(JS::Realm& realm)
{
Base::initialize(realm);
MUST_OR_THROW_OOM(Base::initialize(realm));
set_prototype(&Bindings::ensure_web_prototype<Bindings::CSSRuleListPrototype>(realm, "CSSRuleList"));
return {};
}
void CSSRuleList::visit_edges(Cell::Visitor& visitor)

View file

@ -66,7 +66,7 @@ public:
private:
explicit CSSRuleList(JS::Realm&);
virtual void initialize(JS::Realm&) override;
virtual JS::ThrowCompletionOr<void> initialize(JS::Realm&) override;
virtual void visit_edges(Cell::Visitor&) override;
Vector<CSSRule&> m_rules;

View file

@ -23,10 +23,12 @@ CSSStyleRule::CSSStyleRule(JS::Realm& realm, NonnullRefPtrVector<Selector>&& sel
{
}
void CSSStyleRule::initialize(JS::Realm& realm)
JS::ThrowCompletionOr<void> CSSStyleRule::initialize(JS::Realm& realm)
{
Base::initialize(realm);
MUST_OR_THROW_OOM(Base::initialize(realm));
set_prototype(&Bindings::ensure_web_prototype<Bindings::CSSStyleRulePrototype>(realm, "CSSStyleRule"));
return {};
}
void CSSStyleRule::visit_edges(Cell::Visitor& visitor)

View file

@ -36,7 +36,7 @@ public:
private:
CSSStyleRule(JS::Realm&, NonnullRefPtrVector<Selector>&&, CSSStyleDeclaration&);
virtual void initialize(JS::Realm&) override;
virtual JS::ThrowCompletionOr<void> initialize(JS::Realm&) override;
virtual void visit_edges(Cell::Visitor&) override;
virtual DeprecatedString serialized() const override;

View file

@ -30,10 +30,12 @@ CSSStyleSheet::CSSStyleSheet(JS::Realm& realm, CSSRuleList& rules, MediaList& me
rule.set_parent_style_sheet(this);
}
void CSSStyleSheet::initialize(JS::Realm& realm)
JS::ThrowCompletionOr<void> CSSStyleSheet::initialize(JS::Realm& realm)
{
Base::initialize(realm);
MUST_OR_THROW_OOM(Base::initialize(realm));
set_prototype(&Bindings::ensure_web_prototype<Bindings::CSSStyleSheetPrototype>(realm, "CSSStyleSheet"));
return {};
}
void CSSStyleSheet::visit_edges(Cell::Visitor& visitor)

View file

@ -52,7 +52,7 @@ public:
private:
CSSStyleSheet(JS::Realm&, CSSRuleList&, MediaList&, Optional<AK::URL> location);
virtual void initialize(JS::Realm&) override;
virtual JS::ThrowCompletionOr<void> initialize(JS::Realm&) override;
virtual void visit_edges(Cell::Visitor&) override;
CSSRuleList* m_rules { nullptr };

View file

@ -22,10 +22,12 @@ CSSSupportsRule::CSSSupportsRule(JS::Realm& realm, NonnullRefPtr<Supports>&& sup
{
}
void CSSSupportsRule::initialize(JS::Realm& realm)
JS::ThrowCompletionOr<void> CSSSupportsRule::initialize(JS::Realm& realm)
{
Base::initialize(realm);
MUST_OR_THROW_OOM(Base::initialize(realm));
set_prototype(&Bindings::ensure_web_prototype<Bindings::CSSSupportsRulePrototype>(realm, "CSSSupportsRule"));
return {};
}
DeprecatedString CSSSupportsRule::condition_text() const

View file

@ -33,7 +33,7 @@ public:
private:
CSSSupportsRule(JS::Realm&, NonnullRefPtr<Supports>&&, CSSRuleList&);
virtual void initialize(JS::Realm&) override;
virtual JS::ThrowCompletionOr<void> initialize(JS::Realm&) override;
virtual DeprecatedString serialized() const override;
NonnullRefPtr<Supports> m_supports;

View file

@ -23,10 +23,12 @@ MediaList::MediaList(JS::Realm& realm, NonnullRefPtrVector<MediaQuery>&& media)
{
}
void MediaList::initialize(JS::Realm& realm)
JS::ThrowCompletionOr<void> MediaList::initialize(JS::Realm& realm)
{
Base::initialize(realm);
MUST_OR_THROW_OOM(Base::initialize(realm));
set_prototype(&Bindings::ensure_web_prototype<Bindings::MediaListPrototype>(realm, "MediaList"));
return {};
}
// https://www.w3.org/TR/cssom-1/#dom-medialist-mediatext

View file

@ -39,7 +39,7 @@ public:
private:
MediaList(JS::Realm&, NonnullRefPtrVector<MediaQuery>&&);
virtual void initialize(JS::Realm&) override;
virtual JS::ThrowCompletionOr<void> initialize(JS::Realm&) override;
NonnullRefPtrVector<MediaQuery> m_media;
};

View file

@ -28,10 +28,12 @@ MediaQueryList::MediaQueryList(DOM::Document& document, NonnullRefPtrVector<Medi
evaluate();
}
void MediaQueryList::initialize(JS::Realm& realm)
JS::ThrowCompletionOr<void> MediaQueryList::initialize(JS::Realm& realm)
{
Base::initialize(realm);
MUST_OR_THROW_OOM(Base::initialize(realm));
set_prototype(&Bindings::ensure_web_prototype<Bindings::MediaQueryListPrototype>(realm, "MediaQueryList"));
return {};
}
void MediaQueryList::visit_edges(Cell::Visitor& visitor)

View file

@ -34,7 +34,7 @@ public:
private:
MediaQueryList(DOM::Document&, NonnullRefPtrVector<MediaQuery>&&);
virtual void initialize(JS::Realm&) override;
virtual JS::ThrowCompletionOr<void> initialize(JS::Realm&) override;
virtual void visit_edges(Cell::Visitor&) override;
JS::NonnullGCPtr<DOM::Document> m_document;

View file

@ -24,10 +24,12 @@ MediaQueryListEvent::MediaQueryListEvent(JS::Realm& realm, DeprecatedFlyString c
MediaQueryListEvent::~MediaQueryListEvent() = default;
void MediaQueryListEvent::initialize(JS::Realm& realm)
JS::ThrowCompletionOr<void> MediaQueryListEvent::initialize(JS::Realm& realm)
{
Base::initialize(realm);
MUST_OR_THROW_OOM(Base::initialize(realm));
set_prototype(&Bindings::ensure_web_prototype<Bindings::MediaQueryListEventPrototype>(realm, "MediaQueryListEvent"));
return {};
}
}

View file

@ -29,7 +29,7 @@ public:
private:
MediaQueryListEvent(JS::Realm&, DeprecatedFlyString const& event_name, MediaQueryListEventInit const& event_init);
virtual void initialize(JS::Realm&) override;
virtual JS::ThrowCompletionOr<void> initialize(JS::Realm&) override;
DeprecatedString m_media;
bool m_matches;

View file

@ -24,10 +24,12 @@ Screen::Screen(HTML::Window& window)
{
}
void Screen::initialize(JS::Realm& realm)
JS::ThrowCompletionOr<void> Screen::initialize(JS::Realm& realm)
{
Base::initialize(realm);
MUST_OR_THROW_OOM(Base::initialize(realm));
set_prototype(&Bindings::ensure_web_prototype<Bindings::ScreenPrototype>(realm, "Screen"));
return {};
}
void Screen::visit_edges(Cell::Visitor& visitor)

View file

@ -29,7 +29,7 @@ public:
private:
explicit Screen(HTML::Window&);
virtual void initialize(JS::Realm&) override;
virtual JS::ThrowCompletionOr<void> initialize(JS::Realm&) override;
virtual void visit_edges(Cell::Visitor&) override;
HTML::Window const& window() const { return *m_window; }

View file

@ -57,10 +57,12 @@ StyleSheetList::StyleSheetList(DOM::Document& document)
{
}
void StyleSheetList::initialize(JS::Realm& realm)
JS::ThrowCompletionOr<void> StyleSheetList::initialize(JS::Realm& realm)
{
Base::initialize(realm);
MUST_OR_THROW_OOM(Base::initialize(realm));
set_prototype(&Bindings::ensure_web_prototype<Bindings::StyleSheetListPrototype>(realm, "StyleSheetList"));
return {};
}
void StyleSheetList::visit_edges(Cell::Visitor& visitor)

View file

@ -41,7 +41,7 @@ public:
private:
explicit StyleSheetList(DOM::Document&);
virtual void initialize(JS::Realm&) override;
virtual JS::ThrowCompletionOr<void> initialize(JS::Realm&) override;
virtual void visit_edges(Cell::Visitor&) override;
void sort_sheets();