Instead of creating a `ROUTER` for each fetch, create a fetch thread
which handles all incoming and outcoming fetch requests. Now messages
involving fetches carry a "request id" which indicates which fetch is
being addressed by the message. This greatly reduces the number of file
descriptors used by fetch.
In addition, the interface for kicking off fetches is simplified when
using the `Listener` with `Document`s and the `GlobalScope`.
This does not fix all leaked file descriptors / mach ports, but greatly
eliminates the number used. Now tests can be run without limiting
procesess on modern macOS systems.
Followup work:
1. There are more instances where fetch is done using the old method.
Some of these require more changes in order to be converted to the
`FetchThread` approach.
2. Eliminate usage of IPC channels when doing redirects.
3. Also eliminate the IPC channel used for cancel handling.
4. This change opens up the possiblity of controlling the priority of
fetch requests.
Fixes#29834.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
This change:
1. Adds safety documentation where it was missing.
2. Limits the scope of unsafe code in some cases to where it is actually
unsafe.
3. Converts some free functions to associated functions and methods,
thereby making them more likely to be called safely.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
* Fix Clippy warning: remove unneeded late initialization of string
Signed-off-by: L Ashwin B <lashwinib@gmail.com>
* Fixed the comments placement
Signed-off-by: L Ashwin B <lashwinib@gmail.com>
---------
Signed-off-by: L Ashwin B <lashwinib@gmail.com>
* CanGc fixes and checks in multiple files
Signed-off-by: L Ashwin B <lashwinib@gmail.com>
* CanGc fixes in storageevent.rs
Signed-off-by: L Ashwin B <lashwinib@gmail.com>
---------
Signed-off-by: L Ashwin B <lashwinib@gmail.com>
* CanGc fixes starting from dommatrix.rs
fixed conflicts
Signed-off-by: L Ashwin B <lashwinib@gmail.com>
~
* cleaning up
Signed-off-by: L Ashwin B <lashwinib@gmail.com>
* fixed cannot find value can_gc in this scope error
Signed-off-by: L Ashwin B <lashwinib@gmail.com>
---------
Signed-off-by: L Ashwin B <lashwinib@gmail.com>
* Implement encoding-parse-a-url algorithm
Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
* Parse url with encoding when setting href on HtmlAnchorElement
Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
* Update WPT expectations
Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
---------
Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
* Implement DOMRect::FromRect
Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
* Silence crown errors
The rect type does not contain any gc'd members,
so not rooting it is perfectly fineSilence crown errors
Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
* Update WPT expectations
Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
* Add SVGRect to the list of exposed interface globals
Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
* Update WPT manifest
Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
---------
Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
* Throw NotSupported error and update expected results for xrSession_updateRenderState
Signed-off-by: L Ashwin B <lashwinib@gmail.com>
* deleted the log file
Signed-off-by: L Ashwin B <lashwinib@gmail.com>
---------
Signed-off-by: L Ashwin B <lashwinib@gmail.com>
* Simplified types in globalscope.rs, folded callbacks, and replaced Result with Fallible
Signed-off-by: L Ashwin B <lashwinib@gmail.com>
* clippy: Refactor script/dom/globalscope.rs to avoid overly complex types
Signed-off-by: L Ashwin B <lashwinib@gmail.com>
---------
Signed-off-by: L Ashwin B <lashwinib@gmail.com>
* Use nan-safe comparison in DOMQuad::GetBounds
This fixes at least the following WPT test:
* css/geometry/DOMQuad-nan.html
Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
* Update WPT expectations
Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
---------
Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
This ensure that methods named `new()` do not take `&self` or return
`Box<Self>`. In addition, method are renamed (or removed when not
necessary) to avoid being prefixed with `from_`.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Instead of exposing many different kinds of messages to the compositor
that are routed through the constellation, expose a single message type
which can be sent across IPC channels. In addition, this IPC channel and
the route to the crossbeam channel with the compositor is created along
with the `CompositorProxy`, simplifying what needs to be passed around
during pipeline initialization.
Previously, some image updates (from video) were sent over IPC with a
special serialization routine and some were sent via crossbeam channels
(canvas). Now all updates go over the IPC channel `IpcSharedMemory` is
used to avoid serialization penalties. This should improve performance
and reduce copies for video, but add a memory copy overhead for canvas.
This will improve in the future when canvas renders directly into a
texture.
All-in-all this is a simplification which opens the path toward having a
standard compositor API and reduces the number of duplicate messages and
proxying that had to happen in libservo.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
* extract generated class constructor hook into handwritten functions
Signed-off-by: Gae24 <96017547+Gae24@users.noreply.github.com>
* downcast to window only when it's actually used
Signed-off-by: Gae24 <96017547+Gae24@users.noreply.github.com>
* simplify downcast
Signed-off-by: Gae24 <96017547+Gae24@users.noreply.github.com>
* rename htmlconstructor to constructor, include call_default_constructor in it
Signed-off-by: Gae24 <96017547+Gae24@users.noreply.github.com>
---------
Signed-off-by: Gae24 <96017547+Gae24@users.noreply.github.com>
* clippy: Fix type_complexity warning in components/script/dom
Signed-off-by: taniishkaaa <tanishkasingh2004@gmail.com>
* Use destructure function only once
Signed-off-by: taniishkaaa <tanishkasingh2004@gmail.com>
---------
Signed-off-by: taniishkaaa <tanishkasingh2004@gmail.com>