Dan Klishch
4d8f74c149
JSSpecCompiler: Parse method headers
2024-02-24 15:03:08 -07:00
Dan Klishch
a35a751f9e
JSSpecCompiler: Parse optional arguments groups
2024-02-24 15:03:08 -07:00
Dan Klishch
3e6a07154b
JSSpecCompiler: Parse "the *this* value" in expressions
2024-02-24 15:03:08 -07:00
Dan Klishch
ddf26a768c
JSSpecCompiler: Parse "Perform <expression>." steps
2024-02-24 15:03:08 -07:00
Dan Klishch
d1fc84c638
JSSpecCompiler: Parse accessor property headers
2024-02-24 15:03:08 -07:00
Dan Klishch
a9f3a14a13
JSSpecCompiler: Simplify value handling in TextParser::parse_expression
2024-02-24 15:03:08 -07:00
Dan Klishch
e1a1f4ed1a
JSSpecCompiler: Parse lists in xspec mode
2024-02-24 15:03:08 -07:00
Dan Klishch
d14bb7e91e
JSSpecCompiler: Make function arguments parsing much simpler
...
In a nutshell, when we understand that the expression is a function
call (this happens at '(' after an expression), stop parsing expression
and start parsing function arguments. This makes
`FunctionCallCanonicalizationPass` and the workaround for zero argument
function calls obsolete.
2024-02-24 15:03:08 -07:00
Dan Klishch
990e30f458
JSSpecCompiler: Parse enumerators in xspec mode
2024-02-24 15:03:08 -07:00
Dan Klishch
3d365326af
JSSpecCompiler: Parse '?' before function calls in xspec mode
2024-02-24 15:03:08 -07:00
Dan Klishch
b800276347
JSSpecCompiler: Parse true, false, this, undefined, and null
2024-02-24 15:03:08 -07:00
Dan Klishch
86d54a8684
JSSpecCompiler: Parse arbitrarily large rational numbers in xspec mode
2024-02-24 15:03:08 -07:00
Dan Klishch
2a2e31f2ed
LibCrypto: Avoid UB in BigFraction::to_byte_string for 0/x fractions
2024-02-24 15:03:08 -07:00
Dan Klishch
bd26e5dce9
JSSpecCompiler: Parse <sup> as raising a number to a power in xspec mode
2024-02-24 15:03:08 -07:00
Dan Klishch
394c9b7006
JSSpecCompiler: Sort token types and operators alphabetically
2024-02-24 15:03:08 -07:00
Tim Ledbetter
1d825f17c0
LibWeb: Remove first rule if no argument is given for remove_rule()
...
While this isn't explicitly mentioned in the specification, there is a
WPT test that checks for this behavior.
2024-02-24 21:59:28 +01:00
Tim Ledbetter
3ea318ca8b
LibWeb: Implement CSSStyleSheet.addRule()
...
This is a legacy method that has been superseded by `insertRule()`,
although it is supported by all modern browser engines.
2024-02-24 21:59:28 +01:00
Tim Ledbetter
87b52a1816
LibWeb: Implement CSSStyleSheet.replaceSync()
...
This method behaves the same as `CSSStyleSheet.replace()` but the
operation is performed synchronously.
2024-02-24 21:59:28 +01:00
Tim Ledbetter
81c67d34eb
LibWeb: Implement CSSStyleSheet.replace()
...
This method asynchronously replaces the content of the given stylesheet
with the content passed to it.
An exception is thrown if this method is used by a stylesheet not
created with the `CSSStyleSheet()` constructor.
2024-02-24 21:59:28 +01:00
Tim Ledbetter
d209d5a84f
LibWeb: Ensure CSSStyleSheet::css_rules() always returns the same object
...
Instead of having a method that replaces the stylesheet's CSSRuleList,
we now have a method on CSSRuleList to modify it's underlying CSSRules.
2024-02-24 21:59:28 +01:00
Tim Ledbetter
811033ec19
LibWeb: Disallow inserting @import rules into a constructed stylesheet
2024-02-24 21:59:28 +01:00
Tim Ledbetter
b0f57a2785
LibWeb: Add CSSStyleSheet constructor binding
2024-02-24 21:59:28 +01:00
Tim Ledbetter
f303905875
LibWeb: Add the CSSStyleSheet.rules
alias for CSSStyleSheet.cssRules
2024-02-24 21:59:28 +01:00
Tim Ledbetter
9b1ea4e2fc
LibWeb: Add CSSStyleSheet.ownerRule
attribute
...
This returns the `CSSImportRule` corresponding to the `@import` at-rule
that imported the stylesheet into the document. If the stylesheet
wasn't imported then this property is null.
2024-02-24 21:59:28 +01:00
Tim Ledbetter
588a031e2d
LibWeb: Clamp calculated border width values to zero
...
Previously, a calculated CSS border-width property with a resolved
value of less than zero pixels would cause a crash.
2024-02-24 21:57:24 +01:00
Andreas Kling
8addfc14af
LibWeb: Implement IntersectionObserver "intersection roots" per spec
...
In particular, get the implicit root correctly for intersection
observers that don't have an explicit root specified.
This makes it possible to load the Terminal app on https://puter.com/
2024-02-24 19:56:08 +01:00
Andreas Kling
8586897928
headless-browser: Don't choke on subframe load completions
...
This didn't break any existing tests, but I have to do this for an
upcoming test to not bring everything down.
2024-02-24 19:56:08 +01:00
Andreas Kling
9759f44faf
LibWeb: Allow SVGDecodedImageData to cache bitmaps at different sizes
...
This avoids constantly re-rendering the same SVG image over and over
during painting when it's being used at a couple of different sizes
(for example when used as a CSS background).
2024-02-24 19:56:08 +01:00
Andreas Kling
2484324f9a
LibGfx: Add hash traits for the Size family
2024-02-24 19:56:08 +01:00
Andreas Kling
11b4216e65
LibWeb: Run IntersectionObserver steps only when needed
...
Instead of updating IOs in every iteration of the HTML event loop,
we now only do it after a relayout, or after the viewport changes.
2024-02-24 19:56:08 +01:00
Aliaksandr Kalenik
d3f8d24abb
LibWeb+WebContent: Remove PageClient::page_did_invalidate()
...
...and schedule repainting directly from Navigable::set_needs_display()
bypassing PageClient.
2024-02-24 16:54:55 +01:00
Aliaksandr Kalenik
c3f5dbb101
LibWeb: Paint page only if something that requires repaint happened
...
Resolves a performance regression from
8ba18dfd40
, where moving paint scheduling
to `EventLoop::process()` led to unnecessary repaints.
This update introduces a flag to trigger repaints only when necessary,
addressing the issue where repaints previously occurred with each event
loop process, irrespective of actual changes.
2024-02-24 16:54:55 +01:00
Aliaksandr Kalenik
906ac71eca
LibWeb: Fix crashing after input into empty contenteditable
...
Change `EventHandler::handle_keydown()` to no longer assume the cursor
position's node is always a `DOM::Text`. While this assumption holds
for `HTMLInputElement` that has a shadow DOM with a text node, an empty
`contenteditable` might not have any children. With this change,
`handle_keydown()` creates a new text node if the cursor position's
node is not a text node.
2024-02-24 08:09:01 +01:00
Aliaksandr Kalenik
5d76fa72e9
LibWeb: Add HTMLElement::did_receive_focus()
2024-02-24 08:09:01 +01:00
Aliaksandr Kalenik
6b17ab77f3
LibWeb: Do not delete empty range in EventHandler::handle_keydown()
...
Fixes a crash that occurs when inputting into an empty contenteditable
element (`EditEventHandler::handle_delete()` assumes the cursor
position's node is always `DOM::Text`, which is not the case for an
empty `contenteditable`).
2024-02-24 08:09:01 +01:00
Aliaksandr Kalenik
1528e9109c
LibWeb: Add special handling for WindowProxy in [Replaceable] setters
...
Setters for Window object should consider WindowProxy wrapper by:
- Verifying `this_value` is `WindowProxy` (not `HTML::Window`)
- Defining properties on the underlying Window object instead of on
the WindowProxy itself.
2024-02-24 08:05:55 +01:00
Julian Offenhäuser
9b1b8828b4
Ports: Add xmp-cli (Extended Module Player)
2024-02-24 02:55:05 +01:00
Julian Offenhäuser
d429b2ff6d
Ports: Add libxmp
...
This is a library that can render most tracker module files into a PCM
buffer.
2024-02-24 02:55:05 +01:00
Aliaksandr Kalenik
05d5e11966
LibWeb: Allow HTMLElement with contenteditable=true to be focusable
2024-02-24 00:19:55 +01:00
Sönke Holz
bcb68eb632
Meta: Set the RAM size to 1G for aarch64 in run.py
...
The "raspi3b" QEMU machine doesn't like RAM sizes other than 1G.
2024-02-24 00:07:13 +01:00
Matthew Olsson
d2cfea5acc
LibWeb: Add Animation event handler attributes
2024-02-23 21:23:57 +01:00
Matthew Olsson
2dd5d0c310
LibWeb: Implement Animation.reverse()
2024-02-23 21:23:57 +01:00
Matthew Olsson
9ab73f2675
LibWeb: Implement Animation.updatePlaybackRate()
2024-02-23 21:23:57 +01:00
Matthew Olsson
d351389d72
LibWeb: Implement Animation.persist()
2024-02-23 21:23:57 +01:00
Matthew Olsson
3c055ff76d
LibWeb: Implement Animation.cancel()
2024-02-23 21:23:57 +01:00
Matthew Olsson
9abe472928
LibWeb: Implement Animation.finish()
2024-02-23 21:23:57 +01:00
Matthew Olsson
c0b9179d9a
LibWeb: Implement Animation.pause()
2024-02-23 21:23:57 +01:00
Matthew Olsson
83fd28e089
LibWeb: Add a demo for web-animations
2024-02-23 20:52:37 +01:00
Matthew Olsson
fc62989f1a
LibWeb: Add missing visits for Document's pending animation event queue
2024-02-23 20:52:37 +01:00
Matthew Olsson
4e27d07ff2
LibWeb: Use initial value for animation start if it does not exist
...
This fixes an issue where a property could not be animated unless the
element had a specified value for that property somewhere in its
styling.
2024-02-23 20:52:37 +01:00