ladybird/Userland/Libraries/LibWeb/CSS
Sam Atkins b645e26e9b LibWeb/CSS: Bring TokenStream in line with spec
When the TokenStream code was originally written, there was no such
concept in the CSS Syntax spec. But since then, it's been officially
added, (https://drafts.csswg.org/css-syntax/#css-token-stream) and the
parsing algorithms are described in terms of it. This patch brings our
implementation in line with the spec. A few deprecated TokenStream
methods are left around until their users are also updated to match the
newer spec.

There are a few differences:

- They name things differently. The main confusing one is we had
  `next_token()` which consumed a token and returned it, but the spec
  has a `next_token()` which peeks the next token. The spec names are
  honestly better than what I'd come up with. (`discard_a_token()` is a
  nice addition too!)

- We used to store the index of the token that was just consumed, and
  they instead store the index of the token that will be consumed next.
  This is a perfect breeding ground for off-by-one errors, so I've
  finally added a test suite for TokenStream itself.

- We use a transaction system for rewinding, and the spec uses a stack
  of "marks", which can be manually rewound to. These should be able to
  coexist as long as we stick with marks in the parser spec algorithms,
  and stick with transactions elsewhere.
2024-10-09 17:29:29 +01:00
..
Parser LibWeb/CSS: Bring TokenStream in line with spec 2024-10-09 17:29:29 +01:00
StyleValues Meta: Update my e-mail address everywhere 2024-10-04 13:19:50 +02:00
SyntaxHighlighter LibWeb/CSS: Remove tiny-oom propagation from CSS Tokenizer 2024-07-26 17:29:20 +02:00
Angle.cpp LibWeb/CSS: Rename CalculatedStyleValue -> CSSMathValue 2024-09-18 20:38:41 +01:00
Angle.h LibWeb/CSS: Rename CalculatedStyleValue -> CSSMathValue 2024-09-18 20:38:41 +01:00
AnimationEvent.cpp LibWeb: Remove Bindings/Forward.h from LibWeb/Forward.h 2024-04-27 18:29:35 -04:00
AnimationEvent.h LibWeb: Add calls to JS_{DECLARE,DEFINE}_ALLOCATOR() 2024-04-09 09:13:06 +02:00
AnimationEvent.idl LibWeb: Normalize all WebIDL definition lines to four leading spaces 2024-09-10 21:16:53 +01:00
BackdropFilter.h LibWeb: Rename StyleValue -> CSSStyleValue 2024-08-15 13:58:38 +01:00
CalculatedOr.cpp LibWeb/CSS: Rename CalculatedStyleValue -> CSSMathValue 2024-09-18 20:38:41 +01:00
CalculatedOr.h LibWeb/CSS: Rename CalculatedStyleValue -> CSSMathValue 2024-09-18 20:38:41 +01: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
ColumnCount.h LibWeb: Implement support for parsing CSS column-count property 2023-09-07 20:16:33 +02:00
ComputedValues.h LibWeb/CSS: Add support for unicode-bidi property 2024-10-07 14:57:15 +01:00
CountersSet.cpp LibWeb: Give DOM Elements a CountersSet 2024-07-26 11:04:30 +01:00
CountersSet.h LibWeb: Give DOM Elements a CountersSet 2024-07-26 11:04:30 +01:00
CSS.cpp LibWeb: Make Serialize functions infallible 2023-08-22 17:51:48 +01: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
CSSAnimation.cpp LibWeb: Move "owning element" of Animation classes into Animation 2024-09-22 06:41:55 +02:00
CSSAnimation.h LibWeb: Move "owning element" of Animation classes into Animation 2024-09-22 06:41:55 +02:00
CSSAnimation.idl LibWeb: Normalize all WebIDL definition lines to four leading spaces 2024-09-10 21:16:53 +01:00
CSSConditionRule.cpp Meta: Update my e-mail address everywhere 2024-10-04 13:19:50 +02:00
CSSConditionRule.h LibWeb/CSS: Replace style-rule iteration methods with a generic one 2024-09-06 07:49:55 +02:00
CSSConditionRule.idl LibWeb: Make CSSConditionRule.conditionText read-only 2024-02-28 22:14:58 +01:00
CSSFontFaceRule.cpp Meta: Update my e-mail address everywhere 2024-10-04 13:19:50 +02:00
CSSFontFaceRule.h Meta: Update my e-mail address everywhere 2024-10-04 13:19:50 +02:00
CSSFontFaceRule.idl LibWeb: Add comments and missing items of various IDL files 2023-10-25 19:45:41 +02:00
CSSGroupingRule.cpp Meta: Update my e-mail address everywhere 2024-10-04 13:19:50 +02:00
CSSGroupingRule.h LibWeb/CSS: Replace style-rule iteration methods with a generic one 2024-09-06 07:49:55 +02:00
CSSGroupingRule.idl LibWeb: Add comments and missing items of various IDL files 2023-10-25 19:45:41 +02:00
CSSImportRule.cpp Meta: Update my e-mail address everywhere 2024-10-04 13:19:50 +02:00
CSSImportRule.h Meta: Update my e-mail address everywhere 2024-10-04 13:19:50 +02:00
CSSImportRule.idl LibWeb: Use 'FIXME' extended attribute where possible 2024-05-19 16:24:11 +02:00
CSSKeyframeRule.cpp LibWeb: Implement CSSStyleDeclaration.parentRule 2024-06-14 20:45:37 +02:00
CSSKeyframeRule.h LibWeb: Implement CSSKeyframesRule.cssRuleList 2024-06-14 20:45:37 +02:00
CSSKeyframeRule.idl IDL: Add missing #imports 2023-11-11 08:51:51 +01:00
CSSKeyframesRule.cpp LibWeb: Make CSSKeyframeRule.parentRule actually point to parent rule 2024-06-14 20:45:37 +02:00
CSSKeyframesRule.h LibWeb: Make CSSKeyframeRule.parentRule actually point to parent rule 2024-06-14 20:45:37 +02:00
CSSKeyframesRule.idl LibWeb: Implement CSSKeyframesRule.cssRuleList 2024-06-14 20:45:37 +02:00
CSSLayerBlockRule.cpp LibWeb: Cache the qualified layer name in CSSRule 2024-09-07 13:23:55 +02:00
CSSLayerBlockRule.h LibWeb/CSS: Add CSSOM types for @layer rules 2024-09-06 07:49:55 +02:00
CSSLayerBlockRule.idl LibWeb/CSS: Add CSSOM types for @layer rules 2024-09-06 07:49:55 +02:00
CSSLayerStatementRule.cpp LibWeb: Cache the qualified layer name in CSSRule 2024-09-07 13:23:55 +02:00
CSSLayerStatementRule.h LibWeb/CSS: Add CSSOM types for @layer rules 2024-09-06 07:49:55 +02:00
CSSLayerStatementRule.idl LibWeb/CSS: Add CSSOM types for @layer rules 2024-09-06 07:49:55 +02:00
CSSMediaRule.cpp Meta: Update my e-mail address everywhere 2024-10-04 13:19:50 +02:00
CSSMediaRule.h Meta: Update my e-mail address everywhere 2024-10-04 13:19:50 +02:00
CSSMediaRule.idl LibWeb: Add comments and missing items of various IDL files 2023-10-25 19:45:41 +02:00
CSSNamespaceRule.cpp LibWeb: Avoid FlyString lookups when setting IDL interface prototypes 2024-03-16 16:35:54 +01:00
CSSNamespaceRule.h LibWeb: Port CSSNamespaceRule to FlyString 2023-12-01 16:03:58 +01:00
CSSNamespaceRule.idl LibWeb: Format all .idl files to use four space indentation 2024-01-18 14:00:06 +01:00
CSSNumericType.cpp LibWeb/CSS: Add parsing for <opentype-tag> 2024-10-02 16:28:55 +01:00
CSSNumericType.h LibWeb: Implement Flex and FlexStyleValue types 2023-09-28 20:33:20 +01:00
CSSRule.cpp Meta: Update my e-mail address everywhere 2024-10-04 13:19:50 +02:00
CSSRule.h Meta: Update my e-mail address everywhere 2024-10-04 13:19:50 +02:00
CSSRule.idl LibWeb: Add comments and missing items of various IDL files 2023-10-25 19:45:41 +02:00
CSSRuleList.cpp LibWeb/CSS: Replace style-rule iteration methods with a generic one 2024-09-06 07:49:55 +02:00
CSSRuleList.h Meta: Update my e-mail address everywhere 2024-10-04 13:19:50 +02:00
CSSRuleList.idl LibWeb: Add comments and missing items of various IDL files 2023-10-25 19:45:41 +02:00
CSSStyleDeclaration.cpp LibWeb: Allow setting shorthand CSS properties via CSSStyleDeclaration 2024-09-22 09:45:59 +02:00
CSSStyleDeclaration.h Meta: Update my e-mail address everywhere 2024-10-04 13:19:50 +02:00
CSSStyleDeclaration.idl LibWeb: Remove unnecessary FIXME marker for CSSStyleDeclaration.cssFloat 2024-06-14 20:45:37 +02:00
CSSStyleRule.cpp Meta: Update my e-mail address everywhere 2024-10-04 13:19:50 +02:00
CSSStyleRule.h Meta: Update my e-mail address everywhere 2024-10-04 13:19:50 +02:00
CSSStyleRule.idl LibWeb: Add comments and missing items of various IDL files 2023-10-25 19:45:41 +02:00
CSSStyleSheet.cpp Meta: Update my e-mail address everywhere 2024-10-04 13:19:50 +02:00
CSSStyleSheet.h Meta: Update my e-mail address everywhere 2024-10-04 13:19:50 +02:00
CSSStyleSheet.idl LibWeb: Remove first rule if no argument is given for remove_rule() 2024-02-24 21:59:28 +01:00
CSSStyleValue.cpp Meta: Update my e-mail address everywhere 2024-10-04 13:19:50 +02:00
CSSStyleValue.h Meta: Update my e-mail address everywhere 2024-10-04 13:19:50 +02:00
CSSSupportsRule.cpp LibWeb: Avoid FlyString lookups when setting IDL interface prototypes 2024-03-16 16:35:54 +01:00
CSSSupportsRule.h LibWeb: Make CSSConditionRule.conditionText read-only 2024-02-28 22:14:58 +01:00
CSSSupportsRule.idl LibWeb: Add comments and missing items of various IDL files 2023-10-25 19:45:41 +02:00
CSSTransition.cpp LibWeb: Start transitions when affected properties change 2024-09-22 06:41:55 +02:00
CSSTransition.h LibWeb: Start transitions when affected properties change 2024-09-22 06:41:55 +02:00
CSSTransition.idl LibWeb: Normalize all WebIDL definition lines to four leading spaces 2024-09-10 21:16:53 +01:00
Default.css LibWeb: Don't let input element placeholders influence line-height 2024-10-08 08:12:07 +02:00
Display.cpp Meta: Update my e-mail address everywhere 2024-10-04 13:19:50 +02:00
Display.h Meta: Update my e-mail address everywhere 2024-10-04 13:19:50 +02:00
EasingFunctions.json Meta/CodeGenerators+LibWeb: Implement parsing CSS easing functions 2023-07-13 05:10:41 +02:00
EdgeRect.cpp Meta: Update my e-mail address everywhere 2024-10-04 13:19:50 +02:00
EdgeRect.h Meta: Update my e-mail address everywhere 2024-10-04 13:19:50 +02:00
ElementCSSInlineStyle.idl LibWeb: Move Element.prototype.style to ElementCSSInlineStyle mixin 2023-03-20 20:37:40 -04:00
Enums.json LibWeb/Layout: Implement align-content for grid layout 2024-10-08 21:30:03 +02:00
Flex.cpp LibWeb: Implement Flex and FlexStyleValue types 2023-09-28 20:33:20 +01:00
Flex.h LibWeb/CSS: Introduce CSSNumericValue and CSSUnitValue type stubs 2024-08-21 10:51:48 +01:00
FontFace.cpp LibWeb/CSS: Parse font-[feature,variation]-settings descriptors 2024-10-02 16:28:55 +01:00
FontFace.h LibWeb/CSS: Implement add for FontFaceSet 2024-09-27 14:49:27 -06:00
FontFace.idl LibWeb: Support loading FontFaces constructed with binary data 2024-05-14 12:31:10 -06:00
FontFaceSet.cpp LibWeb/CSS: Implement delete method for FontFaceSet 2024-10-03 16:36:44 +02:00
FontFaceSet.h LibWeb: Resolve document.fonts.ready() after fonts defined in CSS loaded 2024-09-30 08:07:59 +02:00
FontFaceSet.idl LibWeb: Delete public constructor of FontFaceSet 2024-09-30 08:07:59 +02:00
Frequency.cpp LibWeb/CSS: Rename CalculatedStyleValue -> CSSMathValue 2024-09-18 20:38:41 +01:00
Frequency.h LibWeb/CSS: Rename CalculatedStyleValue -> CSSMathValue 2024-09-18 20:38:41 +01:00
GeneralEnclosed.h LibWeb: Port GeneralEnclosed to new Strings 2023-02-19 00:51:16 +01:00
GridTrackPlacement.cpp LibWeb: Define if identifier represent area or line during layout [GFC] 2023-08-28 09:19:41 +02:00
GridTrackPlacement.h LibWeb: Define if identifier represent area or line during layout [GFC] 2023-08-28 09:19:41 +02:00
GridTrackSize.cpp LibWeb: Implement grid-template function fit-content() 2024-07-25 13:12:26 +02:00
GridTrackSize.h LibWeb: Implement grid-template function fit-content() 2024-07-25 13:12:26 +02:00
Interpolation.cpp Meta: Update my e-mail address everywhere 2024-10-04 13:19:50 +02:00
Interpolation.h LibWeb: Start transitions when affected properties change 2024-09-22 06:41:55 +02:00
Keywords.json LibWeb/CSS: Add support for unicode-bidi property 2024-10-07 14:57:15 +01:00
Length.cpp LibWeb/CSS: Rename CalculatedStyleValue -> CSSMathValue 2024-09-18 20:38:41 +01:00
Length.h LibWeb/CSS: Rename CalculatedStyleValue -> CSSMathValue 2024-09-18 20:38:41 +01:00
LengthBox.cpp Meta: Update my e-mail address everywhere 2024-10-04 13:19:50 +02:00
LengthBox.h Meta: Update my e-mail address everywhere 2024-10-04 13:19:50 +02:00
LinkStyle.idl
MathFunctions.json LibWeb: Generate parsing code for CSS math functions 2023-07-15 10:23:33 +02:00
MediaFeatures.json LibWeb: Reformat inconsistent CSS JSON files 2023-08-02 12:49:46 +01:00
MediaList.cpp LibWeb: Make empty media query lists evaluate to true 2024-10-07 14:50:57 +01:00
MediaList.h Meta: Update my e-mail address everywhere 2024-10-04 13:19:50 +02:00
MediaList.idl LibWeb: Add comments and missing items of various IDL files 2023-10-25 19:45:41 +02:00
MediaQuery.cpp LibWeb: Rename "identifier" and "ValueID" to "Keyword" where correct 2024-08-15 13:58:38 +01:00
MediaQuery.h LibWeb: Rename "identifier" and "ValueID" to "Keyword" where correct 2024-08-15 13:58:38 +01:00
MediaQueryList.cpp LibWeb: Make empty media query lists evaluate to true 2024-10-07 14:50:57 +01:00
MediaQueryList.h LibWeb: Use String for getting/setting MediaQueryList media 2023-12-01 20:48:13 +01:00
MediaQueryList.idl LibWeb: Add comments and missing items of various IDL files 2023-10-25 19:45:41 +02:00
MediaQueryListEvent.cpp Meta: Update my e-mail address everywhere 2024-10-04 13:19:50 +02:00
MediaQueryListEvent.h LibWeb: Put most LibWeb GC objects in type-specific heap blocks 2023-11-19 22:00:48 +01:00
MediaQueryListEvent.idl LibWeb: Switch IDL from UseNewAKString to UseDeprecatedAKString 2023-09-02 19:23:41 +01:00
Number.h LibWeb: Make serializing basic CSS types infallible 2023-08-22 17:51:48 +01:00
ParsedFontFace.cpp Meta: Update my e-mail address everywhere 2024-10-04 13:19:50 +02:00
ParsedFontFace.h Meta: Update my e-mail address everywhere 2024-10-04 13:19:50 +02:00
Percentage.h LibWeb: Make serializing basic CSS types infallible 2023-08-22 17:51:48 +01:00
PercentageOr.cpp LibWeb: Make CSS::PercentageOr<T> non-virtual 2024-08-02 20:37:40 +02:00
PercentageOr.h LibWeb/CSS: Rename CalculatedStyleValue -> CSSMathValue 2024-09-18 20:38:41 +01: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
PreferredContrast.cpp LibWeb: Add Contrast preference 2024-06-13 11:18:38 +02:00
PreferredContrast.h LibWeb: Add Contrast preference 2024-06-13 11:18:38 +02:00
PreferredMotion.cpp LibWeb: Add motion preference 2024-06-18 10:31:54 -04:00
PreferredMotion.h LibWeb: Add motion preference 2024-06-18 10:31:54 -04:00
Properties.json LibWeb/CSS: Add support for unicode-bidi property 2024-10-07 14:57:15 +01:00
PseudoClasses.json LibWeb: Implement the :has() pseudo-class 2024-07-15 11:52:03 +01:00
QuirksMode.css
Ratio.cpp LibWeb: Limit ratio parts to 5 decimal places when printing 2024-03-03 19:50:25 +01:00
Ratio.h LibWeb: Use CSSPixelFraction to represent aspect ratios 2023-09-04 12:40:17 +02:00
Resolution.cpp LibWeb: Make resolution calculable 2023-12-30 20:11:24 +01:00
Resolution.h LibWeb/CSS: Introduce CSSNumericValue and CSSUnitValue type stubs 2024-08-21 10:51:48 +01:00
ResolvedCSSStyleDeclaration.cpp Meta: Update my e-mail address everywhere 2024-10-04 13:19:50 +02:00
ResolvedCSSStyleDeclaration.h Meta: Update my e-mail address everywhere 2024-10-04 13:19:50 +02:00
Screen.cpp LibWeb: Stub out Window-Management proposal extensions to Screen API 2024-05-27 17:24:51 -06:00
Screen.h LibWeb: Stub out Window-Management proposal extensions to Screen API 2024-05-27 17:24:51 -06:00
Screen.idl LibWeb: Stub out Window-Management proposal extensions to Screen API 2024-05-27 17:24:51 -06:00
ScreenOrientation.cpp LibWeb: Remove Bindings/Forward.h from LibWeb/Forward.h 2024-04-27 18:29:35 -04:00
ScreenOrientation.h LibWeb: Add stubs for the Screen Orientation API 2024-04-03 10:09:58 +01:00
ScreenOrientation.idl LibWeb: Add stubs for the Screen Orientation API 2024-04-03 10:09:58 +01:00
Selector.cpp Meta: Update my e-mail address everywhere 2024-10-04 13:19:50 +02:00
Selector.h Meta: Update my e-mail address everywhere 2024-10-04 13:19:50 +02:00
SelectorEngine.cpp Meta: Update my e-mail address everywhere 2024-10-04 13:19:50 +02:00
SelectorEngine.h Meta: Update my e-mail address everywhere 2024-10-04 13:19:50 +02:00
Serialize.cpp LibWeb: Limit color alpha values to 4 decimal places when serializing 2024-03-03 19:50:25 +01:00
Serialize.h LibWeb+LibGfx: Move UnicodeRange from LibWeb to LibGfx 2023-12-10 17:32:04 +01:00
Size.cpp LibWeb: Replaced remaining usage and delete Size::resolved() 2024-10-06 18:51:03 +02:00
Size.h LibWeb: Replaced remaining usage and delete Size::resolved() 2024-10-06 18:51:03 +02:00
Sizing.cpp LibWeb: Move our "default sizing algorithm" function into a public place 2024-09-12 07:39:11 +02:00
Sizing.h LibWeb: Move our "default sizing algorithm" function into a public place 2024-09-12 07:39:11 +02:00
StyleComputer.cpp LibWeb: Skip transitions for pseudo elements 2024-10-07 09:31:40 +02:00
StyleComputer.h Meta: Update my e-mail address everywhere 2024-10-04 13:19:50 +02:00
StyleInvalidation.cpp LibWeb: Rename "identifier" and "ValueID" to "Keyword" where correct 2024-08-15 13:58:38 +01:00
StyleInvalidation.h LibWeb: Rename StyleValue -> CSSStyleValue 2024-08-15 13:58:38 +01:00
StyleProperties.cpp LibWeb: Don't crash when encountering border-spacing: calc(...) 2024-10-09 14:14:08 +01:00
StyleProperties.h LibWeb: Don't crash when encountering border-spacing: calc(...) 2024-10-09 14:14:08 +01:00
StyleProperty.cpp Meta: Update my e-mail address everywhere 2024-10-04 13:19:50 +02:00
StyleProperty.h Meta: Update my e-mail address everywhere 2024-10-04 13:19:50 +02:00
StyleSheet.cpp Meta: Update my e-mail address everywhere 2024-10-04 13:19:50 +02:00
StyleSheet.h Meta: Update my e-mail address everywhere 2024-10-04 13:19:50 +02:00
StyleSheet.idl LibWeb: Align StyleSheet title getter with the specification 2024-04-29 08:10:38 +02:00
StyleSheetIdentifier.cpp LibWeb: Add method for listing all style sheets on a page 2024-09-03 10:12:07 +01:00
StyleSheetIdentifier.h LibWeb: Add method for listing all style sheets on a page 2024-09-03 10:12:07 +01:00
StyleSheetList.cpp LibWeb: Remove all font loaders linked to a StyleSheet when it's deleted 2024-09-22 20:10:30 +02:00
StyleSheetList.h LibWeb: Only invalidate shadow root when style sheet inside changes 2024-08-20 16:10:33 +02:00
StyleSheetList.idl LibWeb: Add comments and missing items of various IDL files 2023-10-25 19:45:41 +02:00
Supports.cpp LibWeb: Don't leak entire realm after parsing CSS @supports rule 2024-04-05 08:14:19 +02:00
Supports.h LibWeb: Don't leak entire realm after parsing CSS @supports rule 2024-04-05 08:14:19 +02:00
SystemColor.cpp LibWeb: Implement <system-color> and <deprecated-color> keywords 2023-08-25 20:30:20 +01:00
SystemColor.h LibWeb: Implement <system-color> and <deprecated-color> keywords 2023-08-25 20:30:20 +01:00
Time.cpp LibWeb/CSS: Rename CalculatedStyleValue -> CSSMathValue 2024-09-18 20:38:41 +01:00
Time.h LibWeb/CSS: Rename CalculatedStyleValue -> CSSMathValue 2024-09-18 20:38:41 +01:00
Transformation.cpp Meta: Update my e-mail address everywhere 2024-10-04 13:19:50 +02:00
Transformation.h LibWeb: Allow percentages on CSS transform scale functions 2024-01-10 09:48:25 +01:00
TransformFunctions.json LibWeb: Add missing CSS Transforms Module Level 2 functions 2024-01-10 09:48:25 +01:00
VisualViewport.cpp Meta: Update my e-mail address everywhere 2024-10-04 13:19:50 +02:00
VisualViewport.h Meta: Update my e-mail address everywhere 2024-10-04 13:19:50 +02:00
VisualViewport.idl LibWeb: Add comments and missing items of various IDL files 2023-10-25 19:45:41 +02:00