Commit graph

4985 commits

Author SHA1 Message Date
Luke Wilde
cbe0901706 LibWeb: Implement performance.mark and performance.clearMarks 2023-03-23 21:00:43 +00:00
Luke Wilde
89ebef9730 LibWeb: Add a list of the entry names in the PerformanceTiming interface
Required for the PerformanceMark constructor, which doesn't allow any
mark names that have the same name as an attribute in the
PerformanceTiming interface in a Window context.
2023-03-23 21:00:43 +00:00
Luke Wilde
31b507afbf LibWeb: Introduce Performance Timeline and its Performance functions 2023-03-23 21:00:43 +00:00
Luke Wilde
4c3f1481ea LibWeb: Remove FIXME for existing [Default] object toJSON()functions 2023-03-23 21:00:43 +00:00
Luke Wilde
ddec4cd7f2 LibWeb: Create the correct error objects in XHR::handle_errors
Aborts and network errors were accidentally creating TimeoutError
exceptions instead of AbortError and NetworkError respectively.
2023-03-23 20:01:38 +01:00
Srikavin Ramkumar
5c8be3b072 LibWeb: Add missing constructors to HTMLElement IDLs 2023-03-23 13:37:40 +01:00
MacDue
cfc9966654 LibWeb: Add scaleable checkboxes (with theme/accent-color support)
This reworks checkboxes to use a tiny 16x16 SDF for the tick icon along
with an antialiased background/border.

The checkbox now works well at any scale, shows the various checkbox
state (enabled, disabled, being pressed), and supports using the colors
from the active system theme and/or the accent-color property.
2023-03-23 08:27:51 +00:00
MacDue
87b8a36e56 LibWeb: Parse and plumb the accent-color CSS property 2023-03-23 08:27:51 +00:00
Andreas Kling
d005b1ad1b LibWeb: Support loading file:// URLs via fetch (through ResourceLoader)
This builds on the existing ad-hoc ResourceLoader code for HTTP fetches
which works for files as well.

This also includes a test that checks that stylesheets loaded with the
"file" URL scheme actually work.
2023-03-22 23:34:32 +00:00
Andreas Kling
652676fdc1 LibWeb: Make ResourceLoader insert a Content-Type header for file://
We make a guess using the MIME type guessing API in LibCore. This frees
clients of this code from having to do the guessing.
2023-03-22 23:34:32 +00:00
Luke Wilde
95da08e035 LibWeb: Add workaround to restore cross-origin stylesheet functionality
CORS cross-origin responses in the No CORS request mode provide an
opaque filtered response, which is the original response with certain
attributes removed/changed.

The relevant effect it has is setting the body to `null`, which means
`body_bytes` has `Empty` in the process_response_consume_body callback.
This effectively disables cross-origin linked resources
(e.g. stylesheets).

However, the web actually depends on this, especially for stylesheets
retrieved from a cross-origin CDN. For example, Shopify websites
request stylesheets from `cdn.shopify.com` and Substack websites
request stylesheets from `substackcdn.com`.

This makes this a specification bug, as this code was written from it.

The workaround is to read the actual body from the unfiltered response
and then call `process_linked_resource` from there.

