Sam Atkins
2a3675f0c1
LibWeb: Make "currentcolor" lowercase in Properties.json
...
It's technically case-insensitive, but the spec always defines it as
"currentcolor" so it feels wrong to capitalise it differently there.
2021-09-17 23:06:45 +02:00
Sam Atkins
854d6e5822
LibWeb: Persuade CSS Parser that idents like currentcolor
are colors
...
Shorthand properties were only checking for `ColorStyleValue`s, which
excludes identifier colors. Now they accept them too, including the
various `-libweb-foo` colors. :^)
2021-09-17 23:06:45 +02:00
Sam Atkins
17bb913625
LibWeb: Implement currentcolor
special value
...
The `currentcolor` identifier represents the current value of the
`color` property. This is the default value for `border-color` and
`text-decoration-color`, and is generally useful to have. :^)
2021-09-17 23:06:45 +02:00
Sam Atkins
86f78bff2a
LibWeb: Make StyleValue::to_color() take a Node instead of the Document
...
This is in preparation for the `currentcolor` value, which needs to know
what Node it's on so it can check the `color`.
2021-09-17 23:06:45 +02:00
Andreas Kling
c2c007b356
LibWeb: Don't request WebContent repaint while we have repaints pending
...
This prevents flickering by ensuring that WebContent is only ever
painting into the back buffer bitmap. Without this change, it was
possible for WebContent to paint into the front buffer bitmap.
2021-09-17 14:54:51 +02:00
Andreas Kling
17a5c96b7c
LibWeb: Make a SharedBitmap struct for OOPWV bitmaps
...
Instead of having separate members for "bitmap ID" and "bitmap", let's
wrap them in a struct.
2021-09-17 14:39:42 +02:00
Andreas Kling
4fcb1be734
LibWeb: Skip rendering box-shadow blur if we don't have memory for it
...
A slight loss in graphical fidelity is better than not rendering the
page at all.
2021-09-17 13:20:18 +02:00
Andreas Kling
e2e6c12ea0
LibWeb: Make ComputedValues return larger items by const reference
2021-09-17 13:20:18 +02:00
Andreas Kling
11bb6e045f
LibWeb: Add the IdleDeadline interface from the RequestIdleCallback spec
2021-09-17 13:20:18 +02:00
Andreas Kling
64df30230d
LibWeb: Add HTML::Task::Source::IdleTask
...
This represents what the spec calls the "idle-task task source".
2021-09-17 13:20:18 +02:00
Tobias Christiansen
f8ea730f29
LibWeb: Flexbox: Add default value for AlignItems
...
Previously there was no default value and wrapping broke when the
container didn't have a align-items specified.
2021-09-16 22:51:15 +02:00
Sam Atkins
3964b81d2b
LibWeb: Add for CSS fill/stroke/stroke-color
properties for SVG
...
In the spec, `fill` and `stroke` are supposed to be a shorthands for
various properties. But since the spec is still a working draft, and
neither Firefox or Chrome support the `fill-color` or `stroke-color`
properties, we'll stick with `fill` and `stroke` as simple colors for
now.
Also, note that SVG expects things in "user units", and we are assuming
that 1px = 1 user unit for now.
2021-09-16 22:30:33 +02:00
Brian Gianforcaro
889ade06fe
LibWeb: Use explicit move to avoid unnecessary RefPtr ref / unref
2021-09-16 17:17:13 +02:00
Brian Gianforcaro
2b57018196
LibWeb: Use default instead of an empty constructor/destructor
...
Default implementations allow for more optimizations.
See: https://pvs-studio.com/en/docs/warnings/v832/
2021-09-16 17:17:13 +02:00
Andreas Kling
d69e4f9ca7
LibWeb: Don't dump full data URLs in ResourceLoader logging
...
Some pages use *really* large data URLs. :^)
2021-09-16 01:39:47 +02:00
Andreas Kling
58b84f953c
LibWeb: Add fast_is<HTMLTemplateElement>()
...
This was showing up as hot in profiles, as the HTML parser calls it
quite a lot.
2021-09-16 01:39:47 +02:00
Andreas Kling
cb895edad4
LibWeb: Move Attribute into the DOM namespace
2021-09-16 01:39:47 +02:00
Tobias Christiansen
ef22a1b2dc
LibWeb: Avoid setting definite {width,height} when "auto" is specified
...
Auto is not specified at all.
2021-09-15 22:28:28 +02:00
Tobias Christiansen
6c15eeb367
LibWeb: Flexbox: Somewhat suppport "align-items"
...
There probably are a lot of edge cases missing but this moves us forward
at least a bit.
2021-09-15 22:28:28 +02:00
Tobias Christiansen
67bf553fad
LibWeb: Flexbox: Make step 11 of the layout algorithm more align aware
2021-09-15 22:28:28 +02:00
Tobias Christiansen
307f90b675
LibWeb: Add proper parsing of the AlignItems property
...
This teaches all the relevant places about 'align-items'.
2021-09-15 22:28:28 +02:00
Andreas Kling
422d725c79
LibWeb: Support "c" and "C" curves in SVG <path> data
...
These instructions now generate cubic Bézier curves.
2021-09-15 20:57:43 +02:00
Andreas Kling
c4f2976d83
LibWeb: Remove unused SVGSVGElement::m_bitmap
2021-09-15 20:57:43 +02:00
Andrew Kaster
a269a32a17
Meta: Use Lagom:: namespaced names for code generators
...
This will be required when we switch to a SuperBuild that has Lagom as
a configure time dependency, but is a distinct enough change to be
separate.
2021-09-15 19:04:52 +04:30
Andreas Kling
28fabd4728
LibWeb: Make Layout::Node::paint() pure virtual
...
In the past, the base class implementation of this was used to descend
into subtrees and paint children. That is now taken care of by
StackingContext::paint_descendants() instead, and nothing used this.
2021-09-15 15:25:47 +02:00
Andreas Kling
eac31e21f2
LibWeb: Avoid some redundant calls to Layout::Box::absolute_rect()
...
Computing the absolute rect of a box requires walking the chain of
containing blocks and apply any offsets encountered. This can be slow in
deeply nested box trees, so let's at least avoid doing it multiple times
when once is enough.
2021-09-15 14:18:17 +02:00
Sam Atkins
1103eb8d44
LibWeb: Remove unused NodeWithStyle::m_position field
2021-09-15 13:55:25 +02:00
Sam Atkins
ee671a20cc
LibWeb: Make flex-box ignore out-of-flow child boxes
...
Previously, out-of-flow children still took up space inside a flex-box
container, leaving an odd gap. Now they don't! :^)
2021-09-15 13:55:25 +02:00
Sam Atkins
2844f89a83
LibWeb: Implement "out-of-flow" property of Layout Box
...
In some situations, a layout box should not participate in the standard
layout process, for example when set to `position: absolute`.
2021-09-15 13:55:25 +02:00
Andreas Kling
7de23aede2
LibWeb: Parse the <svg viewBox> attribute
...
Just parse it into an SVG::ViewBox object for now, we don't actually use
it for anything yet.
2021-09-15 11:56:26 +02:00
Andreas Kling
63c4fcdc69
LibWeb: Add SVG::ViewBox to represent SVG view boxes
...
This also comes with a simple little parsing helper. :^)
2021-09-15 11:56:26 +02:00
Andreas Kling
8949b0def6
LibWeb: Add an SVG::AttributeNames namespace
...
There are a whole bunch of SVG attributes, and we shouldn't mix them in
with the HTML attributes. This patch adds some of them to the new
namespace, but there are more to be added. :^)
2021-09-15 11:56:26 +02:00
Sam Atkins
3f31f109b5
LibWeb: Speed up computed style calculation
...
Rather than destroying and rebuilding the entire document layout tree in
every call to `ComputedCSSStyleDeclaration::property()`, we now just
make sure that the layout tree exists.
This speeds up the DOM Inspector significantly, from taking several
seconds to select an element, to almost instant. :^)
2021-09-15 11:24:11 +02:00
Andreas Kling
70398645f3
LibWeb: Improvements to error handling in HTML foreign content parsing
...
Follow the spec more closely when encountering an invalid start or end
tag during foreign content parsing.
2021-09-14 23:49:45 +02:00
Tobias Christiansen
fad825e94e
LibWeb: Flexbox: Avoid division by zero
...
This is not a good thing, one should not divide by zero! :^)
2021-09-14 22:52:48 +02:00
Tobias Christiansen
85af2ac450
LibWeb: Flexbox: Change the name of a variable to correspond to spec
...
The spec used two different names for the same thing, and it was
confusing to read the spec on the one side and have the other name in
the code.
2021-09-14 22:52:48 +02:00
Tobias Christiansen
15b61ce143
LibWeb: Flexbox: Resolve relative size of flex-items more correctly
...
This is still very much not the right thing to do, but at least
relatively sized flex-items get the right size.
2021-09-14 22:52:48 +02:00
kleines Filmröllchen
047c013be0
LibWeb: Add several computed CSS styles
...
These are mostly combined styles such as background, as well as handling
the Invalid and Custom property IDs (which both make no sense).
2021-09-14 22:02:14 +02:00
kleines Filmröllchen
6865a5a447
LibWeb: Add CombinedBoderRadiusStyleValue for CSS border-radius
...
This style value can hold all four border radii and format them into
valid CSS for the `border-radius` property.
2021-09-14 22:02:14 +02:00
Andreas Kling
20fb900937
LibJS+LibWeb: Move script parse time logging from JS::Script to LibWeb
...
Let's only log HTML::ClassicScript parse times for now. Otherwise things
will get excessively noisy in test-js and the test262 runner.
2021-09-14 21:41:51 +02:00
Andreas Kling
10c489713d
LibJS+LibWeb: Let JS::Script::parse() return a list of errors (on error)
...
These are really supposed to be a list of SyntaxError objects, but for
now we simply return all the Parser::Error objects we got from Parser.
2021-09-14 21:41:51 +02:00
Luke Wilde
e4d97add3d
LibWeb: Implement ParentNode.children
...
Required by Web Platform Tests for the innerHTML/outerHTML tests.
2021-09-14 02:09:18 +02:00
Luke Wilde
8e0f3436a2
LibWeb: Make the innerHTML setter spec compliant
...
This adds innerHTML to ShadowRoot in the process.
2021-09-14 02:09:18 +02:00
Luke Wilde
f62477c093
LibWeb: Implement HTML fragment serialisation and use it in innerHTML
...
The previous implementation was about a half implementation and was
tied to Element::innerHTML. This separates it and puts it into
HTMLDocumentParser, as this is in the parsing section of the spec.
This provides a near finished HTML fragment serialisation algorithm,
bar namespaces in attributes and the `is` value.
2021-09-14 02:09:18 +02:00
Idan Horowitz
ed5128d759
LibWeb: Add the URL::{protocol, pathname, search, hash} attributes
2021-09-14 00:14:45 +02:00
Idan Horowitz
7f9818bcbc
LibWeb: Add the URL::host, URL::hostname & URL:port attributes
2021-09-14 00:14:45 +02:00
Idan Horowitz
e89320887e
LibWeb: Add the URL::username, URL::password & URL::origin attributes
2021-09-14 00:14:45 +02:00
Idan Horowitz
fe32c9c3bd
LibWeb: Add the URL::searchParams attribute
2021-09-14 00:14:45 +02:00
Idan Horowitz
1841fbd3e4
LibWeb: Add the URL::href attribute and URL::to_json method
2021-09-14 00:14:45 +02:00
Idan Horowitz
e6abc1b44e
LibWeb: Add a bare implementation of the URL built-in
...
This only has the constructor implemented for now.
2021-09-14 00:14:45 +02:00