1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 14:28:12 +00:00
Commit graph

2008 commits

Author SHA1 Message Date
Aliaksandr Kalenik
de4b240429 LibWeb: Add missing null check in font_with_point_size() 2023-12-13 22:25:00 +01:00
Aliaksandr Kalenik
41a3c19cfe LibWeb: Make HTML::DecodedImageData to be GC-allocated
This change fixes GC-leak caused by following mutual dependency:
- SVGDecodedImageData owns JS::Handle for Page.
- SVGDecodedImageData is owned by visited objects.
by making everything inherited from HTML::DecodedImageData and
ListOfAvailableImages to be GC-allocated.

Generally, if visited object has a handle, very likely we leak
everything visited from object in a handle.
2023-12-12 23:01:08 +01:00
Shannon Booth
ed97946975 LibWeb: Support obsolete but required -webkit- CSS parsing quirk
As outlined in: https://www.w3.org/TR/selectors-4/#compat

We now do not treat unknown webkit pseudo-elements as invalid at parse
time, and also support serializing these elements.

Fixes: #21959
2023-12-11 16:54:59 +01:00
Shannon Booth
83758d4cdd LibWeb: Wrap PseudoElements stored in SimpleSelector in a class
No functional impact intended. This is just a more complicated way of
writing what we have now.

The goal of this commit is so that we are able to store the 'name' of a
pseudo element for use in serializing 'unknown -webkit-
pseudo-elements', see:

https://www.w3.org/TR/selectors-4/#compat

This is quite awkward, as in pretty much all cases just the selector
type enum is enough, but we will need to cache the name for serializing
these unknown selectors. I can't figure out any reason why we would need
this name anywhere else in the engine, so pretty much everywhere is
still just passing around this raw enum. But this change will allow us
to easily store the name inside of this new struct for when it is needed
for serialization, once those webkit unknown elements are supported by
our engine.
2023-12-11 16:54:59 +01:00
Shannon Booth
08920b7a34 LibWeb: Simplify a conditional check in parse_pseudo_simple_selector
Put a shared `pseudo_element.has_value()` check into the same block.
2023-12-11 16:54:59 +01:00
Shannon Booth
2dce09b12e LibWeb: Use code_points helper for getting delim CSS token codepoint
This is less code, and more expressive.
2023-12-11 16:54:59 +01:00
Bastiaan van der Plaat
3b3558865c LibWeb: Improve select element CSS stylebility 2023-12-10 20:56:19 +01:00
Aliaksandr Kalenik
2cb0039a13 LibGfx+LibWeb: Produce font cascade list in CSS font matching algorithm
According to the CSS font matching algorithm specification, it is
supposed to be executed for each glyph instead of each text run, as is
currently done. This change partially implements this by having the
font matching algorithm produce a list of fonts against which each
glyph will be tested to find its suitable font.