This _should_ be safe to do, as linked resource fetches do not include
credentials (i.e. cookies and the Authorization header), so it cannot
provide personalized responses.
2023-03-22 22:26:16 +00:00
Sam Atkins
fcd4e68959 LibWeb: Use actual token representations when parsing CSS <urange>
nasty_hacks--; // :^)
2023-03-22 19:45:40 +01:00
Sam Atkins
c138845013 LibWeb: Store the original representation of CSS tokens
This is required for the `<urange>` type, and custom properties, to work
correctly, as both need to know exactly what the original text was.
2023-03-22 19:45:40 +01:00
Sam Atkins
a3d6d9db37 LibWeb: Correct logic when consuming a CSS number in scientific notation
Before, we were classifying the number as a "number" type if it had an
"E", even if that was not followed by an exponent.
2023-03-22 19:45:40 +01:00
Andreas Kling
96f8cf2971 LibWeb: Consider inline content (line boxes) when measuring overflow
Fixes #13628
2023-03-22 12:56:44 +01:00
Timothy Flynn
2a410f8985 LibWeb: Change "popup"-related storage types to named enums 2023-03-22 00:12:53 +01:00
Timothy Flynn
bff109ee50 LibWeb: Change the "noreferrer" storage type to a named enum 2023-03-22 00:12:53 +01:00
Timothy Flynn
1b811191cd LibWeb+WebContent: Change the "noopener" storage type to a named enum 2023-03-22 00:12:53 +01:00
Lucas CHOLLET
496b7ffb2b LibGfx: Move all image loaders and writers to a subdirectory 2023-03-21 22:39:25 +01:00
implicitfield
a3d43b067a LibWeb: Parse CSS identifiers case-insensitively 2023-03-21 16:07:44 +00:00
Simon Wanner
9e00ef0849 LibWeb: Pass scope in ParentNode::query_selector_all 2023-03-21 10:45:19 +01:00
Simon Wanner
4e6fb65ea3 LibWeb: Pass scope in ParentNode::query_selector 2023-03-21 10:45:19 +01:00
Simon Wanner
f3ba44a9f2 LibWeb: Pass scope in Element::closest 2023-03-21 10:45:19 +01:00
Simon Wanner
d55373067d LibWeb: Pass scope in Element::matches 2023-03-21 10:45:19 +01:00
Simon Wanner
c8ebacb1c9 LibWeb: Support the :scope pseudo class 2023-03-21 10:45:19 +01:00
Timothy Flynn
f8b6369c23 WebContent+Everywhere: Add a WebContent IPC to activate a tab 2023-03-21 09:39:49 +00:00
Timothy Flynn
e6fc35897f WebContent+Everywhere: Add an option to not activate new tabs over IPC
WebDriver, for example, will want to create new tabs without activating
them.
2023-03-21 09:39:49 +00:00
Simon Wanner
03c225b023 LibWeb: Move Element.prototype.style to ElementCSSInlineStyle mixin
Also adds the `PutForwards` extended attribute allowing setting the
style property.
2023-03-20 20:37:40 -04:00
Michiel
2480b94ae7 LibWeb: Support more length types in SVG width/height attributes
Previously we were using the HTML parse_dimension_value method for the
height and width attributes of an SVG element. These attributes should
however be treated as css properties instead and thus also support
calc() and absolute units so we use the css parser for this instead.
2023-03-20 23:45:01 +01:00
Andreas Kling
a6d1307aa4 LibWeb: Don't crash on HTML input element with display: inline
This would previously assert in InlineFormattingContext because we had
an outwardly inline box that wasn't inwardly flow.

Fix this by converting text-based input boxes to inline-blocks. This is
an ad-hoc solution, and there might be a much better way to solve it.
2023-03-20 17:57:58 +01:00
Andreas Kling
00999a245c LibWeb: Let FormattingContext decide the automatic width of its root
Instead of special-casing FlexFormattingContext in the intrinsic sizing
layout helpers, add FormattingContext::automatic_content_width() and let
each context subclass decide what that means.

