| Commit message (Collapse) | Author | Age | Files | Lines |
... | |
|
|
|
| |
Instead of panicking when no found is found for a TextRun, instead print
a warning. This prevents panics on pages with very large font sizes.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
In legacy layout, anonymous text wrappers were inheriting the `overflow`
and `text-overflow` properties. This results in the creation of extra
clipping for these anonymous wrappers which could clip away floats. We
will likely implement `text-overflow` differently in non-legacy layout.
This change marks all legacy layout pseudo elements as "legacy" and also
adds a new pseudo element for non-legacy layout that does not inherit
`overflow`.
Fixes #30562.
Co-authored-by: Oriol Brufau <obrufau@igalia.com>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When display lists update quickly, a hit test result might be returned
for a previous display list / list of hit test items. When that happens,
ignore the hit test result.
This fixes a crash, but there might be situations where we can do
something better, such as wait for display list processing to finish
before performing the hit test. A future change might do this for events
like mouse clicks and touch events that should never be thrown away.
Ultimately, the best thing is likely moving hit testing back to layout
or script so a valid hit test can always be performed against the
current DOM.
Fixes #29796.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* Implement support for `drop-shadow`
* Clean up remnant from early attempts
* Fix misleading comments on GenericSimpleShadow
If Servo-specific `style` changes will need to be upstreamed anyway, I might as well fix a thing that had thrown me off!
* Revert "Fix misleading comments on GenericSimpleShadow"
This reverts commit cdc810b826ac082041adc212c24649ee3b86ca0a.
* Clean up an import
* Update test expectations
* Fix missing expectation on Layout 2013
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Refactor the scrolling and scrollable area calculation on the window
object, to make it better match the specification. This has some mild
changes to behavior, but in general things work the same as they did
before. This is mainly preparation for properly handling viewport
propagation of the `overflow` property but seems to fix a few issues as
well.
There is one new failure in Layout 2020 regarding `position: sticky`,
but this isn't a big deal because there is no support for `position:
sticky` in Layout 2020 yet.
Co-authored-by: Rakhi Sharma <atbrakhi@igalia.com>
|
|
|
|
|
| |
* strict imports formatting
* Reformat all imports
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* Upgrade vendored version of WebRender
* Patch WebRender: upgrade version of gleam
* Restore hit testing implementation
* Fix WebRender warnings
* Adapt Servo to new WebRender
* Update results
* Add a workaround for #30313
This slightly expands text boundaries in order to take into account the
fact that layout isn't measuring glyph boundaries.
|
|
|
|
|
|
| |
Before WebRender would ignore these, but newer version of WebRender have
issues with them. This change simply prevents legacy layout from
creating display items for these types of gradients. This is already the
behavior of non-legacy layout.
|
|
|
|
|
|
|
|
|
|
|
| |
* remove extern crate
* Update components/script_plugins/lib.rs
Co-authored-by: Martin Robinson <mrobinson@igalia.com>
---------
Co-authored-by: Martin Robinson <mrobinson@igalia.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The border image outset support in WebRender is going to be removed and
even in versions of WebRender where it still exists, it fails to render
properly.
A border image is a type of border composed of slices of images. The
"outset" of this kind of border is a property in CSS that makes the
border boundaries expand. Previously, the value was passed to WebRender
which would expand the border by this amount and render the images into
the expanded rectangle.
Since this is going to be removed, we handle this property outside of
WebRender. The change is simply to expand the border area by the outset
before calculating the rest of the border values.
This is necessary for the WebRender upgrade.
|
|
|
|
|
|
| |
Bumps [bitflags](https://github.com/bitflags/bitflags) from 1.3.2 to 2.3.1.
- [Release notes](https://github.com/bitflags/bitflags/releases)
- [Changelog](https://github.com/bitflags/bitflags/blob/main/CHANGELOG.md)
- [Commits](https://github.com/bitflags/bitflags/compare/1.3.2...2.3.1)
|
|
|
|
|
|
|
| |
* Add taplo fmt config for toml fmt
* fmt toml files
* Add even-better-toml to extensions recommendations
|
| |
|
| |
|
| |
|
|
|
| |
This reverts commit 8e15389caedd9b8e1b87cc9e4bfe8350a581546d.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* style: Simplify selector flag setting now that flag setting is atomic
These bits are write-only, actually, and we don't even need to read
them.
Differential Revision: https://phabricator.services.mozilla.com/D141888
* Further changes required by Servo
* style: Support media queries for dynamic-range and video-dynamic-range
This is a stub that only matches "standard" for all platforms.
Differential Revision: https://phabricator.services.mozilla.com/D141053
* style: Remove :-moz-lwtheme-{brighttext,darktext}
They are just convenience for :root[lwthemetextcolor="light"] (and dark,
respectively), but they generally shouldn't be used for dark mode
theming. In the past it was the only way to do it but now we have
prefers-color-scheme.
While at it, change lwthemetextcolor to be "lwtheme-brighttext" for
consistency with similar code we have for popups etc, and move it to
_setDarkModeAttributes.
While at it, remove layout.css.moz-lwtheme.content.enabled (which is
false always, we unshipped these from content successfully).
Differential Revision: https://phabricator.services.mozilla.com/D141593
* style: layout.css.moz-locale-dir.content.enabled
We successfully removed these from content in bug 1740230 (Firefox 96).
Differential Revision: https://phabricator.services.mozilla.com/D141727
* style: Really honor background-color: transparent in HCM even for form controls
I forgot we were doing this "revert-or-initial" shenanigans (which is needed
for stuff like link colors to be honored), so we need to early-return.
Use a more explicit test rather than a reftest for this.
Differential Revision: https://phabricator.services.mozilla.com/D142063
* style: Ignore unchanged property for scroll-linked effect detector
I think this is cleaner.
Differential Revision: https://phabricator.services.mozilla.com/D141737
* style: Allow to derive Parse/ToCss/SpecifiedValueInfo on bitflags
We keep getting this pattern of properties that have a set of joint and
disjoint flags, and copy-pasting or writing the same parsing and
serialization code in slightly different ways.
container-type is one such type, and I think we should have a single way
of dealing with this, thus implement deriving for various traits for
bitflags, with an attribute that says which flags are single vs mixed.
See docs and properties I ported. The remaining ones I left TODOs with,
they are a bit trickier but can be ported with some care.
Differential Revision: https://phabricator.services.mozilla.com/D142418
* Further changes required by Servo
* style: Implement parsing / serialization for container{,-type,-name} CSS properties
Two noteworthy details that may seem random otherwise:
* Moving values around in nsStyleDisplay is needed so that the struct
remains under the size limit that we have to avoid jumping allocator
buckets.
* All the test expectation churn is because tests depend on
`container-type: size` parsing to run, and now they run. Tests for
the relevant bits I implemented are passing, with the only exception
of some `container-name-computed.html` failures which are
https://github.com/w3c/csswg-drafts/issues/7181. Safari agrees with
us there.
Other notes when looking at the spec and seeing how it matches the
implementation:
* `container` syntax doesn't match spec, but matches tests and sanity:
https://github.com/w3c/csswg-drafts/issues/7180
* `container-type` syntax doesn't _quite_ match spec, but matches tests
and I think it's a spec bug since the definition for the missing
keyword is gone:
https://github.com/w3c/csswg-drafts/issues/7179
Differential Revision: https://phabricator.services.mozilla.com/D142419
* style: Remove assert that doesn't hold for text-decorations because of presentation hints
MANUAL PUSH: Orange fix CLOSED TREE
* style: Migrate `<th>` `text-align` behaviour from presentation hint to UA CSS
Differential Revision: https://phabricator.services.mozilla.com/D142494
* style: Deduplicate TokenList values faster
Remember whether we have already de-duplicated them once and avoid doing
that again.
This is an alternative approach that doesn't add overhead to attribute
setting in the general case.
Differential Revision: https://phabricator.services.mozilla.com/D142813
* style: Inherit used color-scheme from embedder <browser> elements
This allows popups and sidebars to use the chrome preferred
color-scheme.
This moves the responsibility of setting the content-preferred color
scheme to the appropriate browsers to the front-end (via tabs.css).
We still return the PreferredColorSchemeForContent() when there's no
pres context (e.g., for display:none in-process iframes). We could
potentially move a bunch of the pres-context data to the document
instead, but that should be acceptable IMO as for general web content
there's no behavior change in any case.
Differential Revision: https://phabricator.services.mozilla.com/D142578
* Further changes required by Servo
* style: Add basic @container rule parsing and boilerplate
For now parse a MediaFeatureCondition. That needs being made more
specific, but that is probably worth its own patch.
Differential Revision: https://phabricator.services.mozilla.com/D143192
* Further changes required by Servo
* style: Tweak cascade priority to split writing-mode and font properties
This makes the worst case for cascade performance slightly more
expensive (4 rather than three declaration walks), but my hope is that
it will make the average case faster, since the best case is now just
two walks instead of three, and writing mode properties are somewhat
rare.
This needs a test, but needs to wait until the writing-mode dependent
viewport units land (will wait to land with a test).
Differential Revision: https://phabricator.services.mozilla.com/D143261
* style: Implement new {small,large,dynamic} viewport units
Differential Revision: https://phabricator.services.mozilla.com/D143252
* Further changes required by Servo
* style: Implement new *vi and *vb units
Differential Revision: https://phabricator.services.mozilla.com/D143253
* style: Implement prefers-contrast: custom and let prefers-contrast ride the trains
Differential Revision: https://phabricator.services.mozilla.com/D143198
* style: Join servo style threads during shutdown
I was unable to change the BLOOM_KEY field to no longer be leaked, as the TLS
is also accessed on the main thread, which is not exited before the leak
checker shuts down.
Differential Revision: https://phabricator.services.mozilla.com/D143529
* Further changes required by Servo
* style: Fix visited handling after bug 1763750
Before bug 1763750, we unconditionally called compute_writing_mode,
which got the writing mode from the cascade mode for visited styles.
However after that bug we only do that if we apply any
writing-mode-related property.
We could just call compute_writing_mode unconditionally, but instead it
seems better to skip all that work for visited cascade and reuse the
mechanism introduced in that bug to only apply the visited-dependent
longhands.
We assert that all visited-dependent longhands are "late" longhands, so
as to also avoid applying the font group and such.
Differential Revision: https://phabricator.services.mozilla.com/D143490
* style: Clean-up viewport unit resolution a bit
I should've caught this when reviewing the new viewport units but alas :-)
Differential Revision: https://phabricator.services.mozilla.com/D143856
* style: Implement `contain: inline-size`
Differential Revision: https://phabricator.services.mozilla.com/D143501
* style: Simplify media query evaluation code a bit
This patch:
* Removes generic <ident> support for media features. These were used
for some privileged media features but are no longer used.
* Simplifies media feature getters by shifting the responsibility of
dealing with RangeOrOperator to the caller. This makes it easier to
implement container-query / mediaqueries-4 syntax, and also cleans up
the code a bunch.
There should be no change in behavior.
Differential Revision: https://phabricator.services.mozilla.com/D144051
* Further changes required by Servo
* style: Move transitions and animations to nsStyleUIReset
This mostly just moves code around, to minimize potential behavior
changes. There are some cleanups that we should try to do long term
(this "have an array with n different counts" is pretty weird).
But for now this should unblock people.
The destination struct (nsStyleUIReset) was chosen mainly because it's
small and non-inherited, and it doesn't seem like a worse place than
nsStyleDisplay.
Differential Revision: https://phabricator.services.mozilla.com/D144183
* Further changes required by Servo
* style: Make media feature evaluation take a computed::Context
This has no behavior change right now, but will simplify sharing code
with container queries.
Container queries will have container information in the
computed::Context (this is necessary anyways for container-based units),
so this avoids having to have different code for media and container
queries.
Differential Revision: https://phabricator.services.mozilla.com/D144152
* Further changes required by Servo
* style: Add scroll() to animation-timeline for style system
scroll() is defined in the spec proposal, and there is a temporary spec:
https://drafts.csswg.org/scroll-animations-1/rewrite#scroll-notation.
The spec is still under development, so we don't drop the orignal
scroll-timeline at rule. Instead, we add a new scroll() notation to
animation-timeline, and support both syntax for now.
Differential Revision: https://phabricator.services.mozilla.com/D143417
* style: Tweak contain bitflag definition order to avoid static constructors
This has no behavior change otherwise. The STRICT definition depended on
SIZE, which was defined later. That's fine in Rust, but in C++ it causes
the initialization to be dynamic because it doesn't have the definition
of SIZE yet (ugh).
This is the fix for the regression, though the following patch turns on
constexpr support in cbindgen, which would've caught this at build-time,
and guarantees that we don't have extra static constructors.
Differential Revision: https://phabricator.services.mozilla.com/D144316
* style: Move some of the media query code to a more generic queries module
No behavior change, just moving and renaming files.
The code in the "queries" module will be shared between @media and
@container.
@media has some other code that container queries doesn't need like
MediaList / MediaType / etc. That remains in the media_queries module.
Differential Revision: https://phabricator.services.mozilla.com/D144435
* Further changes required by Servo
* style: cleanup animation-name
Make the representation the same between Gecko and Servo code. This will
enable further clean-ups in the future.
Make serialization be correct, serializing as identifier unless it's an
invalid one (in which case we serialize as a string).
This changes our stringification behavior in the specified style, but
now it will match the computed style and be more correct over-all.
Differential Revision: https://phabricator.services.mozilla.com/D144473
* Further changes required by Servo
* style: Add support for parsing container-query-specific features
There are some mediaqueries-5 features that we still don't support and
explain the remaining failures in at-container-{parsing,serialization}.
Differential Revision: https://phabricator.services.mozilla.com/D144446
* Further changes required by Servo
* style: Introduce Optional<T> to represent optional values in the style system
cross-fade() was kinda doing this in its own way with PercentOrNone, but
since now we have more use-cases for this we should probably make this a
slightly more general solution.
I added some convenience APIs, but they're unused as of this patch so
let me know if you want them gone.
Differential Revision: https://phabricator.services.mozilla.com/D144831
* style: Fix insertRule with layer statements before imports
We need to do a bit more nuanced check because @layer statements might
go before imports.
Differential Revision: https://phabricator.services.mozilla.com/D144996
* style: Factor out parsing the query feature name
No behavior change.
Differential Revision: https://phabricator.services.mozilla.com/D145229
* style: Refactor media feature expression representation in preparation to support multi-range syntax
No behavior change.
Depends on D145229
Differential Revision: https://phabricator.services.mozilla.com/D145230
* style: Implement media feature expression multi-range syntax
Differential Revision: https://phabricator.services.mozilla.com/D145231
* style: Remove proton places tooltip code
There's nobody working on it, and tooltips should hopefully be nice
enough after recent changes (bug 1765423).
Having it enabled causes artifacts like bug 1767815 comment 3. We can
always rescue this from hg history if needed.
Differential Revision: https://phabricator.services.mozilla.com/D145621
* style: Simplify selector flags setup even more
In my investigation for bug 1766439, I am digging into why selector
matching regressed.
It doesn't help that the selector-matching code is instantiated a
gazillion times (so there's a ton of copies of the relevant functions).
This was needed in the past because we had different ways of setting the
selector flags on elements, but I unified that recently and now we only
need to either set them or not. That is the kind of thing that
MatchingContext is really good for, so pass that instead on
MatchingContext creation.
Differential Revision: https://phabricator.services.mozilla.com/D145428
* Further changes required by Servo
* style: Track @container condition id in style rules
Much like we track layer rules. Consolidate that "containing rule state
we pass down while building the cascade data" in a single struct that we
can easily restore.
For now, do nothing with it. I want to land this patch separately
because it touches the Rule struct and CascadeData rebuilds, which both
are performance sensitive.
Its layout shouldn't change because I also changed LayerId to be a u16
(this shouldn't matter in practice, since LayerOrder is already a u16).
Differential Revision: https://phabricator.services.mozilla.com/D145243
* Further changes required by Servo
* style: Fix layer statement rules with multiple layer names
MANUAL PUSH: Trivial orange fix CLOSED TREE.
* style: Implement piecewise linear function
Differential Revision: https://phabricator.services.mozilla.com/D145256
* style: Convert specified value tests to compile-time tests
These were written at a time where std::mem::size_of wasn't a `const fn` in
Rust.
Now that it is, we can make these tests live in the style crate, and the build
not to compile if they fail.
Differential Revision: https://phabricator.services.mozilla.com/D146103
* Further changes required by Servo
* style: Move size of tests to compile-time tests in the style crate
Same reasoning as the previous commit.
Differential Revision: https://phabricator.services.mozilla.com/D146104
* Further changes required by Servo
* style: Lint and 32-bit build fix.
MANUAL PUSH: Bustage fix CLOSED TREE
* style: Implement 'update' media feature
Differential Revision: https://phabricator.services.mozilla.com/D146338
* style: Clean up unused -moz-window-shadow values
After bug 1768278 and bug 1767815 there's no more uses of the cliprounded value
in the tree (also it causes artifacts on HiDPI screens so we probably don't
want new usages).
The "sheet" value is unused, and the other values other than "default" and
"none" are only derived from "default", so they don't need to be exposed in the
style system.
Differential Revision: https://phabricator.services.mozilla.com/D145821
* style: More container queries plumbing
Provide container information in computed::Context and use it to resolve
the container queries.
This still fails a lot of tests because we are not ensuring that layout
is up-to-date when we style the container descendants, but that's
expected.
Differential Revision: https://phabricator.services.mozilla.com/D146478
* Further changes required by Servo
* style: Ensure options in listbox selects are not stacking contexts by default
We could have a different property or something but this seems
reasonable as well probably.
Differential Revision: https://phabricator.services.mozilla.com/D146994
* style: Implement overflow-clip-margin: <length>
Differential Revision: https://phabricator.services.mozilla.com/D146432
* style: Change order of container shorthand
Since the initial value of container-type is an open issue [1],
I'm leaving that as-is for now.
[1] https://github.com/w3c/csswg-drafts/issues/7202
Differential Revision: https://phabricator.services.mozilla.com/D147338
* style: Make modal dialog code more generic, and make it apply to fullscreen too behind a pref
For now, don't turn it on by default yet, because I want to wait for
more discussion in https://github.com/w3c/csswg-drafts/issues/6965 and
so on. But I think the code is simple enough to land this.
Differential Revision: https://phabricator.services.mozilla.com/D147295
* style: Cache computed styles objects display: none subtrees
This reuses our existing undisplayed style generation, but in a
per-document rather than per-nsComputedDOMStyle object, which means that
we can avoid re-resolving styles of elements in display: none subtrees
much more often.
This brings the test-case in the bug to par with other browsers or
better, and is much simpler than the initial approach I tried back in
the day.
Differential Revision: https://phabricator.services.mozilla.com/D147547
* Further changes required by Servo
* style: Parse scroll-snap-stop style and propagate it to APZ side
Depends on D146147
Differential Revision: https://phabricator.services.mozilla.com/D145850
* style: Update color-mix() syntax to match the current spec
Test expectation updates for this in the latest patch of the bug.
Differential Revision: https://phabricator.services.mozilla.com/D147002
* Further changes required by Servo
* style: Make the color interpolation code more generic
It's really piece-wise premultiplied interpolation, with a special-case
for hue, so centralize the implementation.
Differential Revision: https://phabricator.services.mozilla.com/D147003
* style: Implement more color-mix() color-spaces
We had code to convert between these and the latest draft supports them so...
Differential Revision: https://phabricator.services.mozilla.com/D147004
* style: Fix color-mix() percentage normalization
Differential Revision: https://phabricator.services.mozilla.com/D147005
* style: Fix hue adjustment to match the spec
The value to sum is tau, not pi. This was caught by some tests, see
https://drafts.csswg.org/css-color/#shorter
Differential Revision: https://phabricator.services.mozilla.com/D147006
* style: Do hue interpolations in degrees rather than radians. r=barret
This gives us a bit more precision.
Differential Revision: https://phabricator.services.mozilla.com/D147007
* style: Improve Percentage -> LengthPercentage conversion
This doesn't change behavior because we only use them for images that
have no clamping.
Depends on D147008
Differential Revision: https://phabricator.services.mozilla.com/D147511
* style: Remove some dead vibrancy code
Drive-by cleanup.
Differential Revision: https://phabricator.services.mozilla.com/D147698
* style: Fix warnings about whitelist/blocklist functions being deprecated in bindgen 0.59
Differential Revision: https://phabricator.services.mozilla.com/D147695
* style: Update style to arrayvec 0.7
Differential Revision: https://phabricator.services.mozilla.com/D147476
* style: Update style to uluru 3.0
Differential Revision: https://phabricator.services.mozilla.com/D147477
* style: Remove -moz-scrollbar-thumb-proportional
It unconditionally matches on all platforms, so it's not returning any useful information.
Depends on D147689
Differential Revision: https://phabricator.services.mozilla.com/D147690
* style: Use ColorMix for interpolated colors in the computed style rather than ComplexColorRatios
This among other things preserves the right color-space when
interpolating currentColor.
Differential Revision: https://phabricator.services.mozilla.com/D147512
* Further changes required by Servo
* style: Add an input-region-margin to widgets, and implement it on Linux
Recompute the input region when resizing the widget and so on, and use
it to check for rollups.
Depends on D148211
Differential Revision: https://phabricator.services.mozilla.com/D148222
* Avoid complaints from ./mach test-tidy
* Update test expectations
---------
Co-authored-by: Emilio Cobos Álvarez <emilio@crisal.io>
Co-authored-by: Brad Werth <bwerth@mozilla.com>
Co-authored-by: David Shin <dshin@mozilla.com>
Co-authored-by: Hiroyuki Ikezoe <hikezoe.birchill@mozilla.com>
Co-authored-by: Nika Layzell <nika@thelayzells.com>
Co-authored-by: Boris Chiou <boris.chiou@gmail.com>
Co-authored-by: Autumn on Tape <autumn@cyfox.net>
Co-authored-by: Mike Hommey <mh+mozilla@glandium.org>
|
|
|
|
|
|
|
| |
Including hit tests in non-hit test display list items is no longer
supported in upstream WebRender, so this change switches legacy layout
to always use explicit hit test display list items.
Signed-off-by: Martin Robinson <mrobinson@igalia.com>
|
|\
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Use the WebRender clip chain API
The old clipping API has been removed from WebRender, so this switches
both legacy and new layout over to use the clip chain API in preparation
for the WebRender upgrade.
<!-- Please describe your changes on the following line: -->
---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] There are tests for these changes OR
<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->
<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
|
| |
| |
| |
| |
| |
| | |
The old clipping API has been removed from WebRender, so this switches
both legacy and new layout over to use the clip chain API in preparation
for the WebRender upgrade.
|
| |
| |
| |
| |
| | |
The newer versions of WebRender move types around between `webrender` and
`webrender_api` and this will reduce the churn during the upgrade.
|
| |
| |
| |
| | |
Co-authored-by: Samson <16504129+sagudev@users.noreply.github.com>
|
|/
|
|
|
|
|
|
| |
This is a step toward upgrading WebRender, which will be upgraded and
patched in the `third_party` directory. This change vendors the current
private branch of WebRender that we use and adds a `patches` directory
which tracks the changes on top of the upstream WebRender commit
described by third_party/webrender/patches/head.
|
|
|
|
|
| |
This is the first step toward removing the compile-time difference in
style between Layout 2020 and Layout 2013.
|
|
|
|
|
|
| |
This moves more members to the CompositorDisplayListInfo struct, which
now holds all miscellaneous, non-WebRender data when sending display
lists. It also documents what each things sent with a display list does.
|
|\
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Add a compositor-side scroll tree
This will allow the compositor to properly chain scrolling requests up
when a node has reached the extent of the scroll area. In addition, it
removes the use of the deprecated WebRender `scroll()` API. This fixes
scrolling on servo.org.
---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes:
- Fix #29402.
- Fix #27996.
- Fix #27624.
- Fix #24028.
- Fix #23918.
- Fix #21165.
- [x] There are tests for these changes
|
| |
| |
| |
| |
| |
| | |
This will allow the compositor to properly chain scrolling requests up
when a node has reached the extent of the scroll area. This fixes
scrolling on servo.org.
|
|\ \
| |/
|/|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Backport several style changes from Gecko
<!-- Please describe your changes on the following line: -->
---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [X] `./mach build -d` does not report any errors
- [X] `./mach test-tidy` does not report any errors
- [ ] These changes fix #___ (GitHub issue number if applicable)
<!-- Either: -->
- [X] There are tests for these changes OR
- [ ] These changes do not require tests because ___
<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->
<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
|
| | |
|
|/
|
|
|
|
|
| |
This will ultimately make it simpler to update crate dependencies and
reduce duplicate when specifying requirements. Generally, this change
does not touch dependencies that are only used by a single crate. We
could consider moving them to workspace dependencies in the future.
|
| |
|
|
|
|
|
|
|
|
| |
This is a backport of https://phabricator.services.mozilla.com/D157589,
by Emilio Cobos Álvarez, plus some additions so that Servo compiles,
and some parts from https://phabricator.services.mozilla.com/D144455.
Should have no change in behavior.
|
|
|
|
|
|
|
|
|
|
| |
There are duplicate sets of Layout DOM wrappers: one for Layout 2013 and
one for Layout 2020. As part of cleaning up and simplifying the
wrappers, this change parameterizes them on the specific layout data
they contain. This allows them to be shared again. In addition, various
small cleanups are included.
Fixes #29691.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
During layout it is often useful, for various specification reasons, to
know if an element is the `<body>` element of an `<html>` element root. There
are a couple places where a brittle heuristic is used to detect `<body>`
elements. This information is going to be even more important to
properly handle `<html>` elements that inherit their overflow property from
their `<body>` children.
Implementing this properly requires updating the DOM wrapper interface.
This check does reach up to the parent of thread-safe nodes, but this is
essentially the same kind of operation that `parent_style()` does, so is
ostensibly safe.
This change should not change any behavior and is just a preparation
step for properly handle `<body>` overflow.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Previously the thickness coming from font metrics could be something
like 0.7px, so with 1dppx it would be painted as either 1 or 0 device
pixels.
Enforcing at least 1 device pixel ensures that the decoration will be
visible, and rounding to an integral amount of device pixels ensures
that the thickness won't vary depending on the position.
The specification requires this behavior when text-decoration-thickness
is set to a length or percentage. It's not clear if it should also
happen by default, but this seems to match other browsers (except for
WebKit rounding up instead of to the nearest integer).
The test text-decoration-thickness-from-zero-sized-font.html is now
failing because of #29675.
|
|
|
|
|
|
| |
This change adds support for the <iframe> element to Layout 2020. In
addition, certain aspects of the implementation are made the same
between both layout systems.
|
|
|
|
|
|
|
|
|
| |
Store hit testing information in a data structure that sits alongside
the display list in the compositor. This will allow the compositor to
store more information per-node. The data structure also takes care of
de-duplicating information between successive display list entries. In
the future, the data structure can be even more aggressive in producing
smaller side hit testing lists, if necessary.
|
|
|
|
|
|
|
|
| |
This change moves a bit more code into the `ClipScrollState` helper
during WR display list building as well as inlines
build_common_item_properties. This is all in preparation of
modifications to this code which will build a Compositor-side scroll
tree. It should not change any behavior.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Also updates raqote to latest with an upgrade of font-kit to 0.11
applied on as a patch
- Update lyon_geom to the latest version
Major change:
- All matrices are now stored in row major order. This means that
parameters to rotation functions no longer should be negated.
- `post_...()` functions are now named `then()`. `pre_transform()` is removed,
so `then()` is used and the order of operations changed.
|
|\
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Fix absolute descendents being replaced when retreiving root
<!-- Please describe your changes on the following line: -->
The cause of #16410 is because calling `try_get_layout_root` will replace its `abs_descendants` even itself isn't absolute positioned. So I pushed them instead if the root isn't absolute. Also add a few docs and comments to help understand how block size of absolute flow is being calculated.
---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `___` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes fix #16410 (GitHub issue number if applicable)
<!-- Either: -->
- [x] There are tests for these changes:
Reduced testcase from the issue.
```html
<style>
html {
min-height: 100%;
position: relative;
}
div {
position: absolute;
bottom: 0;
width: 100%;
height: 25px;
border: 1px solid black;
}
</style>
<div>
</div>
```
<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->
<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->
|
| | |
|
| |
| |
| |
| | |
Signed-off-by: Dirk Stolle <striezel-dev@web.de>
|
|/
|
|
|
| |
`smallvec ^0.6` no longer compiles after `nightly-2022-07-15` if the
`union` feature is enabled.
|
| |
|
| |
|
| |
|
| |
|
| |
|