Now, it becomes possible to have per-glyph fallback fonts: if the
needed glyph is not present in a font, we can check the subsequent
fonts in the list.
2023-12-10 17:32:04 +01:00
Aliaksandr Kalenik
f50bf00814 LibWeb+LibGfx: Move UnicodeRange from LibWeb to LibGfx
In upcoming changes UnicodeRange is going to be used in LibGfx in
a class that represents font cascade list.
2023-12-10 17:32:04 +01:00
Bastiaan van der Plaat
f621dc464b LibWeb: Add internal use_pseudo_element to DOM Element 2023-12-10 16:44:12 +01:00
Shannon Booth
74b6e7b1f0 LibWeb: Avoid calling FlyString::from_utf8 on FlyString's 2023-12-10 09:45:03 +01:00
Shannon Booth
6ce0d588ee Everywhere: Avoid calling from_utf8 on FlyString or String
We already have a String :^)
2023-12-10 09:45:03 +01:00
Aliaksandr Kalenik
af13bd8af0 LibWeb: Remove unused StyleProperties::clone() function 2023-12-09 19:04:45 +01:00
Sam Atkins
29ecb2eda6 LibWeb: Parse grid-template-areas property using TokenStream 2023-12-08 10:47:23 +00:00
Sam Atkins
b569ab72e8 LibWeb: Correct grid-template-areas definition
The spec syntax is `none | <string>+` and `none` is the default.
2023-12-08 10:47:23 +00:00
Sam Atkins
c3583317ee LibWeb: Parse grid-auto-flow property using TokenStream
RefPtr is already `[[nodiscard]]` so we can remove that extra noise from
the declaration.
2023-12-08 10:47:23 +00:00
Sam Atkins
bbbd9c14ac LibWeb: Parse grid-area property using TokenStream 2023-12-08 10:47:23 +00:00
Sam Atkins
a16b35a755 LibWeb: Parse grid-column and grid-row properties using TokenStream 2023-12-08 10:47:23 +00:00
Sam Atkins
b18c334a4f LibWeb: Ensure there are no trailing tokens when parsing font-family 2023-12-08 10:47:23 +00:00
Sam Atkins
f84ccb8627 LibWeb: Part font property using TokenStream 2023-12-08 10:47:23 +00:00
Sam Atkins
333b705f25 LibWeb: Parse flex-flow property using TokenStream 2023-12-08 10:47:23 +00:00
Sam Atkins
bf3576667a LibWeb: Parse flex property using TokenStream 2023-12-08 10:47:23 +00:00
Sam Atkins
4f3136c230 LibWeb: Parse shadow values using TokenStream 2023-12-08 10:47:23 +00:00
Sam Atkins
3a36b2eea9 LibWeb: Parse border properties using TokenStream 2023-12-08 10:47:23 +00:00
Sam Atkins
0e00d9a67d LibWeb: Parse background property using TokenStream 2023-12-08 10:47:23 +00:00
Sam Atkins
64a44b719e LibWeb: Parse FilterValueListStyleValue using TokenStream 2023-12-08 10:47:23 +00:00
Sam Atkins
2efaadd63c LibWeb: Parse aspect-ratio property using TokenStream 2023-12-08 10:47:23 +00:00
Sam Atkins
647d52ff9a LibWeb: Parse quotes property using TokenStream 2023-12-08 10:47:23 +00:00
Sam Atkins
ebad94658a LibWeb: Parse display property using TokenStream 2023-12-08 10:47:23 +00:00
Sam Atkins
3d6eb36664 LibWeb: Parse content property using TokenStream 2023-12-08 10:47:23 +00:00
Sam Atkins
4d6e8d8f37 LibWeb: Parse border-radius properties using TokenStream 2023-12-08 10:47:23 +00:00
Sam Atkins
28c719fff5 LibWeb: Extract contains_single_none_ident() helper function
Several CSS properties can be `none` instead of their usual value.
2023-12-08 10:47:23 +00:00
Sam Atkins
1cc88dc4bc LibWeb: Make parse_comma_separated_value_list() take a TokenStream
This lets us use it from inside places that use TokenStreams.
2023-12-08 10:47:23 +00:00
Sam Atkins
cd9344d4c1 LibWeb: Clarify naming of TokenStreams in parse_css_value()
Originally, the input was named `tokens`, and we later created a
`tokens_without_whitespace` from the filtered contents of `tokens`.
Since `tokens_without_whitespace` is what we actually want to use while
parsing, let's rename `tokens` -> `unprocessed_tokens` and use the
`tokens` name for the processed ones.
2023-12-08 10:47:23 +00:00
Bastiaan van der Plaat
4966c083df LibWeb: Remove progress element custom paintable use shadow dom instead 2023-12-07 11:37:01 +01:00
Sam Atkins
ef48d967d4 LibWeb: Correct parsing of background-position 3-value syntax
There were two bugs here, one of which hid the other:
- Only one offset would have a value, but we dereferenced both.
- We consumed a token whether it was a valid offset or not.
2023-12-05 09:55:16 +01:00
Bastiaan van der Plaat
2107ab823d LibWeb: Add basic HTML meter element support 2023-12-04 19:54:43 +00:00
Bastiaan van der Plaat
3175557cb8 LibWeb: Update progressbar colors to be more pleasant 2023-12-04 19:54:43 +00:00
Bastiaan van der Plaat
fb7b03d162 LibWeb: Add support for the input size attribute 2023-12-03 20:29:14 +01:00
Shannon Booth
89bbf53745 LibWeb: Port CSS Parser from DeprecatedString
These are the last instances of DeprecatedString in the CSS folder.
2023-12-02 22:54:53 +01:00
Shannon Booth
6813dcaff8 LibWeb: Return FlyString const& from CSS::Parser::Token
This allows us to not need to convert back to a FlyString when we need
one.
2023-12-02 22:54:53 +01:00
Sam Atkins
d344c50663 LibWeb: Return String from CSSStyleRule::selector_text() 2023-12-01 20:48:13 +01:00
Sam Atkins
374b6cdffd LibWeb: Return String from CSSImportRule::href() 2023-12-01 20:48:13 +01:00
Sam Atkins
ef1e942f3e LibWeb: Use String for getting/setting MediaQueryList media 2023-12-01 20:48:13 +01:00
Sam Atkins
6dbc3044bd LibWeb: Remove some to_deprecated_string() calls in the CSS code 2023-12-01 20:48:13 +01:00
Sam Atkins
9c1c7720c5 LibWeb: Use serialize_a_url() to serialize @import url(...) 2023-12-01 20:48:13 +01:00
Andreas Kling
189d1e8291 LibWeb: Port CSSNamespaceRule to FlyString
This removes a performance problem where we'd convert the style sheet's
default namespace from DeprecatedFlyString to FlyString once per rule
during selector matching.

The conversion now happens once, during CSS parse. It should eventually
be removed from there as well, but one step at a time. :^)
2023-12-01 16:03:58 +01:00
Aliaksandr Kalenik
961b067df8 LibWeb/CSS: Add support for translateZ() transform property 2023-11-30 22:54:02 +01:00
Shannon Booth
96af80acd1 LibWeb: Port Intrinsics from DeprecatedString 2023-11-28 17:15:27 -05:00
Shannon Booth
af7df1dbbf LibWeb: Port CSSStyleDeclaration from DeprecatedString to String 2023-11-28 17:15:27 -05:00