No behavior change here, just moving this responsibility.
2023-03-20 17:57:58 +01:00
Srikavin Ramkumar
3c49e24977 LibWeb: Scale checkbox image instead of repeating on large checkboxes 2023-03-20 10:15:58 +00:00
Srikavin Ramkumar
def08bcfcf LibWeb: Add indeterminate checkbox styling to useragent stylesheet 2023-03-20 10:15:58 +00:00
Srikavin Ramkumar
c3d6709a9e LibWeb: Implement selector matching for :indeterminate pseudo-class 2023-03-20 10:15:58 +00:00
Srikavin Ramkumar
d177d83b44 LibWeb: Implement indeterminate IDL attribute in HTMLInputElement 2023-03-20 10:15:58 +00:00
Srikavin Ramkumar
aad4051885 LibWeb: Match selected option elements with checked pseudo-class 2023-03-20 10:15:58 +00:00
Aliaksandr Kalenik
4f496e97fe LibWeb: Add keep-alive in response headers if it present in request
This fix addresses issue where, if request headers contain
"Connection: keep-alive", we keep socket open without letting client
know that we support keep-alive connections. This can result in a
large number of open and unused sockets.
2023-03-19 22:31:59 -04:00
Elisée Maurer
38a3e28799 LibWeb: Stub out a few form validation and selection methods 2023-03-19 18:58:50 +00:00
Aliaksandr Kalenik
dcc4868a3c LibWeb: Rename PaintableBox::clip_rect() 2023-03-19 19:04:51 +01:00
Aliaksandr Kalenik
7ddacef3b5 LibWeb: Apply border-radius clip only if overflow hidden for both axis
Before this change `apply_clip_overflow_rect` might crash trying to
access `clip_rect` that does not have value because we currently
support calculation of visible rectangle when `overflow: hidden`
is applied for both axis.
2023-03-19 19:04:51 +01:00
Srikavin Ramkumar
633983d354 LibWeb: Update stylesheet loading to use fetch infrastructure 2023-03-19 14:16:15 +00:00
Srikavin Ramkumar
f7176463b5 LibWeb: Implement 'create a potential-CORS request' algorithm 2023-03-19 14:16:15 +00:00
Andreas Kling
1f99f9523d LibWeb: Add temporary hack for line-height: calc(...)
At the moment, we can't resolve CSS calc() values without having a
LayoutNode. The new StyleProperties::line_height() overload was trying
to do exactly that, which led to an assertion.

This patch makes `line-height: calc(...)` behave the same as
`line-height: normal` for now and adds a FIXME.
2023-03-18 21:15:51 +01:00
Mathis Wiehl
ed1a7aee43 LibWeb: Don't deref HTMLInputElement parent if its null
Don't crash in case the elements parent is null.
2023-03-18 21:05:23 +01:00
Andreas Kling
245e3b9c3a LibWeb: Honor pointer-events: none when hitting a PaintableBox
If the PaintableBox had children, but we didn't hit any of them, we
default to saying that you hit the PaintableBox itself.

However, if said PaintableBox has `pointer-events: none`, we should
say nothing was hit, so that the hit testing can continue.

This fixes an issue where Discord server icons were not clickable.
2023-03-18 20:30:09 +01:00
Andreas Kling
76e520884e LibWeb: Traverse shadow boundaries when looking for focus candidates
This makes focusing input fields by clicking on them work.

Fixes #17801
2023-03-18 20:28:15 +01:00
Andreas Kling
72d817d4ea LibWeb+Browser+Ladybird: Add menu action to dump paint tree 2023-03-18 20:23:35 +01:00
Simon Wanner
a13c21c807 LibWeb: Specify height as 1lh to fix the size of empty text boxes
Previously, empty text boxes would fall back to the min-height: 16px
set on the <input> element. As soon as there is any content they
would usually gain height because the line height of that text is
more than 16px (depending on the font/font-size used).

Now they use height: 1lh for the inner div (which contains the
actual text), which matches the exact height of 1 line of content.
2023-03-18 20:14:52 +01:00
Simon Wanner
a5a3913e39 LibWeb+LibWebView: Show shadow roots in the DOM inspector 2023-03-18 20:14:52 +01:00
Simon Wanner
554c4af90f LibWeb: Add support for the lh and rlh length units
Resolving these units is somewhat tricky because of their interaction
with both font-size and line-height, but this implementation seems to
work as tested in http://wpt.live/css/css-values/lh-unit-001.html and
http://wpt.live/css/css-values/lh-unit-002.html
2023-03-18 20:14:52 +01:00