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>
* Make checking for cookie prefixes case-insensitive
Cookie-Prefixes like "__Host-" and "__Secure-" are case insensitive
as per https://www.ietf.org/archive/id/draft-ietf-httpbis-rfc6265bis-15.html#name-storage-model.
This is tested by many WPT tests in cookies/prefix, for example
* cookies/prefix/__host.document-cookie.html
* cookies/prefix/__host.document-cookie.https.html
Since the implementation and the specification had diverged quite
significantly i also updated/added spec comments where appropriate
and slightly restructured code so its easier to follow. However,
the only change in behaviour is the prefix check described above.
Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
* Update WPT expectations
Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
* Remove unused import
Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
* Fix cookie test cases
Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
* Fix ignore cookie with __Host prefix and no specified path attribute
Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
* Fix another cookie test case
Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
---------
Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
* 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>
* clippy: Fix large size difference between variants in components/shared/webrender/lib.rs
Signed-off-by: chickenleaf <vyaan2000@gmail.com>
* clippy: Fix large size difference between variants of ScriptToCompositorMsg
Signed-off-by: chickenleaf <vyaan2000@gmail.com>
* Remove trailing white space
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
---------
Signed-off-by: chickenleaf <vyaan2000@gmail.com>
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Co-authored-by: Martin Robinson <mrobinson@igalia.com>
BoxFragment::new() had some logic to mark relative positioned boxes with
both insets in the same axis set to something different than `auto` as
overconstrained.
However, this was dead code, since overconstrainment is checked for
getComputedStyle queries, but not for relative positioning.
Also, the logic was wrong: it was detecting vertical overconstrainment
by checking `left` and `bottom` (instead of `top` and `bottom`).
So it can just be removed.
Signed-off-by: Oriol Brufau <obrufau@igalia.com>
* Document "fetch" method
Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
* Bring http_network_or_cache_fetch closer to the spec
Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
* fix test-tidy errors
Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
* Move all code into http_loader.rs
Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
* Don't panic if hyper/servo disagree about valid origins
Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
* Add "otherwise" to spec comment
Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
* Convert FIXME's to TODOs when appropriate
Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
* Remove TODO about No-Store cache directive
Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
* Remove indentation from multiline spec comments
Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
* Add fetch assertions
This is from a spec update where assertions
about requests origin not being client
were added.
Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
* Add note about serializing headers
Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
* Add TODO about partitioning http cache
Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
* Convert FIXME to TODO in script/
Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
* Link to relevant issue for TODO comments
Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
---------
Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
* Update IDLs and Bindings conf
Signed-off-by: Daniel Adams <msub2official@gmail.com>
* Add AES crate
Signed-off-by: Daniel Adams <msub2official@gmail.com>
* Implement DOM interfaces
Signed-off-by: Daniel Adams <msub2official@gmail.com>
* IDL tidy
Signed-off-by: Daniel Adams <msub2official@gmail.com>
* Remove deriveKey from inRealms for now until implemented
Signed-off-by: Daniel Adams <msub2official@gmail.com>
* Fix CryptoKey rustdoc comments
Signed-off-by: Daniel Adams <msub2official@gmail.com>
* Move string constants to top of file
Signed-off-by: Daniel Adams <msub2official@gmail.com>
* Use properly rooted CryptoKey
Signed-off-by: Daniel Adams <msub2official@gmail.com>
* Code clarity
Signed-off-by: Daniel Adams <msub2official@gmail.com>
* Rework NormalizedAlgorithm to not hold a DOMString
Signed-off-by: Daniel Adams <msub2official@gmail.com>
* Add Rustdoc for CryptoKey interface
Signed-off-by: Daniel Adams <msub2official@gmail.com>
* Move ignore mallocsizeof to rand crate, remove from crypto
Signed-off-by: Daniel Adams <msub2official@gmail.com>
* Update cargo lock
Signed-off-by: Daniel Adams <msub2official@gmail.com>
* Fix key handling, implement exportKey with JWK TODO
Signed-off-by: Daniel Adams <msub2official@gmail.com>
* Add missing spec link
Signed-off-by: Daniel Adams <msub2official@gmail.com>
* Use create_buffer_source, remove aes dep from libservo
Signed-off-by: Daniel Adams <msub2official@gmail.com>
* Fix crash when running in worker
Signed-off-by: Daniel Adams <msub2official@gmail.com>
* Update expectations
Signed-off-by: Daniel Adams <msub2official@gmail.com>
* fmt
Signed-off-by: Daniel Adams <msub2official@gmail.com>
* Move CryptoKey and SubtleCrypto behind pref for now
Signed-off-by: Daniel Adams <msub2official@gmail.com>
* Update expectations
Signed-off-by: Daniel Adams <msub2official@gmail.com>
* Readd timeout expectation
Signed-off-by: Daniel Adams <msub2official@gmail.com>
---------
Signed-off-by: Daniel Adams <msub2official@gmail.com>
Anonymous blocks have `height: auto`, so children with a percentage
`height` were considered to have an indefinite height.
However, anonymous blocks need to be skipped for percentage resolution,
so the percentages may actually be definite.
Signed-off-by: Oriol Brufau <obrufau@igalia.com>
Improves the instrumentation to skip all function arguments and also add
spans for some layout modes. This is preparation for improving the
performance of flexbox.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
The first font instance creation in the `SystemFontService` was
triggering fetching font keys, which added an approximately 1ms lag to
this operation. Doing this as soon as the `SystemFontService` thread is
spawned eliminates this lag.
In addition increase the size of the font key and font instance key
batch in order to avoid having to fetch new keys so frequently.
This change also adds profiling spans to the `SystemFontService` so it
is easier to see where it is spending its time when using perfetto.
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>