Commit graph

25390 commits

Author SHA1 Message Date
Emilio Cobos Álvarez
017036dba8 style: Add attributes to the rule hash
See the discussion here: https://twitter.com/Rich_Harris/status/1433153204678799365

This should make attribute selectors roughly as fast as class selectors.

I think it's worth trying and see if perf bots complain on
micro-benchmarks and stylebench and such.

I made attributes more specific than local names, but less specific than
classes, which I think makes sense. When doing something like
foo[data-bar], filtering by data-bar seems likely to yield less elements
than filtering by foo.

While at it, remove the bloom filter pref since we shipped it in
bug 1704551 for 87 and we haven't heard complaints.

Differential Revision: https://phabricator.services.mozilla.com/D124383
2023-05-26 21:49:57 +02:00
Emilio Cobos Álvarez
44e71dee2e style: Remove cascade layers pref
These have been enabled by default for quite a while.

Differential Revision: https://phabricator.services.mozilla.com/D175513
2023-05-26 21:43:29 +02:00
Emilio Cobos Álvarez
dbb51abc62 style: Hook up basic @layer rule parsing
Disabled, and of course doing nothing for now still, but this is another
piece that is useful to get reviewed separately.

Don't allow layers to be interleaved with @import / @namespace rules as
per https://github.com/w3c/csswg-drafts/issues/6522.

Differential Revision: https://phabricator.services.mozilla.com/D124229
2023-05-26 15:23:26 +02:00
Emilio Cobos Álvarez
623c8d8d45 style: Tweak at-rule parsing APIs to support cascade layers
This needs https://github.com/servo/rust-cssparser/pull/287 and a
cssparser update.

Differential Revision: https://phabricator.services.mozilla.com/D124216
2023-05-26 15:23:26 +02:00
Oriol Brufau
32b3cb291f Further changes required by Servo 2023-05-26 15:23:25 +02:00
Emilio Cobos Álvarez
74787a9c46 style: Restore an #[allow] that will otherwise cause warnings. 2023-05-26 15:23:25 +02:00
Emilio Cobos Álvarez
5fad3b4cde style: Add some scaffolding for @layer rules
Not hooked anywhere yet, so this doesn't change behavior, but adds the
basic data model etc.

Adding parsing support requires some changes to cssparser to allow the
same at rule to be block and statement-like at the same time, so better
done separately.

Differential Revision: https://phabricator.services.mozilla.com/D124079
2023-05-26 15:23:25 +02:00
Oriol Brufau
8eb5fa21fd Further changes required by Servo 2023-05-26 15:23:25 +02:00
Emilio Cobos Álvarez
693806b853 style: Implement image-rendering: smooth and image-rendering: pixelated
Also, more directly go from StyleImageRendering to wr::ImageRendering.

 * image-rendering: smooth the non-deprecated version of
   OptimizeQuality, which maps to SamplingFilter::LINEAR /
   wr::ImageRendering::Auto (which uses gl::LINEAR).

 * image-rendering: pixelated maps to wr::ImageRendering::Pixelated /
   SamplingFilter::POINT which is the same crisp-edges does.

Note that this uncovers that we were mapping image-rendering:
crisp-edges to wr::ImageRendering::Pixelated.

I'm going to preserve behavior on this patch but we should consider
switching that to map to wr::ImageRendering::CrispEdges on a
follow-up (filed bug 1728831 for this).

Differential Revision: https://phabricator.services.mozilla.com/D124378
2023-05-26 15:23:25 +02:00
Oriol Brufau
212733900e Further changes required by Servo 2023-05-26 15:23:25 +02:00
Emilio Cobos Álvarez
036056d2a9 style: Move image-rendering out of mako
It's easier to touch in the future that way, even though the derive list is
massive.

Differential Revision: https://phabricator.services.mozilla.com/D124377
2023-05-26 15:23:24 +02:00
Emilio Cobos Álvarez
5f5ea8603d style: Fix selecteditem color on macOS
This is an oversight. I made selecteditem be -moz-html-cellhighlight,
but that's for inactive cells.

Use the inactive cell color everywhere (though android doesn't
differentiate). This matches other browsers and what was reviewed on
this bug.

MANUAL PUSH: The semi-transparent text-selection-disabled color caused
one test failure CLOSED TREE.
2023-05-26 15:23:24 +02:00
Emilio Cobos Álvarez
e47f35aa50 style: Implement SelectedItem and SelectedItemText system colors
Since Highlight / HighlightText are now equivalent to the text selection
ones, remove those too.

Differential Revision: https://phabricator.services.mozilla.com/D123964
2023-05-26 15:23:24 +02:00
bors-servo
43ebf6c82c
Auto merge of #29798 - jdm:per-interface-codegen, r=jdm
Extract bodies of generated binding helpers into common code

