When inline atomics establish containing blocks for absolute
descendants, layout should happen with those atomics as the containing
block. This ensures that the absolute descendents have the correct
containing block and Fragment parent. This wasn't happening before and
this change fixes that.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Co-authored-by: Oriol Brufau <obrufau@igalia.com>
Up until now, Servo was using a very old version of time to get a
cross-process monotonic timestamp (using `time::precise_time_ns()`).
This change replaces the usage of old time with a new serializable
monotonic time called `CrossProcessInstant` and uses it where `u64`
timestamps were stored before. The standard library doesn't provide this
functionality because it isn't something you can do reliably on all
platforms. The idea is that we do our best and then fall back
gracefully.
This is a big change, because Servo was using `u64` timestamps all over
the place some as raw values taken from `time::precise_time_ns()` and
some as relative offsets from the "navigation start," which is a concept
similar to DOM's `timeOrigin` (but not exactly the same). It's very
difficult to fix this situation without fixing it everywhere as the
`Instant` concept is supposed to be opaque. The good thing is that this
change clears up all ambiguity when passing times as a `time::Duration`
is unit agnostic and a `CrossProcessInstant` represents an absolute
moment in time.
The `time` version of `Duration` is used because it can both be negative
and is also serializable.
Good things:
- No need too pass around `time` and `time_precise` any longer.
`CrossProcessInstant` is also precise and monotonic.
- The distinction between a time that is unset or at `0` (at some kind
of timer epoch) is now gone.
There still a lot of work to do to clean up timing, but this is the
first step. In general, I've tried to preserve existing behavior, even
when not spec compliant, as much as possible. I plan to submit followup
PRs fixing some of the issues I've noticed.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
Currently Cmd/Ctrl + [1-9] and Ctrl + PageUp/Down, since they are
present in most major browsers.
Signed-off-by: Benjamin Vincent Schulenburg <bennyschulenburg@gmx.de>
* Ensure depthFar is non-negative
Signed-off-by: Daniel Adams <msub2official@gmail.com>
* Properly append default features in requestSession
Signed-off-by: Daniel Adams <msub2official@gmail.com>
* Ensure XRRigidTransform init members have finite values
Signed-off-by: Daniel Adams <msub2official@gmail.com>
---------
Signed-off-by: Daniel Adams <msub2official@gmail.com>
Instead of asserting the raw pointer is not null, force callers to
produce a NonNull pointer.
Signed-off-by: Andriy Sultanov <sultanovandriy@gmail.com>
* Make tracing available on all platforms
Signed-off-by: Delan Azabani <dazabani@igalia.com>
* Gate perfetto support behind its own feature
Signed-off-by: Delan Azabani <dazabani@igalia.com>
---------
Signed-off-by: Delan Azabani <dazabani@igalia.com>
* Improved the minibrowser tab bar
Added a close button for each tab as well as another button for opening
a new tab, also changed the styling so it looks more like other
browsers.
Signed-off-by: Benjamin Vincent Schulenburg <bennyschulenburg@gmx.de>
* Make sure to restore the egui visuals after drawing a browser tab
Signed-off-by: Benjamin Vincent Schulenburg <bennyschulenburg@gmx.de>
* Only use colors from the current theme for the minibrowser tabbar
That way we can easily switch between light and dark mode
Signed-off-by: Benjamin Vincent Schulenburg <bennyschulenburg@gmx.de>
---------
Signed-off-by: Benjamin Vincent Schulenburg <bennyschulenburg@gmx.de>
* Update layout of servoshell android app
Signed-off-by: Daniel Adams <msub2official@gmail.com>
* Remove gap after loop/idle text
Signed-off-by: Daniel Adams <msub2official@gmail.com>
---------
Signed-off-by: Daniel Adams <msub2official@gmail.com>
This avoids having to do unnecessary layout work and
prevents resize events from accumulating, which looks
weird.
Signed-off-by: Simon Wülker <simon.wuelker@arcor.de>
From https://drafts.csswg.org/css-flexbox-1/#intrinsic-cross-sizes,
> The min-content/max-content cross size of a single-line flex container
> is the largest min-content contribution/max-content contribution
> (respectively) of its flex items.
We were using the min/max-content size instead of the min/max-content
contribution.
Signed-off-by: Oriol Brufau <obrufau@igalia.com>
* Impl PartialEq and Eq for DomObject
Signed-off-by: Taym <haddadi.taym@gmail.com>
* move to Eq and PartialEq to domobject_derive
Signed-off-by: Taym <haddadi.taym@gmail.com>
---------
Signed-off-by: Taym <haddadi.taym@gmail.com>
- Previously on fedora `./mach bootstrap` would always detect it needs to
reinstall packages and require root permissions.
- use custom queryformat for `rpm -qa` to to just get the package name
(e.g. `openssl-libs` instead of `openssl-libs-3.2.2-3.fc40.i686`
- Use a list to store the output result instead of one string
- Fedora (40) installs `zlib-ng` instead of `zlib` and `libjpeg-turbo` instead
of `libjpeg`, meaning that `rpm` / dnf commands report `zlib` as not installed.
Specifying the actually installed package avoids this problem.
Signed-off-by: Jonathan Schwender <jonathan.schwender@huawei.com>
self.config["android"]["target"] is unset, causing an exception.
We can just use self.target.triple() instead.
Signed-off-by: Jonathan Schwender <schwenderjonathan@gmail.com>
* Update FakeXRDevice to support updating bounds
Signed-off-by: Daniel Adams <msub2official@gmail.com>
* Add missing spec link
Signed-off-by: Daniel Adams <msub2official@gmail.com>
* Mark secondaryViews as optional in FakeXRDevice.setViews
Signed-off-by: Daniel Adams <msub2official@gmail.com>
---------
Signed-off-by: Daniel Adams <msub2official@gmail.com>
In particular, this takes into account that flex items may be stretched,
and if they have an aspect ratio, we ma6y need to convert the stretched
size through the ratio.
Signed-off-by: Oriol Brufau <obrufau@igalia.com>
Co-authored-by: Martin Robinson <mrobinson@igalia.com>
`std::time` is good enough for us here. `cookie` is using `time 0.3`,
but Servo can convert to standard library types when getting data from
`cookie`. This reduces our direct dependencies and removes more use of
the very old `time 0.1` series.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
* Update wgpu to include local const
Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
* set expectations
Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>
---------
Signed-off-by: sagudev <16504129+sagudev@users.noreply.github.com>