Sam Atkins
ccfe197e5a
LibWeb: Make serializing CSS Parser types infallible
2023-08-22 17:51:48 +01:00
Sam Atkins
846c719e49
LibWeb: Make serializing Supports rules infallible
2023-08-22 17:51:48 +01:00
Sam Atkins
91114c157b
LibWeb: Make serializing selectors infallible
2023-08-22 17:51:48 +01:00
Sam Atkins
afa27bad19
LibWeb: Make serializing media-queries infallible
2023-08-22 17:51:48 +01:00
Sam Atkins
2754c16e97
LibWeb: Make serializing GridTrack classes infallible
2023-08-22 17:51:48 +01:00
Sam Atkins
6bee81cfb6
LibWeb: Make serializing basic CSS types infallible
2023-08-22 17:51:48 +01:00
Sam Atkins
b5893ee115
LibWeb: Make Serialize functions infallible
2023-08-22 17:51:48 +01:00
Andrew Kaster
b3bd232a5e
LibWeb: Implement StructuredSerialize for BigIntObject and Symbol
2023-08-22 13:08:08 +02:00
Andrew Kaster
f3cf7496a1
LibWeb: Add spec steps to StructuredSerialize
...
In preparation for serializing more types, let's move the implementation
closer to the steps in the spec.
2023-08-22 13:08:08 +02:00
Andi Gallo
685ef4ec82
LibWeb: Stop collecting lookahead items on forced break
...
This avoids a crash since such items don't have a node nor CSS
properties. Fixes crashes on Wikipedia pages which contain preformatted
code.
2023-08-22 11:33:45 +02:00
Aliaksandr Kalenik
cca779e7f6
LibWeb: Treat grid items with z-index != auto as positioned elements
2023-08-22 11:33:24 +02:00
Aliaksandr Kalenik
95a8dec373
LibWeb: Treat grid item as it creates stacking context during painting
...
Grid specification https://www.w3.org/TR/css-grid-2/#z-order defines
special painting order for grid items which should be the same as for
defined for inline-blocks in CSS2.
2023-08-22 11:33:24 +02:00
Aliaksandr Kalenik
b4064320bd
LibWeb: Add m_is_grid_item
in Layout::Node
...
This information is going to be needed during painting to treat grid
items as stacking contexts.
2023-08-22 11:33:24 +02:00
stelar7
434d95ef55
LibWeb: Add missing promise rejection in execute_async_script
2023-08-21 13:22:04 -06:00
stelar7
b0adf96eff
LibWeb: Implement the timeout step of execute_async_script
2023-08-21 13:22:04 -06:00
stelar7
23b378822b
LibWeb: Stub out Release Actions
...
This allows WPT to open the browser, and it no longer instantly crashes
2023-08-21 13:22:04 -06:00
Andi Gallo
3d7e788981
LibWeb: Improve the line breaking algorithm
...
Check the width of the next token after white space to decide line
breaks. The next width can also be the total width of multiple tokens.
This better follows the CSS Text specification and matches behavior of
other browsers.
Fixes #20388 .
2023-08-21 19:31:00 +02:00
Andreas Kling
0103940cee
LibWeb: Resolve viewport-relative <img sizes> values
...
We still don't know how to resolve font-relative lengths in <img sizes>
since we don't always have font size information available at this stage
in the pipeline, but we can at least handle viewport-relative lengths.
This fixes an issue on many websites where low-resolution images were
loaded (appropriate for a small viewport) even when the viewport is big.
2023-08-21 13:56:18 +02:00
Andreas Kling
ae5313d33c
LibWeb: Add Document::viewport_rect()
...
This is a convenience helper that returns an empty rect if there is no
browsing context (to get the actual rect from).
2023-08-21 13:56:18 +02:00
Sam Atkins
b8e694c0f2
LibWeb: Implement the :dir()
selector pseudo-class
2023-08-21 13:51:56 +02:00
Sam Atkins
5b125811f1
LibWeb: Add support for pseudo-class functions that take an ident param
...
This is prep work for `:dir()`, though other pseudo-classes may well use
it in the future too.
2023-08-21 13:51:56 +02:00
Sam Atkins
9522f761a3
LibWeb: Implement "directionality" of an Element
2023-08-21 13:51:56 +02:00
Sam Atkins
9f83c0f0da
LibWeb: Add Element::is_document_element() helper
...
This is *not* the same as `Node::is_document()`, just to be confusing.
It basically means it's the root element.
2023-08-21 13:51:56 +02:00
Ali Mohammad Pur
2462064fcd
LibWasm+LibWeb: Parse and validate all Wasm SIMD instructions
2023-08-21 13:39:32 +03:30
Bastiaan van der Plaat
0facfd3257
LibWeb: Make handle_mousewheel wheel delta use pixels
2023-08-20 12:17:58 -06:00
MacDue
46f42d9755
LibWeb: Add support for the SVG gradient spreadMethod attribute
2023-08-20 20:04:10 +02:00
Sam Atkins
a48b2c1c66
LibWeb: Fill in missing kinds of calc() expansion in StyleComputer
...
This is all of them currently, except Length, because we lack the needed
information to be able to expand font-relative lengths.
The whole way `expand_unresolved_values()` works is awkward, but at some
point we'll be able to run the simplification algorithm on the
calculation, which will either return a single value, or a new
calculation that's simplified as much as possible.
Mostly I just wanted that FIXME log message to go away, because it's
overwhelming on certain sites.
2023-08-20 19:38:03 +02:00
Sam Atkins
2c7603f2ae
LibWeb: Add helper for creating <dimension>
CSS tokens
2023-08-20 19:38:03 +02:00
Andreas Kling
27ddfa84fa
LibWeb: Accept height: {min,max,fit}-content
...
And treat them as "auto" for now, per CSS-SIZING-3, with a FIXME about
supporting more layout directions.
This fixes an issue on MDN where `height: max-content` was not
overriding height from non-CSS presentational hints.
2023-08-20 19:37:50 +02:00
Andreas Kling
90e95d38d7
LibWeb: Make align-items: normal
behave like stretch
on flex items
...
CSS-ALIGN-3 tells us that `normal` behavior inside flex containers is
simply to behave as `stretch` so this patch makes them behave the same
inside FFC.
Furthermore, we change the `align-items` initial value to `normal`,
matching other engines.
2023-08-20 19:37:50 +02:00
Aliaksandr Kalenik
d05be0d504
LibWeb: Fix Request::visit_edges
to actually visit m_body
...
This fixes bug introduced in bdd3a16b16
that `m_body` is not visited because `BodyType` variant has
`JS::NonnullGCPtr` instead of `JS::GCPtr`.
2023-08-20 19:08:37 +02:00
Andi Gallo
769f11f9ae
LibWeb: Implement table missing cells fixup
...
Fixes #19936 .
2023-08-20 18:38:15 +02:00
Andi Gallo
4c0816b002
LibWeb: Move table grid slots functionality to separate module
2023-08-20 18:38:15 +02:00
Sam Atkins
6367b6a3d0
LibWeb: Use x-macro for StyleValue::Type instead of manual boilerplate
...
This saves us from having to manually write these every time we add a
new type of StyleValue:
- bool is_foo() const;
- FooStyleValue const& as_foo() const;
- FooStyleValue& as_foo();
2023-08-20 17:59:36 +02:00
Sam Atkins
f7f7ab9775
LibWeb: Forward-declare RevertStyleValue
2023-08-20 17:59:36 +02:00
Sam Atkins
fae05faf7f
LibWeb: Rename StyleValue::Type::Url -> URL
...
This matches the URLStyleValue name. (This will be important shortly.)
2023-08-20 17:59:36 +02:00
Aliaksandr Kalenik
01cc14714e
LibWeb: Implement getting "inclusive ancestor navigables" of a document
2023-08-20 16:07:24 +02:00
Andreas Kling
e211f6c925
LibWeb: Implement getting "ancestor navigables" of a document
2023-08-20 16:07:24 +02:00
Aliaksandr Kalenik
c8271ac9e6
LibWeb: Start fleshing out "navigate to a fregment" for Navigables
2023-08-20 16:06:56 +02:00
Aliaksandr Kalenik
d5adb7f10c
LibWeb: Implement "finalize a same-document navigation"
2023-08-20 16:06:56 +02:00
Aliaksandr Kalenik
37f5253ec9
LibWeb/Layout: Add support for grid-auto-flow
in GFC
2023-08-20 15:36:18 +02:00
Andreas Kling
703c2bb06e
LibWeb: Add support for parsing grid-auto-flow
CSS property
...
Co-Authored-By: Aliaksandr Kalenik <kalenik.aliaksandr@gmail.com>
2023-08-20 15:36:18 +02:00
Sam Atkins
1a5533e528
LibWeb: Tokenize CSS numbers as doubles
...
Every later stage uses doubles, so dropping that precision right at the
start of parsing is a little silly. :^)
2023-08-20 14:25:18 +01:00
Sam Atkins
c20df751c9
LibWeb: Use correct NumericLimits in CalculatedStyleValue
2023-08-20 14:25:18 +01:00
Sam Atkins
1feacd4b52
LibWeb: Use doubles for CSS dimension types
...
Avoid unintentionally converting between float and double multiple times
by just using double everywhere. Also, remove the unused `int` versions
of their constructors.
2023-08-20 14:25:18 +01:00
Sam Atkins
95f80bc65b
LibWeb: Use double
in CSS Token
...
It was already a double internally, so let's expose that and get rid of
some of clangd's red wiggly underlines.
2023-08-20 14:25:18 +01:00
Shannon Booth
9cf5b67162
LibWeb: Return a HTMLFormControlsCollection from HTMLFormElement element
...
Instead of a HTMLCollection
2023-08-20 11:04:03 +02:00
Shannon Booth
27dd2a40ad
LibWeb: Implement HTMLFormControlsCollection
...
This collection is used in the form element for when element lookup
yields multiple elements.
2023-08-20 11:04:03 +02:00
Shannon Booth
daefe744ba
LibWeb: Implement RadioNodeList
...
This interface is used in the interface for HTMLFormControlsCollection
as a live view over its matching elements.
Currently the "value" attribute for this interface is left
unimplemented.
2023-08-20 11:04:03 +02:00
Shannon Booth
c2bf391f81
LibWeb: Don't mark LiveNodeList as final
...
This is to accommodate for adding the RadioNodeList interface which
returns a live list of elements.
2023-08-20 11:04:03 +02:00