ladybird/Userland/Libraries/LibWeb/CSS
Andreas Kling cfe663435e LibWeb+LibJS: Don't lazily construct web prototypes in cell constructors
It's not safe to allocate from the GC heap while in the constructor of a
GC heap cell. (Because if this ends up triggering a collection, we may
end up trying to call through an uninitialized vtable).

This was already done safely in the initialize() virtual in much of
LibJS and LibWeb. This patch moves the logic for prototypes, mixins,
and CSSStyleDeclaration as well.

Fixes a long-standing GC crash that was pretty easy to reproduce by
refreshing https://vercel.com/
2023-05-21 14:23:58 +02:00
..
Parser LibWeb: Change implicit background-size height to auto 2023-05-14 13:02:32 +02:00
StyleValues LibWeb: Use box sampling instead of bilinear scaling when downscaling 2023-05-19 18:36:36 +02:00
SyntaxHighlighter LibGfx+Userland: Make TextAttributes::underline_style optional 2023-03-15 14:55:49 +01:00
Angle.cpp LibWeb: Remove CalculatedStyleValue from Angle 2023-03-30 21:29:50 +02:00
Angle.h LibWeb: Expose type and raw values of basic CSS types 2023-04-13 09:53:47 +02:00
BackdropFilter.h LibWeb: Split FilterValueListStyleValue out of StyleValue.{h,cpp} 2023-03-25 16:56:04 +00:00
CalculatedOr.cpp LibWeb: Introduce CalculatedOr type 2023-03-30 21:29:50 +02:00
CalculatedOr.h LibWeb: Split CalculatedStyleValue out of StyleValue.{h,cpp} 2023-03-30 21:29:50 +02:00
Clip.cpp LibWeb: Move CSS::EdgeRect into its own files 2023-03-30 21:29:50 +02:00
Clip.h LibWeb: Move CSS::EdgeRect into its own files 2023-03-30 21:29:50 +02:00
ComputedValues.h LibWeb: Implement SVG opacity properties 2023-05-20 08:52:19 +02:00
CSS.cpp LibWeb: Propagate errors from parse_css_value and property_initial_value 2023-05-06 08:07:28 +02:00
CSS.h LibWeb: Port the CSS namespace to IDL 2023-03-15 12:48:25 -04:00
CSS.idl LibWeb: Port the CSS namespace to IDL 2023-03-15 12:48:25 -04:00
CSSConditionRule.cpp LibJS+Everywhere: Allow Cell::initialize overrides to throw OOM errors 2023-01-29 00:02:45 +00:00
CSSConditionRule.h LibJS+Everywhere: Allow Cell::initialize overrides to throw OOM errors 2023-01-29 00:02:45 +00:00
CSSConditionRule.idl
CSSFontFaceRule.cpp LibWeb: Make factory method of CSS::CSSFontFaceRule fallible 2023-02-18 00:52:47 +01:00
CSSFontFaceRule.h LibWeb: Make factory method of CSS::CSSFontFaceRule fallible 2023-02-18 00:52:47 +01:00
CSSFontFaceRule.idl
CSSGroupingRule.cpp LibJS+LibWeb: Wrap raw JS::Cell*/& fields in GCPtr/NonnullGCPtr 2023-03-15 08:48:49 +01:00
CSSGroupingRule.h LibJS+LibWeb: Wrap raw JS::Cell*/& fields in GCPtr/NonnullGCPtr 2023-03-15 08:48:49 +01:00
CSSGroupingRule.idl
CSSImportRule.cpp LibWeb: Don't include CSS/StyleComputer.h from Element.h and Document.h 2023-05-08 09:29:44 +02:00
CSSImportRule.h LibWeb: Actually visit rules and media queries in imported style sheets 2023-03-30 16:54:15 +02:00
CSSImportRule.idl
CSSMediaRule.cpp LibJS+LibWeb: Wrap raw JS::Cell*/& fields in GCPtr/NonnullGCPtr 2023-03-15 08:48:49 +01:00
CSSMediaRule.h LibJS+LibWeb: Wrap raw JS::Cell*/& fields in GCPtr/NonnullGCPtr 2023-03-15 08:48:49 +01:00
CSSMediaRule.idl
CSSRule.cpp
CSSRule.h
CSSRule.idl
CSSRuleList.cpp LibWeb: Actually visit rules and media queries in imported style sheets 2023-03-30 16:54:15 +02:00
CSSRuleList.h LibJS+LibWeb: Wrap raw JS::Cell*/& fields in GCPtr/NonnullGCPtr 2023-03-15 08:48:49 +01:00
CSSRuleList.idl
CSSStyleDeclaration.cpp LibWeb+LibJS: Don't lazily construct web prototypes in cell constructors 2023-05-21 14:23:58 +02:00
CSSStyleDeclaration.h LibWeb+LibJS: Don't lazily construct web prototypes in cell constructors 2023-05-21 14:23:58 +02:00
CSSStyleDeclaration.idl LibIDL: Also parse extended attributes after 'optional' 2023-03-05 21:59:16 +00:00
CSSStyleRule.cpp LibJS+LibWeb: Wrap raw JS::Cell*/& fields in GCPtr/NonnullGCPtr 2023-03-15 08:48:49 +01:00
CSSStyleRule.h LibJS+LibWeb: Wrap raw JS::Cell*/& fields in GCPtr/NonnullGCPtr 2023-03-15 08:48:49 +01:00
CSSStyleRule.idl
CSSStyleSheet.cpp LibWeb: Don't include CSS/StyleComputer.h from Element.h and Document.h 2023-05-08 09:29:44 +02:00
CSSStyleSheet.h LibJS+LibWeb: Wrap raw JS::Cell*/& fields in GCPtr/NonnullGCPtr 2023-03-15 08:48:49 +01:00
CSSStyleSheet.idl
CSSSupportsRule.cpp LibWeb: Remove CSS::Parser::ParsingContext's default constructor 2023-03-07 11:51:12 +00:00
CSSSupportsRule.h Everywhere: Remove NonnullRefPtr.h includes 2023-03-06 23:46:35 +01:00
CSSSupportsRule.idl
Default.css LibWeb: Add scaleable checkboxes (with theme/accent-color support) 2023-03-23 08:27:51 +00:00
Display.cpp LibWeb: Port CSS::Display to new Strings 2023-02-15 12:48:26 -05:00
Display.h LibWeb: Support multi-keyword syntax for CSS display property 2023-05-02 20:27:28 +02:00
EdgeRect.cpp LibWeb: Move CSS::EdgeRect into its own files 2023-03-30 21:29:50 +02:00
EdgeRect.h LibWeb: Move CSS::EdgeRect into its own files 2023-03-30 21:29:50 +02:00
ElementCSSInlineStyle.idl LibWeb: Move Element.prototype.style to ElementCSSInlineStyle mixin 2023-03-20 20:37:40 -04:00
Enums.json
FontFace.cpp LibWeb: Port FontFace to new Strings 2023-02-19 00:51:16 +01:00
FontFace.h LibWeb: Port FontFace to new Strings 2023-02-19 00:51:16 +01:00
Frequency.cpp LibWeb: Remove CalculatedStyleValue from Frequency 2023-03-30 21:29:50 +02:00
Frequency.h LibWeb: Expose type and raw values of basic CSS types 2023-04-13 09:53:47 +02:00
GeneralEnclosed.h LibWeb: Port GeneralEnclosed to new Strings 2023-02-19 00:51:16 +01:00
GridTrackPlacement.cpp
GridTrackPlacement.h
GridTrackSize.cpp LibWeb: Rename flexible_length to flex_factor in GridSize 2023-05-17 07:48:38 +02:00
GridTrackSize.h LibWeb: Rename flexible_length to flex_factor in GridSize 2023-05-17 07:48:38 +02:00
Identifiers.json LibWeb: Add missing inline-grid for display CSS property 2023-05-02 20:27:28 +02:00
Length.cpp LibWeb: Don't include Layout/Node.h from DOM/Element.h 2023-05-08 09:29:44 +02:00
Length.h LibWeb: Remove weird CSS::Length::resolved() API 2023-05-06 21:14:38 +02:00
LengthBox.cpp LibWeb: Move PercentageOr and subclasses into PercentageOr.{h,cpp} 2023-03-30 21:29:50 +02:00
LengthBox.h LibWeb: Move PercentageOr and subclasses into PercentageOr.{h,cpp} 2023-03-30 21:29:50 +02:00
LinkStyle.idl
MediaFeatures.json
MediaList.cpp LibWeb: Remove CSS::Parser::ParsingContext's default constructor 2023-03-07 11:51:12 +00:00
MediaList.h Everywhere: Remove NonnullRefPtr.h includes 2023-03-06 23:46:35 +01:00
MediaList.idl
MediaQuery.cpp LibWeb: Don't include CSS/StyleComputer.h from Element.h and Document.h 2023-05-08 09:29:44 +02:00
MediaQuery.h LibWeb: Move PercentageOr and subclasses into PercentageOr.{h,cpp} 2023-03-30 21:29:50 +02:00
MediaQueryList.cpp LibWeb: Port EventTarget to new {Fly}String 2023-04-09 17:27:27 +02:00
MediaQueryList.h Everywhere: Stop using NonnullRefPtrVector 2023-03-06 23:46:35 +01:00
MediaQueryList.idl
MediaQueryListEvent.cpp LibWeb: Port {Mouse,UI,Wheel,}Event to new String 2023-04-07 22:41:01 +02:00
MediaQueryListEvent.h LibWeb: Port MediaQueryListEvent to new String 2023-03-05 18:25:59 +00:00
MediaQueryListEvent.idl LibWeb: Port MediaQueryListEvent to new String 2023-03-05 18:25:59 +00:00
Number.h LibWeb: Expose type and raw values of basic CSS types 2023-04-13 09:53:47 +02:00
Percentage.h LibWeb: Move PercentageOr and subclasses into PercentageOr.{h,cpp} 2023-03-30 21:29:50 +02:00
PercentageOr.cpp LibWeb: Move PercentageOr and subclasses into PercentageOr.{h,cpp} 2023-03-30 21:29:50 +02:00
PercentageOr.h LibWeb: Make PercentageOr<T> equality comparison work for calc() values 2023-05-13 07:38:08 +02:00
Position.cpp LibWeb: Use the new to_px() helpers in CSS, SVG and layout code 2023-05-06 18:41:34 +02:00
Position.h LibWeb: Move PercentageOr and subclasses into PercentageOr.{h,cpp} 2023-03-30 21:29:50 +02:00
PreferredColorScheme.cpp Everywhere: Rename equals_ignoring_case => equals_ignoring_ascii_case 2023-03-10 13:15:44 +01:00
PreferredColorScheme.h LibWeb: Use StringView in CSS::PreferredColorScheme 2023-02-15 12:48:26 -05:00
Properties.json LibWeb: Implement SVG opacity properties 2023-05-20 08:52:19 +02:00
QuirksMode.css
Ratio.cpp
Ratio.h
Resolution.cpp LibWeb: Move PercentageOr and subclasses into PercentageOr.{h,cpp} 2023-03-30 21:29:50 +02:00
Resolution.h
ResolvedCSSStyleDeclaration.cpp LibWeb: Don't resolve CSS property values for unconnected elements 2023-05-10 17:27:07 +02:00
ResolvedCSSStyleDeclaration.h LibWeb: Propagate errors from ResolvedCSSStyleDeclaration 2023-05-06 08:07:28 +02:00
Screen.cpp LibWeb: Make factory method of CSS::Screen fallible 2023-02-18 00:52:47 +01:00
Screen.h LibWeb: Make factory method of CSS::Screen fallible 2023-02-18 00:52:47 +01:00
Screen.idl
Selector.cpp LibWeb: Implement the :defined pseudo class 2023-04-06 11:36:56 +02:00
Selector.h LibWeb: Implement the :defined pseudo class 2023-04-06 11:36:56 +02:00
SelectorEngine.cpp LibWeb: Implement the :defined pseudo class 2023-04-06 11:36:56 +02:00
SelectorEngine.h LibWeb: Support the :scope pseudo class 2023-03-21 10:45:19 +01:00
Serialize.cpp LibWeb: Port CSS/Serialize.{h,cpp} to new Strings, and propagate errors 2023-02-15 12:48:26 -05:00
Serialize.h LibWeb: Port CSS/Serialize.{h,cpp} to new Strings, and propagate errors 2023-02-15 12:48:26 -05:00
Size.cpp LibWeb: Add to_px() helpers to CSS::Size and CSS::PercentageOr<T> 2023-05-06 18:41:34 +02:00
Size.h LibWeb: Add to_px() helpers to CSS::Size and CSS::PercentageOr<T> 2023-05-06 18:41:34 +02:00
StyleComputer.cpp LibWeb: Resolve CSS custom properties on pseudo elements 2023-05-17 20:37:29 +02:00
StyleComputer.h LibWeb: Resolve CSS custom properties on pseudo elements 2023-05-17 20:37:29 +02:00
StyleProperties.cpp LibWeb: Implement SVG opacity properties 2023-05-20 08:52:19 +02:00
StyleProperties.h LibWeb: Implement SVG opacity properties 2023-05-20 08:52:19 +02:00
StyleProperty.cpp LibWeb: Don't include Layout/Node.h from DOM/Element.h 2023-05-08 09:29:44 +02:00
StyleProperty.h LibWeb: Don't include Layout/Node.h from DOM/Element.h 2023-05-08 09:29:44 +02:00
StyleSheet.cpp
StyleSheet.h LibJS+LibWeb: Wrap raw JS::Cell*/& fields in GCPtr/NonnullGCPtr 2023-03-15 08:48:49 +01:00
StyleSheet.idl
StyleSheetList.cpp LibWeb: Don't include CSS/StyleComputer.h from Element.h and Document.h 2023-05-08 09:29:44 +02:00
StyleSheetList.h LibJS+LibWeb: Wrap raw JS::Cell*/& fields in GCPtr/NonnullGCPtr 2023-03-15 08:48:49 +01:00
StyleSheetList.idl
StyleValue.cpp LibWeb: Propagate errors from absolutizing StyleValues 2023-05-06 08:07:28 +02:00
StyleValue.h LibWeb: Propagate errors from absolutizing StyleValues 2023-05-06 08:07:28 +02:00
Supports.cpp LibWeb: Remove CSS::Parser::ParsingContext's default constructor 2023-03-07 11:51:12 +00:00
Supports.h LibWeb: Remove CSS::Parser::ParsingContext's default constructor 2023-03-07 11:51:12 +00:00
Time.cpp LibWeb: Remove CalculatedStyleValue from Time 2023-03-30 21:29:50 +02:00
Time.h LibWeb: Expose type and raw values of basic CSS types 2023-04-13 09:53:47 +02:00
TransformFunctions.json
UnicodeRange.h LibWeb: Port CSS::UnicodeRange to new Strings 2023-02-15 12:48:26 -05:00