* add CanGc to new_resolved and use it where possible
Signed-off-by: Gae24 <96017547+Gae24@users.noreply.github.com>
* add CanGc to new_rejected
Signed-off-by: Gae24 <96017547+Gae24@users.noreply.github.com>
---------
Signed-off-by: Gae24 <96017547+Gae24@users.noreply.github.com>
* Use counter instead of time for HTMLFormElement.
Fixes#25455
Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>
* Update components/script/dom/htmlformelement.rs to include suggestions
Co-authored-by: Martin Robinson <mrobinson@igalia.com>
Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>
---------
Signed-off-by: Narfinger <Narfinger@users.noreply.github.com>
Co-authored-by: Martin Robinson <mrobinson@igalia.com>
* Allow attaching UA shadow roots to any element
Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
* Implement a UA shadow tree for the <meter> element
Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
* Add UA styles for the meter element
Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
* Include spec text when computing meter state
Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
---------
Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
Previously, the code would incorrectly return without updating
the flags if the caller tried to reset multiple flags at once
and the not all of them were true.
Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
Rework the `WebViewDelegate::intercept_web_resource_load` into
`WebViewDelegate::load_web_resource` and clean up internal messaging.
The main thing here is adding objects which manage the response to these
delegate methods. Now we have `WebResourceLoad` and
`InterceptedWebResourceLoad` which make it much harder to misuse the
API.
In addition, the internal messaging for this is cleaned up. Canceling
and finishing the load are unrelated to the HTTP body so they are no
longer subtypes of an HttpBodyData message. Processing of messages is
made a bit more efficient by collecting all body chunks in a vector and
only flattening the chunks at the end.
Finally, "interceptor" is a much more common spelling than "intercepter"
so I've gone ahead and made this change everywhere.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
This patch makes mach shell-quote its arguments when rerunning itself
with `nix-shell`, so that spaces and other special characters are
handled correctly.
Signed-off-by: Delan Azabani <dazabani@igalia.com>
This is a step toward the renderer-per-WebView goal. It moves various
details out of `IOCompositor`.
- Image output: This is moved to servoshell as now applications can
access the image contents of a `WebView` via
`RenderingContext::read_to_image`. Most options for this are moved to
`ServoShellPreferences` apart from `wait_for_stable_image` as this
requires a specific kind of coordination in the `ScriptThread` that is
also very expensive. Instead, paint is now simply delayed until a
stable image is reached and `WebView::paint()` returns a boolean.
Maybe this can be revisited in the future.
- Shutdown: Shutdown is now managed by libservo itself. Shutdown state
is shared between the compositor and `Servo` instance. In the future,
this sharing might be unecessary.
- `CompositeTarget` has been removed entirely. This no longer needs to
be passed when creating a Servo instance.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Co-authored-by: Ngo Iok Ui (Wu Yu Wei) <yuweiwu@pm.me>
This moves the GL accelerated media setup out of `RenderingContext`
which prevents making libservo dependo on the Wayland and X11 versions
of surfman explicitly. This support is experimental and (honestly) a bit
broken. I've confirmed that this works as well as it did before the
change.
The main thing here is that the configuration, which currently needs
surfman types, moves to servoshell. In addition:
1. Instead of passing the information to the Constellation, the setup is
stored statically. This is necessary to avoid introducing a
dependency on `media` in `webrender_traits`. It's quite likely that
`media` types should move to the internal embedding API to avoid
this. This is preserved for a followup change.
2. The whole system of wrapping the media channels in an abstract type
is removed. They could be either mpsc channels or IPC channels. This
was never going to work because mpsc channels cannot be serialized
and deserialized with serde. Instead this just uses IPC channels. We
also have other ways of doing this kind of abstraction in Servo so we
do not need another. The `mpsc` version was hard-coded to be
disabled.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
When the embedder drops the last WebView handle, the webview is
destroyed, but the weak handle in libservo never gets cleaned up.
This patch adds a step to `spin_event_loop` that cleans up any weak
handles that have been destroyed. In theory, checking the strong count
should be more efficient than trying to upgrade each handle (only to
throw away the strong handle).
Signed-off-by: Delan Azabani <dazabani@igalia.com>
This will become the new global Servo renderer while each WebView will
also have its renderer (but not yet).
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Co-authored-by: Ngo Iok Ui (Wu Yu Wei) <yuweiwu@pm.me>