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
Idan Horowitz
d6cfa34667
AK: Make URL::m_port an Optional<u16>, Expose raw port getter
...
Our current way of signalling a missing port with m_port == 0 was
lacking, as 0 is a valid port number in URLs.
2021-09-14 00:14:45 +02:00
Idan Horowitz
af5b62d8cd
LibWeb: Move url_{encode, decode} to URL/URLSearchParams.{h, cpp}
...
The new URL built-in that will reside in URL.{h, cpp} will have an
URLSearchParams member, which means it has to include its header, and
as such URLSearchParams.h can't include URL's header, which it needs as
it uses the url_{encode, decode} functions.
2021-09-14 00:14:45 +02:00
Andreas Kling
bf86419979
LibWeb: Use ComputedCSSStyleDeclaration to generate data for inspector
2021-09-13 22:21:57 +02:00
Tobias Christiansen
416559414c
LibWeb: Use right dimension when positioning flex-items
...
Previously the cross-size was used to determine the position along the
main axis which is obviously wrong.
2021-09-13 21:20:35 +01:00
Linus Groh
8cd4a889fe
LibWeb: Stop dumping selectors in ParentNode::query_selector{,_all}()
...
This isn't particularly useful (anymore), especially without any context
about _why_ this output suddenly appears in the debug console.
2021-09-13 21:16:33 +01:00
Tobias Christiansen
1d47ec380f
LibWeb: FlexBox: Use correct source when querying for the main size
...
This was an error in understanding what calculated_values are and that
those are not what is wanted when getting the main available size of the
box in the FlexFormattingContext.
The calculation around the size calculation is still a bit wonky, but
this is definietly better.
2021-09-13 21:37:16 +02:00
Tobias Christiansen
4c1da4d43a
LibWeb: Fix opacity ComputedCSSStyleDeclaration
...
There was a classic copy&paste error, opacity wasn't getting the right
computed value to convert.
2021-09-13 21:26:31 +02:00
Tobias Christiansen
f160fe0407
LibWeb: Add support for a bunch of ComputedCSSStyleDeclarations
...
This patch adds support for a whole lot of other more easy
ComputedCSSStyleDeclararions.
2021-09-13 20:31:06 +02:00
Brian Gianforcaro
7852b0fbc3
LibWeb: Identical sub-expression bug in URLSearchParams::set
...
Flagged by sonarcloud, we appear to want to make sure the entry.name
matches the name we are searching for duplicates of.
Link:
https://sonarcloud.io/project/issues?fileUuids=AXvdC606QRvsO1F91p5C&id=SerenityOS_serenity&open=AXvdC_NEQRvsO1F91p6j
2021-09-13 14:05:22 +00:00
Andreas Kling
09087b8f8e
LibWeb: Add handful of CSS properties and identifiers
...
This is just to make the CSS parser stop whining when it encounters some
very common properties and identifiers. More work will be required to
actually support these things. :^)
2021-09-13 15:25:53 +02:00
Andreas Kling
449cbd5ecc
LibWeb: Implement Node.isEqualNode(Node? otherNode)
2021-09-13 12:54:24 +02:00
Andreas Kling
a0528598b5
LibWeb: Implement Node.isSameNode(Node? otherNode)
2021-09-13 12:49:23 +02:00
Andreas Kling
7632cce5e5
LibWeb: Make requestAnimationFrame() work in multi-process mode
...
Since we don't have a direct connection to WindowServer, this is slighly
more naive implementation than what we were doing for single-process
mode.
Basically, there's a global RequestAnimationFrameDriver object that
has a 16ms single-shot timer. Whenever someone registers for a RAF
callback, we start the timer (if needed).
This is not ideal, but it's better than nothing. :^)
2021-09-13 02:03:06 +02:00