This is part of fixing #29770, by extracting common behaviour that [will be called](https://searchfox.org/mozilla-central/rev/2d678a843ceab81e43f7ffb83212197dc10e944a/dom/bindings/BindingUtils.cpp#3744) from new code in interface.rs.

---
- [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
2023-05-26 08:18:51 +02:00
Josh Matthews
123937a500 Formatting. 2023-05-26 01:24:47 -04:00
Josh Matthews
7d9dc458af Use an enum to pass the index value for interfaces/protos. 2023-05-26 01:21:31 -04:00
Josh Matthews
747a99d3f6 Extract bodies of DefineDOMInterface and GetProtoObject/GetConstructorObject out of generated bindings. 2023-05-26 01:02:38 -04:00
bors-servo
867326c46a
Auto merge of #29772 - Loirooriol:sync, r=mrobinson
Backport several style changes from Gecko (2)

<!-- Please describe your changes on the following line: -->
This continues #29748.

---
<!-- 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. -->
2023-05-25 19:20:50 +02:00
Emilio Cobos Álvarez
55d0636fe5 style: Remove layout.css.is-and-where-better-error-recovery.enabled
We shipped this in 84

Differential Revision: https://phabricator.services.mozilla.com/D123623
2023-05-24 18:32:43 +02:00
Emilio Cobos Álvarez
fa840e1666 style: Implement transform: perspective(none)
Differential Revision: https://phabricator.services.mozilla.com/D123350
2023-05-24 18:32:43 +02:00
Nicolas Silva
ce45f68d9c style: Update euclid in stylo
Differential Revision: https://phabricator.services.mozilla.com/D85762
2023-05-24 18:32:43 +02:00
Emilio Cobos Álvarez
db1ada85dc style: Workaround GCC-calling-into-LLVM ABI issue by making GenericFontFamily larger
This enum being a bit larger doesn't cause many common data structures
to grow, so this should be fine.

Differential Revision: https://phabricator.services.mozilla.com/D123146
2023-05-24 18:32:43 +02:00
Matt Woodrow
79893116e7 style: Return an infinite perspective in TransformOperation::Perspective::to_animated_zero
Differential Revision: https://phabricator.services.mozilla.com/D122919
2023-05-24 18:32:42 +02:00
Emilio Cobos Álvarez
26c5db6a6e style: Respect transparent and system color border colors in forced-colors mode
Differential Revision: https://phabricator.services.mozilla.com/D123111
2023-05-24 18:32:42 +02:00
Emilio Cobos Álvarez
f31f541125 style: Add a use counter for content-visibility
Differential Revision: https://phabricator.services.mozilla.com/D122873
2023-05-24 18:32:42 +02:00
Oriol Brufau
6ea5fdc40e Further changes required by Servo 2023-05-24 18:32:42 +02:00
Mats Palmgren
0cb64672f4 style: [css-fonts] Implement 'font-synthesis: small-caps'
Differential Revision: https://phabricator.services.mozilla.com/D114313
2023-05-24 18:32:42 +02:00
Oriol Brufau
fd3d12e214 Further changes required by Servo 2023-05-24 18:32:41 +02:00
Barret Rennie
c241182d09 style: Support color-mix() in non-sRGB color spaces
Out of gamut colours are currently clipped into sRGB.

Differential Revision: https://phabricator.services.mozilla.com/D120561
2023-05-24 18:32:41 +02:00
Oriol Brufau
d564f200aa Further changes required by Servo 2023-05-24 18:32:41 +02:00
Emilio Cobos Álvarez
5530f7e90c style: Support break-inside: avoid-{page,column}
break-before/after: page|column seem harder because you need to deal
with nested breaks, I think, but this should be straight-forward.

Differential Revision: https://phabricator.services.mozilla.com/D121206
2023-05-24 18:32:41 +02:00
Emilio Cobos Álvarez
cf44eb3e77 style: Don't alias -apple-system to system-ui for now, to keep /css/css-fonts/animations/system-fonts.html happy
We probably want to do this when they do something different, but for
now behavior should be the same and it causes some subtests to fail
because `getComputedStyle(..).fontFamily` for system fonts seems to
return -apple-system, but `.style.fontFamily = "-apple-system"` returns
`system-ui`.

MANUAL PUSH: Orange fix on a CLOSED TREE
2023-05-24 18:32:41 +02:00
Nazım Can Altınova
d9719a3946 style: Remove the unused "gecko_profiler" feature from servo
This was being used when we had special code for gecko profiler in the servo
codebase but we just removed the last one. This is safe to remove now. The
"enabled" feature in the gecko-profiler crate is being controlled by
gkrust-shared directly now.

Differential Revision: https://phabricator.services.mozilla.com/D120796
2023-05-24 18:32:41 +02:00
Oriol Brufau
2376747273 Further changes required by Servo 2023-05-24 18:32:40 +02:00
Nazım Can Altınova
5a9fae3fb5 style: Remove the old profiler label frames code in the servo codebase and replace it with the new API
Differential Revision: https://phabricator.services.mozilla.com/D120795
2023-05-24 18:32:40 +02:00
Mike Hommey
9e33a154fd style: Setup bindgen flags for servo similarly to cranelift and neqo
While the use of toml allows the flags to be separated, the split is
done via some shell shenanigans anyways, and servo's build.rs can
handle the same just fine.

Differential Revision: https://phabricator.services.mozilla.com/D121042
2023-05-24 18:32:40 +02:00
Morgan Reschenberg
9b070745c9 style: Add MozNativevisitedhyperlinktext color, use it to style visited links
Differential Revision: https://phabricator.services.mozilla.com/D120657
2023-05-24 18:32:40 +02:00
Oriol Brufau
e617ece91e Further changes required by Servo 2023-05-24 18:32:40 +02:00
Emilio Cobos Álvarez
028f2f95d2 style: Initial support for the color-scheme CSS property
Add initial support for the color-scheme CSS property, allowing pages to
choose between light and dark system colors per-element, and such.

Things that are left to do so that this can be enabled by default:

 * Dark system colors on Windows / Android / Standins.
 * Dark Canvas/CanvasText/Link visited colors (which right now are set
   via PreferenceSheet).
 * Dark form controls in nsNativeBasicTheme.
 * Processing the color-scheme meta tag to fill-in
   Document::mColorSchemeBits.

But this seems like enough progress to be landable on its own.

Differential Revision: https://phabricator.services.mozilla.com/D120843
2023-05-24 18:32:40 +02:00
Oriol Brufau
fd41056ca5 Further changes required by Servo 2023-05-24 18:32:39 +02:00
Emilio Cobos Álvarez
d86e449e8c style: Add system-ui boilerplate
Alias -apple-system to it, and put it behind a pref for now. This is
pretty boring (read: uncontroversial hopefully) code. The follow-up work
is modifying StaticPresData to look up the fonts using system APIs,
probably. Maybe a bit more work if on macOS they can't be named.

Differential Revision: https://phabricator.services.mozilla.com/D119984
2023-05-24 18:32:39 +02:00
Oriol Brufau
9cf7df1f31 Further changes required by Servo 2023-05-24 18:32:39 +02:00
Emilio Cobos Álvarez
7d1823563e style: Remove layout.css.image-set.enabled
We shipped this in 88.

Differential Revision: https://phabricator.services.mozilla.com/D120899
2023-05-24 18:32:39 +02:00
Emilio Cobos Álvarez
eca66dba72 style: Factor PreferenceSheet colors to its own struct
This will come handy in the next patch.

Depends on D120678

Differential Revision: https://phabricator.services.mozilla.com/D120679
2023-05-24 18:32:39 +02:00
Emily McDonough
c2a50c92fa style: Remove the paper size variant of GenericPageSize and add an implied default to the paper size and orientation variant
Differential Revision: https://phabricator.services.mozilla.com/D119915
2023-05-24 18:32:38 +02:00
Sonia Singla
45d6e64d51 style: Remove layout.css.clip-path-path.enabled
Differential Revision: https://phabricator.services.mozilla.com/D120235
2023-05-24 18:32:38 +02:00
Emilio Cobos Álvarez
8f4d782952 style: Don't EnsureUniqueInner from the cssRules getter
Instead, fix up the various content data structures when the stylesheet
is mutated. This makes reading a stylesheet not disable style sharing.

Differential Revision: https://phabricator.services.mozilla.com/D115203
2023-05-24 18:32:38 +02:00
Sonia Singla
c0a2b99c4f style: Remove layout.css.prefixes.columns
Differential Revision: https://phabricator.services.mozilla.com/D120057
2023-05-24 18:32:38 +02:00
Emilio Cobos Álvarez
2634ad10de style: Blockify outside markers at used value time rather than at computed value time
Trusting the display value in style_adjuster is wrong, as some elements
force a given kind of frame (like <details>).

Differential Revision: https://phabricator.services.mozilla.com/D119609
2023-05-24 18:32:38 +02:00
Emilio Cobos Álvarez
d7d407a9ae style: Fix mixed indentation in style_adjuster.rs
Differential Revision: https://phabricator.services.mozilla.com/D119579
2023-05-24 18:32:38 +02:00