Luke Warlow
5098ed6b1f
LibWeb: Add HTMLSelectElement showPicker()
...
Adds the showPicker() function for select elements.
This doesn't do the check for "being rendered" which is in the spec.
2024-06-17 07:01:26 -06:00
Timothy Flynn
06ed0dfcc1
LibWeb: Run clang-format
...
We mistakenly did not add the clang-format linter to the new repo's CI,
and some unformatted code made its way into the repo.
2024-06-16 15:30:28 -04:00
circl
d2f9ba7db1
Revert "LibWeb: Use memcpy() in CanvasRenderingContext2D.getImageData()"
...
This reverts commit 59cb7994c6
.
This change caused a bug where getImageData returned the image in
BGRA8888 format instead of RGBA8888.
2024-06-14 16:54:32 +02:00
Aliaksandr Kalenik
8feaecd5c8
LibWeb: Create BlockContainer layout node for <input type="button">
...
...and shadow tree with TextNode for "value" attribute is created.
This means InlineFormattingContext is used, and button's text now
respects CSS text-decoration properties and unicode-ranges.
2024-06-14 07:58:55 +02:00
Luke Warlow
ee64684565
LibWeb: Add Contrast preference
2024-06-13 11:18:38 +02:00
Hexeption
2f4668edce
LibWeb: Added HTMLLinkElement.as
2024-06-13 07:58:11 +02:00
Aliaksandr Kalenik
cbd566a354
LibWeb+WebContent: Move PageClient::paint() into TraversableNavigable
...
This way we leak less LibWeb implementation details into WebContent.
2024-06-10 14:30:20 +03:00
Aliaksandr Kalenik
c7133faf26
LibWeb: Rename Navigable::paint() to record_painting_commands()
...
This method does not paint, but only records painting commands that
could be passed to painting commands executor, which will perform
actual painting.
2024-06-10 14:30:20 +03:00
Andreas Kling
e636851481
LibHTTP+RequestServer: Add HTTP::HeaderMap and use for response headers
...
Instead of using a HashMap<ByteString, ByteString, CaseInsensitive...>
everywhere, we now encapsulate this in a class.
Even better, the new class also allows keeping track of multiple headers
with the same name! This will make it possible for HTTP responses to
actually retain all their headers on the perilous journey from
RequestServer to LibWeb.
2024-06-09 15:34:02 +02:00
Shannon Booth
e0bbbc729b
LibWeb: Add stub for ValidityState
...
This fixes https://html5test.com/ as previously an exception was being
thrown after trying to access this attribute which would then result in
a popup about the test failing (and none of the test results being
shown).
2024-06-09 10:13:32 +02:00
Jamie Mansfield
bbd82265e1
LibWeb/CSS: Implement FontFaceSet.onloadingerror
2024-06-07 19:30:35 +02:00
Jamie Mansfield
e56e09b820
LibWeb/CSS: Implement FontFaceSet.onloadingdone
2024-06-07 19:30:35 +02:00
Jamie Mansfield
4210586730
LibWeb/CSS: Implement FontFaceSet.onloading
2024-06-07 19:30:35 +02:00
Jamie Mansfield
8f2cb6755b
LibWeb: Implement HTMLAreaElement.referrerPolicy
2024-06-07 09:54:19 +02:00
Jamie Mansfield
64eadab181
LibWeb: Implement HTMLIFrameElement.referrerPolicy
2024-06-07 09:54:19 +02:00
Jamie Mansfield
1aa58b6d8c
LibWeb: Implement HTMLImageElement.referrerPolicy
2024-06-07 09:54:19 +02:00
Jamie Mansfield
f82c727071
LibWeb: Implement HTMLLinkElement.referrerPolicy
2024-06-07 09:54:19 +02:00
Jamie Mansfield
469cbe78de
LibWeb: Use Reflect for HTMLAnchorElement.referrerPolicy
2024-06-07 09:54:19 +02:00
Jamie Mansfield
53d7aa53a2
LibWeb: Use Enumerated for HTMLScriptElement.referrerPolicy
2024-06-07 09:54:19 +02:00
Andrew Kaster
d90a9ab70c
LibWeb: Add Web::UIEvents::KeyCode and KeyModifier enums, drop Kernel
...
This was the last Kernel header we had. Move the definitions we need
into a UIEvents header similar to MouseButton.
2024-06-07 09:44:41 +02:00
Enver Balalic
862fc91b2c
LibWeb: Implement HTMLImageElement::decode with a few FIXMEs
...
Implements enough of HTMLImageElement::decode for it to not break
websites and actually load an image :)
2024-06-06 08:20:02 +02:00
Andreas Kling
f42c18bc4c
LibGfx: Make Painter::target() return a Bitmap&
...
Painter always has a target bitmap, so let's return a reference.
2024-06-05 15:37:05 +02:00
Andreas Kling
fe4cc32380
Everywhere: Include <LibGfx/Painter.h> in fewer places
...
Touching Painter.h now rebuilds ~40 files instead of ~300.
2024-06-05 15:37:05 +02:00
Andreas Kling
57906a4e1b
LibGfx: Move Gfx::Painter::WindingRule => Gfx::WindingRule
2024-06-05 15:37:05 +02:00
Andreas Kling
254d040ff4
LibGfx: Move Gfx::Painter::ScalingMode => Gfx::ScalingMode
...
This will allow users to avoid including Painter.h
2024-06-05 15:37:05 +02:00
Andreas Kling
6a96920dbc
LibGfx: Remove Bitmap and Painter "scale" concept
...
We don't need intrinsic scale factors for Gfx::Bitmap in Ladybird,
as everything flows through the CSS / device pixel ratio mechanism.
This patch also removes various unused functions instead of adapting
them to the change.
2024-06-05 15:37:05 +02:00
Aliaksandr Kalenik
5285e22f2a
LibWeb+WebContent: Move scrollbar painting into WebContent
...
The main intention of this change is to have a consistent look and
behavior across all scrollbars, including elements with
`overflow: scroll` and `overflow: auto`, iframes, and a page.
Before:
- Page's scrollbar is painted by Browser (Qt/AppKit) using the
corresponding UI framework style,
- Both WebContent and Browser know the scroll position offset.
- WebContent uses did_request_scroll_to() IPC call to send updates.
- Browser uses set_viewport_rect() to send updates.
After:
- Page's scrollbar is painted on WebContent side using the same style as
currently used for elements with `overflow: scroll` and
`overflow: auto`. A nice side effects: scrollbars are now painted for
iframes, and page's scrollbar respects scrollbar-width CSS property.
- Only WebContent knows scroll position offset.
- did_request_scroll_to() is no longer used.
- set_viewport_rect() is changed to set_viewport_size().
2024-06-05 07:03:42 +02:00
Jamie Mansfield
2ffda00347
LibWeb: Implement HTMLImageElement.crossOrigin
2024-06-05 05:42:47 +01:00
Jamie Mansfield
d7d60268ec
LibWeb: Implement HTMLLinkElement.crossOrigin
2024-06-05 05:42:47 +01:00
Jamie Mansfield
735859bc10
LibWeb: Implement HTMLLinkElement.fetchPriority
2024-06-05 05:42:47 +01:00
Jamie Mansfield
d1f884533e
LibWeb: Update "create a link request" for spec changes
...
Fetch priority is added, and one line is split into two :)
2024-06-05 05:42:47 +01:00
Jamie Mansfield
21cf2c2981
LibWeb: Implement HTMLScriptElement.fetchPriority
2024-06-05 05:42:47 +01:00
Jamie Mansfield
8315ad6759
LibWeb: Implement HTMLImageElement.fetchPriority
2024-06-05 05:42:47 +01:00
Jamie Mansfield
2fde20adf9
LibWeb: Add IDL enum for fetch priority attribute
2024-06-05 05:42:47 +01:00
Andreas Kling
4822d1da4e
LibWeb: Remove unused CRC2D::bitmap_font_fill_text()
2024-06-04 18:45:30 +02:00
Andreas Kling
04a6e2f83d
LibWeb: Remove Gfx::BitmapFont
...
This class supported the binary bitmap font file format in SerenityOS,
and isn't something we need in Ladybird.
2024-06-04 18:45:30 +02:00
Simon Wanner
6b2c459901
LibTextCodec: Fix ISO-8859-1 vs. windows-1252 handling in web contexts
...
The Encoding specification maps ISO-8859-1 to windows-1252 and expects
the windows-1252 translation table to be used, which differs from
ISO-8859-1 for 0x80-0x9F.
Other contexts expect to get the actual ISO-8859-1 encoding, with 1-to-1
mapping to U+0000-U+00FF, when requesting it.
`decoder_for_exact_name` is introduced, which skips the mapping from
aliases to the encoding name done by `get_standardized_encoding`.
2024-06-04 10:21:07 +02:00
Jamie Mansfield
e13b9bef5c
LibWeb: Don't warn when 'scopes' is present in import maps
...
Another mistake I made when implementing import map support.
2024-06-01 07:42:48 -04:00
Jamie Mansfield
76eb7568c9
LibWeb: Set import map scopes when parsing
2024-06-01 07:42:48 -04:00
Andreas Kling
a3782782fa
LibJS: Remove two unused members from ExecutionContext
2024-05-31 16:31:33 +02:00
Andrew Kaster
46e00a8f5e
LibWeb: Parse TokenizedFeatures from window.open
2024-05-30 16:16:33 -04:00
Andrew Kaster
e2d50dc5dd
LibWeb: Move window.open TokenizedFeature parsing into its own file
2024-05-30 16:16:33 -04:00
Matthew Olsson
9ea6ab0ad4
LibJS+LibWeb: Fix a ton of JS_CELL-like macro issues
2024-05-30 09:29:20 -06:00
Andrew Kaster
9bc1318a78
LibWeb: Consume user activation when showing a picker dialog
2024-05-29 21:30:15 +02:00
Andrew Kaster
a3a74245d6
LibWeb: Implement consume user activation AO
2024-05-29 21:30:15 +02:00
Andrew Kaster
45860e3878
LibWeb: Move consume history-action user activation to Window
2024-05-29 21:30:15 +02:00
Andrew Kaster
9c6ebe21d2
LibWeb: Remove get prefix from activation timestamp getters
2024-05-29 21:30:15 +02:00
Andrew Kaster
2fde20993b
LibWeb: Update show the picker if applicable to latest spec text
2024-05-29 21:30:15 +02:00
Jamie Mansfield
7da449ce01
LibWeb: Check correct activation (spec fix)
...
See:
- https://github.com/whatwg/html/commit/d28284f
2024-05-29 09:32:59 -06:00
Jamie Mansfield
34b2a4f7ca
LibWeb: Add getter for history-action activation
2024-05-29 09:32:59 -06:00
Jamie Mansfield
a741f68eb9
LibWeb: Implement "consume history-action user activation"
2024-05-29 09:32:59 -06:00
Jamie Mansfield
30539db2fc
LibWeb: Use Infinity<double> for infinity
...
Co-authored-by: Matthew Olsson <matthewcolsson@gmail.com>
2024-05-29 09:32:59 -06:00
Jamie Mansfield
01bd179eef
LibWeb: Implement UserActivation
2024-05-29 09:32:59 -06:00
Jamie Mansfield
227151b881
LibWeb: Add getter for sticky activation
2024-05-29 09:32:59 -06:00
Tim Ledbetter
bb923983fc
LibWeb: Implement WorkerGlobalScope.importScripts()
...
This method allows workers to synchronously import one or more scripts.
2024-05-29 08:17:18 +02:00
Tim Ledbetter
975a067f58
LibWeb: Align worker ESO getters with the specification
...
The `api_base_url()` and `policy_container()` getters now get their
respective objects from the global scope.
2024-05-29 08:17:18 +02:00
Tim Ledbetter
2d487ee5ab
LibWeb: Add spec comments to WorkerEnvironmentSettingsObject::setup()
...
No behavior change.
2024-05-29 08:17:18 +02:00
Aliaksandr Kalenik
b8d18ebcf7
LibWeb+WebContent: Change event loop to synchronously paint next frame
...
...instead of scheduling repaint timer in PageClient.
This change fixes flickering on Discord that happened because:
- Event loop schedules repainting by activating repaint timer
- `Document::tear_down_layout_tree()` destroys paintable tree
- Repaint timer invokes callback and renders an empty frame because
paintable tree was destroyed
2024-05-28 18:21:18 +02:00
Jamie Mansfield
3095daa7c8
LibWeb: Implement HTMLImageElement.currentSrc
...
Removes some console noise from lner.co.uk :)
2024-05-27 17:34:59 +02:00
Jamie Mansfield
600daea544
LibWeb: Implement HTMLIFrameElement.loading
2024-05-27 17:34:59 +02:00
Jamie Mansfield
9ee061ea14
LibWeb: Implement HTMLImageElement.loading
...
Removes some console noise while loading mmu.ac.uk :)
2024-05-27 17:34:59 +02:00
Jamie Mansfield
c484625631
LibWeb: Add IDL enum for lazy loading attribute
2024-05-27 17:34:59 +02:00
Timothy Flynn
eb3b8f8ee4
LibWeb: Implement EventSource for server-sent events
...
EventSource allows opening a persistent HTTP connection to a server over
which events are continuously streamed.
Unfortunately, our test infrastructure does not allow for automating any
tests of this feature yet. It only works with HTTP connections.
2024-05-26 18:29:24 +02:00
Timothy Flynn
9cc186b929
LibWeb: Implement the "queue a task" steps as a distinct AO
...
This will be needed by EventSource.
2024-05-26 18:29:24 +02:00
Shannon Booth
67b1f4af55
LibWeb: Implement HTMLFormElement.encoding
2024-05-26 07:47:59 +02:00
Shannon Booth
aeb815cc66
LibWeb: Implement HTMLFormElement.enctype
2024-05-26 07:47:59 +02:00
Matthew Olsson
a98ad191c7
Userland: Add ESCAPING annotations to a bunch of places
...
This isn't comprehensive; just a result of a simple grep search.
2024-05-22 21:55:34 -06:00
Matthew Olsson
a5f4c9a632
AK+Userland: Remove NOESCAPE
...
See the next commit for an explanation
2024-05-22 21:55:34 -06:00
Tim Ledbetter
c0e504fbdd
LibWeb: Add some missing [FIXME]
IDL attributes
2024-05-21 19:29:04 +02:00
Tim Ledbetter
58bb5e1f7a
LibWeb: Use [Reflect]
to implement HTMLPreElement.width
2024-05-21 19:28:43 +02:00
Tim Ledbetter
2a7cf1c588
LibWeb: Implement the width
and height
attributes where missing
...
This change adds the `width` and `height` properties to
`HTMLVideoElement` and `HTMLSourceElement`. These properties reflect
their respective content attribute values.
2024-05-21 19:28:43 +02:00
Tim Ledbetter
9f9aa62128
LibWeb: Implement the hspace
and vspace
attributes
...
These properties reflect their respective content attributes.
2024-05-21 19:28:43 +02:00
Timothy Flynn
b5ba60f1d1
LibWeb: Change Fetch's ProcessBodyError to accept a plain JS value
...
This callback is meant to be triggered by streams, which does not always
provide a WebIDL::DOMException. Pass a plain value instead. Of all the
users of this callback, only one actually uses the value, and already
converts the DOMException to a plain value.
2024-05-20 16:57:52 -04:00
Tim Ledbetter
68a1a78a1a
LibWeb: Use FIXME extended attribute where possible
2024-05-19 17:35:25 +02:00
Shannon Booth
4fe0cbcf85
LibWeb: Use 'FIXME' extended attribute where possible
...
This improves the debuggability of many live web pages :^)
2024-05-19 16:24:11 +02:00
Shannon Booth
8d5665ebe1
LibWeb: Add stub for IDBFactory
2024-05-19 16:24:11 +02:00
Matthew Olsson
74aeb57631
LibWeb: Add a few missing visits to m_rel_list members
2024-05-19 09:26:30 +02:00
Tim Ledbetter
272cd30f17
LibWeb: Add missing visit to m_labels
in HTMLElement
2024-05-18 18:29:52 +02:00
Tim Ledbetter
c36ba450be
LibWeb: Generate binding for HTMLObjectElement.contentWindow
attribute
...
This only required adding the appropriate definition to the IDL file,
as `NavigableContainer` already implements the logic that we need.
2024-05-18 18:12:08 +02:00
Tim Ledbetter
2447a25753
LibWeb: Implement the labels
attribute for all labelable elements
...
This returns a `NodeList` of all the labels associated with the given
element.
2024-05-18 18:09:18 +02:00
Tim Ledbetter
3dc86747f0
LibWeb: Implement the HTMLOutputElement.htmlFor
attribute
...
This returns a DOMTokenList that reflects the `for` attribute.
2024-05-18 11:23:20 +02:00
Tim Ledbetter
acc1fa3c62
LibWeb: Generate binding for the HTMLObjectElement.form
attribute
...
This only required adding the appropriate definition to the IDL file,
as `FormAssociatedElement` already implements the logic that we need.
2024-05-18 11:04:04 +02:00
Tim Ledbetter
6bf22075ed
LibWeb: Implement the HTMLLabelElement.form
attribute
...
This returns the form element associated with the given label element's
control or null if the label has no control.
2024-05-18 11:04:04 +02:00
Tim Ledbetter
5296338e7a
LibWeb: Check all elements in same tree to determine labeled control
...
Previously, when looking for the labeled control of a label element, we
were only checking its child elements. The specification says we should
check all elements in the same tree as the label element.
2024-05-18 11:04:04 +02:00
Tim Ledbetter
fc395716e9
LibWeb: Return NonnullGCPtr<DOMTokenList> from relList
getters
2024-05-18 11:03:49 +02:00
Tim Ledbetter
51fc30a191
LibWeb: Implement the HTMLLinkElement.relList
attribute
...
This returns a DOMTokenList that reflects the `rel` attribute.
2024-05-16 08:06:26 +02:00
Tim Ledbetter
fc4e0cf10e
LibWeb: Implement the HTMLFormElement.relList
attribute
...
This returns a DOMTokenList that reflects the `rel` attribute.
2024-05-16 08:06:26 +02:00
Tim Ledbetter
0a3e1846f0
LibWeb: Implement the HTMLAreaElement.relList
attribute
...
This returns a DOMTokenList that reflects the `rel` attribute.
2024-05-16 08:06:26 +02:00
Tim Ledbetter
b7fd39c2e6
LibWeb: Implement the HTMLAnchorElement.relList
attribute
...
This returns a DOMTokenList that reflects the `rel` attribute.
2024-05-16 08:06:26 +02:00
Tim Ledbetter
63246577d2
LibWeb: Use correct type for MessageEventInit.ports
...
This didn't work previously because the IDL generator used the
incorrect type for some types of sequences within dictionaries.
2024-05-16 08:04:01 +02:00
Tim Ledbetter
763b7f0e0c
LibWeb: Implement the HTMLOptionElement.form
attribute
...
This returns the parent form of a HTMLOptionElement or null if the
element has no parent form.
2024-05-16 08:03:13 +02:00
Tim Ledbetter
fe7df98d7d
LibWeb: Use correct IDL definition for CanvasImageData methods
...
It is now possible to pass an optional `ImageDataSettings` object to
the `CanvasImageData.createImageData()` and
`CanvasImageData.getImageData()` methods.
2024-05-16 08:02:59 +02:00
Andrew Kaster
8872008958
LibWeb: Use correct JS_CELL name for WorkerEnvironmentSettingsObject
2024-05-16 08:02:43 +02:00
Andrew Kaster
60b3436ea3
LibWeb: Support loading FontFaces constructed with binary data
2024-05-14 12:31:10 -06:00
Andreas Kling
59cb7994c6
LibWeb: Use memcpy() in CanvasRenderingContext2D.getImageData()
...
Instead of copying the image data pixel-by-pixel, we can memcpy full
scanlines at a time.
This knocks a 4% item down to <1% in profiles of Another World JS.
2024-05-13 17:29:37 +02:00
Shannon Booth
89a536b57a
LibWeb: Remove resolved FIXME about putting HTMLALlCollection in HTML NS
...
This was an unfortunate artifact from development. I originally added
this class in the DOM namespace alongside HTMLCollection until I
realized it was defined by the HTML spec instead. To remind myself to
move it over to the HTML namespace, I left this comment. It was moved
to the correct namespace before upstreaming to the main repo, but I
forgot to remove this comment!
2024-05-12 07:28:09 +01:00
Andreas Kling
ae11a4de1c
LibJS: Remove unused target
field from Completion
...
This shrinks Completion by 16 bytes, which has non-trivial impact
on performance.
2024-05-10 15:03:24 +00:00
Andrew Kaster
e10721f1b5
LibWeb: Add stub implementation of FontFaceSet and Document.fonts
...
This is now enough for duolingo to load and use its fallback fonts.
2024-05-08 10:39:16 +02:00
Jamie Mansfield
987198782c
LibWeb/Fetch: Use "json" destination
...
See:
- https://github.com/SerenityOS/serenity/commit/da8d0d8
- https://github.com/whatwg/fetch/commit/49bff76
- https://github.com/whatwg/html/commit/37659e9
2024-05-07 17:27:37 -06:00
Jamie Mansfield
e2f242a552
LibWeb/Fetch: Implement "fetch destination from module type" AO
...
See:
- https://github.com/whatwg/html/commit/37659e9
2024-05-07 17:27:37 -06:00