Aliaksandr Kalenik
08788072c1
LibWeb: Add SessionHistoryTraversalQueue
2023-08-14 17:46:46 +02:00
Aliaksandr Kalenik
6d866dc5ba
LibWeb: Take care of ongoing navigation in Navigable::navigate()
2023-08-14 17:46:46 +02:00
Shannon Booth
099a069b86
LibWeb: Fix typo in query of link element search params
...
Regressed in 21fe86d235
2023-08-14 16:26:34 +02:00
Andi Gallo
a18500c78c
LibWeb: Paint separate borders for inline tables
2023-08-14 15:12:19 +02:00
Andi Gallo
bc8c2b2bc2
LibWeb: Use cell width instead available width to compute height
...
Overall available width should only affect later stages of the table
layout algorithm and have no impact on cell measures.
2023-08-14 13:14:24 +02:00
MacDue
2a067b5601
LibWeb: Don't paint all stacking contexts like positioned elements
...
Previously stacking contexts were only painted in steps 3, 8, and 9.
These steps are only meant to cover positioned elements (as per
https://www.w3.org/TR/CSS22/zindex.html ). This meant that elements with
opacity (which forms a stacking context) could end up painted above
elements that actually occlude them.
2023-08-14 13:10:17 +02:00
Shannon Booth
576f8e8fa8
LibWeb: Fix crash parsing an invalid pseudo compound selector
...
Reduced from a crash on: https://github.com/SerenityOS/serenity/pulls
Fixes #20568
2023-08-14 11:43:57 +01:00
Shannon Booth
9d60f23abc
AK: Port URL::m_fragment from DeprecatedString to String
2023-08-13 15:03:53 -06:00
Shannon Booth
5663a2d3b4
AK+LibWeb: Do not percent encode/decode in URL fragment setter/getters
...
The web specs do not expect decoding or decoding to happen when calling
these helpers. This allows us to remove the raw_fragment helper function
from the URL class.
2023-08-13 15:03:53 -06:00
Shannon Booth
c25485700a
AK: Port URL scheme from DeprecatedString to String
2023-08-13 15:03:53 -06:00
Shannon Booth
21fe86d235
AK: Port URL::m_query from DeprecatedString to String
2023-08-13 15:03:53 -06:00
Shannon Booth
55a01e72ca
AK: Port URL username/password from DeprecatedString to String
...
And for cases that just need to check whether the password/username is
empty, add a raw_{password,username} helper to avoid any allocation.
2023-08-13 15:03:53 -06:00
Shannon Booth
6b29dc3e46
LibWeb: Fix double percent encode of username
...
URL::set_username will apply a percent encode, so we don't need to do
it a second time here.
2023-08-13 15:03:53 -06:00
Andreas Kling
72c9f56c66
LibJS: Make Heap::allocate<T>() infallible
...
Stop worrying about tiny OOMs. Work towards #20449 .
While going through these, I also changed the function signature in many
places where returning ThrowCompletionOr<T> is no longer necessary.
2023-08-13 15:38:42 +02:00
Andi Gallo
b6f9f4c28c
LibWeb: Fix handling of max-content containing block for floating box
...
Fixes layout of page toolbar on Wikipedia.
2023-08-13 14:43:41 +02:00
Andi Gallo
97ba1ff1f7
LibWeb: Remove unused variable from compute_height method
2023-08-13 14:43:41 +02:00
sin-ack
7192cf7487
LibWeb: Add hack for computing the request referer during load
...
This is a temporary hack until navigables are used to load pages, which
uses fetch infrastructure that does this according to spec.
2023-08-13 14:29:53 +02:00
auipc
1653c5ea41
LibWeb: Use current platform for navigator.platform
...
Before, navigator.platform would always report the platform as "Serenity
OS", regardless of whether or not that was true. It also did not include
the architecture, which Firefox and Chrome both do. Now, it can report
either "Linux x86_64" or "SerenityOS AArch64".
2023-08-13 05:13:18 +02:00
Andreas Kling
3406d500a4
LibWeb: Hook up WOFF2 decompression in the StyleComputer
...
With this, we now support WOFF2 fonts on the web :^)
2023-08-12 20:12:13 +02:00
Andreas Kling
6076580a47
LibWeb: Accept "woff2" as a @font-face source format
2023-08-12 20:12:13 +02:00
Aliaksandr Kalenik
bb52d76be3
LibWeb: Delete unused AvailableSize::to_px()
2023-08-12 20:06:01 +02:00
Aliaksandr Kalenik
fce4801460
LibWeb: Replace to_px() with to_px_or_zero() in InlineFormattingContext
...
to_px() usage should be avoided because it might leak saturated
(infinite) values into layout calculations.
2023-08-12 20:06:01 +02:00
Aliaksandr Kalenik
4646867a9f
LibWeb: Replace to_px() with to_px_or_zero() in FormattingContext
...
to_px() usage should be avoided because it might leak saturated
(infinite) values into layout calculations.
2023-08-12 20:06:01 +02:00
Aliaksandr Kalenik
c102bcda9b
LibWeb: Replace to_px() with to_px_or_zero() in TableFormattingContext
...
to_px() usage should be avoided because it might leak saturated
(infinite) values into layout calculations.
2023-08-12 20:06:01 +02:00
Aliaksandr Kalenik
af38f1cba4
LibWeb: Replace to_px() with to_px_or_zero() in GridFormattingContext
...
to_px() usage should be avoided because it might leak saturated
(infinite) values into layout calculations.
2023-08-12 20:06:01 +02:00
Aliaksandr Kalenik
8b99366b9d
LibWeb: Replace to_px() with to_px_or_zero() in FlexFormattingContext
...
to_px() usage should be avoided because it might leak saturated
(infinite) values into layout calculations.
2023-08-12 20:06:01 +02:00
Aliaksandr Kalenik
041d02cbb1
LibWeb: Replace to_px() with to_px_or_zero() in BlockFormattingContext
...
to_px() usage should be avoided because it might leak saturated
(infinite) values into layout calculations.
2023-08-12 20:06:01 +02:00
Aliaksandr Kalenik
57c1fe97fb
LibWeb: Define comparison operators with CSSPixels for AvailableSize
...
This allows to compare CSSPixels with AvailableSize without converting
it to CSSPixels, which might leak saturated (infinite) values into
layout calculations.
2023-08-12 20:06:01 +02:00
Aliaksandr Kalenik
d34007782d
LibWeb: Define operator<
for AvailableSize
2023-08-12 20:06:01 +02:00
Andreas Kling
3a4d386f05
LibWeb: Fetch CSS @font-face fonts in @import'ed style sheets
...
This makes importing Google Fonts via @import rule actually work. :^)
2023-08-12 19:03:59 +02:00
Sam Atkins
337754ae64
LibWeb: Add hack for :host
in pseudo-class serialization
...
The spec for this algorithm is quite outdated, we already have some
other pseudo-classes in here which the spec doesn't cover.
2023-08-12 16:26:32 +02:00
Sam Atkins
a31a0934b8
LibWeb: Use PseudoClassMetadata to simplify serialization
2023-08-12 16:26:32 +02:00
Sam Atkins
b684bab5f1
LibWeb: Make :host()
take a <compound-selector>
...
This matches the spec:
https://drafts.csswg.org/css-scoping-1/#selectordef-host
2023-08-12 16:26:32 +02:00
Sam Atkins
b314a115ca
LibWeb: Use generated PseudoClass data
...
Everything should behave the same as before.
2023-08-12 16:26:32 +02:00
Sam Atkins
f76c614a84
LibWeb: Generate PseudoClass metadata
...
The usual to/from-string functions, and metadata about whether the
pseudo-class is a a function or not, and what type of parameter it
takes.
2023-08-12 16:26:32 +02:00
Aliaksandr Kalenik
e25b1f76e1
LibWeb: Forbid usage of indefinite width in calculate_min{max}_height
...
Changing `calculate_min_content_heigh()` and
`calculate_min_content_heigh()` to accept width as `CSSPixels`, instead
of `AvailableSize` that might be indefinite, makes it more explicit
that width is supposed to be known by the time height is measured.
This change has a bit of collateral damage which is rows height
calculation regression in `table/inline-table-width` that worked before
by accident.
2023-08-12 16:26:08 +02:00
Andi Gallo
89305f1481
LibWeb: Copy button style properties for generated table and cell
2023-08-12 13:36:37 +02:00
Andi Gallo
a24deff21b
LibWeb: Remove unused computed values for removed button flow-root
2023-08-12 11:48:45 +02:00
Jonah
0b2da4f8c6
LibWeb: Add the default user agent MathML stylesheet
...
We now apply MathML's default user agent style sheet along with other
default styles. This sheet is not mixed in with the other styles in
CSS/Default.css because it is a namespaced stylesheet and so has to
be its own sheet.
2023-08-12 07:59:23 +01:00
Jonah
fd0ee8ae7b
LibWeb: Escape quotes in style sheet sources
...
Some rules in style sheets contain quotes, escaping them allows us to
generate code that actually compiles for them.
2023-08-12 07:59:23 +01:00
Jonah
442602bec8
LibWeb: Generate MathML Elements
...
We will now generate MathML elements when parsing HTML.
2023-08-12 07:59:23 +01:00
Jonah
52d6df5ee5
LibWeb: Add the MathML Element
...
This patch introduces the MathML element, which provides the interface
all MathML elements are built from.
2023-08-12 07:59:23 +01:00
Sam Atkins
a9620d8784
LibWeb: Implement the :target
selector pseudo-class
...
We don't yet set the Document's target element in most cases, so this
does not function very well. But that will improve once we *do* set it,
which involves a more complete Navigables implementation.
2023-08-12 08:39:04 +02:00
Sam Atkins
8bd3b74e3a
LibWeb: Implement and use "scroll to the fragment" algorithm
...
This will eventually be used by Navigable but for now, it's just when
traversing the history.
2023-08-12 08:39:04 +02:00
Sam Atkins
be9c975b2e
LibWeb: Implement algorithms for determining an indicated element
2023-08-12 08:39:04 +02:00
Sam Atkins
13b4bf48a8
LibWeb: Give Document a "target element"
...
The target element is the one matching the URL fragment. We don't yet
set it to anything.
2023-08-12 08:39:04 +02:00
Aliaksandr Kalenik
9101c8d079
LibWeb: Use available space to resolve table container width
...
Using avilable space directly while resolving table container width
allows to avoid assigning it to table wrapper box content width which
sometimes involves infinite (saturated) values.
Also this allows to get rid of set_max_content_width() which is a hack
that allows to bypass set_content_width() to assign infinite
(saturated) width to a box.
Closes https://github.com/SerenityOS/serenity/issues/19521
2023-08-11 19:36:19 +02:00
Andi Gallo
a426263dee
LibWeb: Remove 3 decimal places rounding hack in Length::percentage_of
...
CSSPixels uses fixed point now.
2023-08-11 11:00:27 +01:00
Andi Gallo
b34b80104f
LibWeb: Fix buttons with TextNode label
...
Fixes #20472 .
2023-08-11 10:02:27 +02:00
Hendiadyoin1
ce188c9a9c
LibWeb: Allow direct rouding of CSSPixelRects to CSSPixelRects
...
Preciously we were casting to float, round and cast back, which actually
might loose precision and was quite ugly.
2023-08-10 12:24:21 +02:00