Commit graph

1880 commits

Author SHA1 Message Date
Emilio Cobos Álvarez
2b6fce1e57 style: Remove servo/components/{hashglobe,fallible} in favor of try_reserve
Differential Revision: https://phabricator.services.mozilla.com/D134194
2023-06-09 10:22:24 +02:00
Jonathan Kew
da29cade57 style: Add CSS support for the hyphenate-character property
Differential Revision: https://phabricator.services.mozilla.com/D133889
2023-06-09 10:22:23 +02:00
Emilio Cobos Álvarez
8bb7d98f0c style: Add support for the revert-layer keyword
This patch looks bigger than it is, but it's mostly because
of plumbing.

To implement revert-layer we need not only the cascade origin of the
declaration, but the whole cascade level, plus also the layer order.

In order to do this, encapsulate these two things inside a 32-bit
`CascadePriority` struct and plumb it through the rule tree and so on.
This allows us to remove the packing and unpacking of CascadeLevel,
though I kept the ShadowCascadeOrder limit for now in case we need to
reintroduce it.

Fix `!important` behavior of layers while at it (implementing it in
`CascadeLevel::cmp`, spec quote included since it was tricky to find)
since some revert-layer tests were depending on it.

The style attribute test is failing now, but follow-up commit fixes
it, see spec issue.

In terms of the actual keyword implementation, it's sort of
straight-forward: We implement revert and revert-layer in a shared
way, by storing the cascade priority that reverted it.

Differential Revision: https://phabricator.services.mozilla.com/D133372
2023-06-09 10:22:22 +02:00
Jonathan Kew
26c10339e3 style: Add support for the 'ic' font-relative unit
This is a "simplified" implementation of 'ic', similar to what Safari Preview
currently supports: it only considers the advance of U+6C34 if found in the
first available font, and otherwise falls back to the default of 1em.

(The spec allows for this "in cases where it is impossible or impractical to
determine the ideographic advance measure".)

Differential Revision: https://phabricator.services.mozilla.com/D132818
2023-06-09 10:22:22 +02:00
Emily McDonough
d1bb131acc style: Implement parsing of the page property
Differential Revision: https://phabricator.services.mozilla.com/D131531
2023-06-09 10:22:22 +02:00
Emilio Cobos Álvarez
a8bcfc7f77 style: Remove unnecessary button-focus appearance value on Linux
This always draws transparent. Only real thing it does is forcing 0px
padding.

Differential Revision: https://phabricator.services.mozilla.com/D132563
2023-06-09 10:22:21 +02:00
Emilio Cobos Álvarez
19aa8842c2 style: Simplify language-dependent font fallback code
.fallback is always the default font for the lang group unless we're a
system font (in which case it's "none").

The only reason we need that is because we need to react to
language changes (which affect the initial font).

Simplify the model a bit doing the language lookup in gfxTextRun (this
should avoid allocating a few nsStyleFont structs too.

Depends on D130732

Differential Revision: https://phabricator.services.mozilla.com/D131312
2023-06-09 10:22:20 +02:00
Oriol Brufau
f911fb4f0f Further changes required by Servo 2023-06-09 10:22:20 +02:00
Emilio Cobos Álvarez
a9baf5fe3d style: Use first generic rather than only generic to determine fallback font family
This seems like more sensible behavior. We have another use of
only_generic(), but that affects font sizing and other browsers agree
with us there:

  <div style="font-family: monospace">Should be 13px</div>
  <div style="font-family: something, monospace">Should be 16px</div>

So not touching that one.

Differential Revision: https://phabricator.services.mozilla.com/D130732
2023-06-09 10:22:20 +02:00
Ting-Yu Lin
2dbc89d1f5 style: Support scrollbar-gutter in the style system
This patch adds `scrollbar-gutter` property in CSS Overflow level 3 [1] to the
style system.

`devtools/shared/css/generated/properties-db.js` is generated by
`./mach devtools-css-db`.

[1] https://drafts.csswg.org/css-overflow-3/#scrollbar-gutter-property

Differential Revision: https://phabricator.services.mozilla.com/D131460
2023-06-09 10:22:19 +02:00
Ting-Yu Lin
a0617bff0d style: Run rustfmt on servo/components/style and servo/ports/geckolib
This patch is generated by running `cargo +nightly fmt` under
`servo/components/style/` and `servo/ports/geckolib` against mozilla-central
https://hg.mozilla.org/mozilla-central/rev/b193f2e7a6a5d1f042c957ea4acd5c89bf210512

My nightly version is: 1.58.0-nightly (c9c4b5d72 2021-11-17)

Manually remove the redundant braces in author_styles.rs to fix a warning.

Differential Revision: https://phabricator.services.mozilla.com/D131556
2023-06-09 10:22:19 +02:00
Emilio Cobos Álvarez
c232cd49b4 style: Use preferred color scheme when forcing colors with system colors (except windows HCM)
This causes (among other things) pages to be dark when using regular
windows system colors and forcing colors to "always", which is nice.

Differential Revision: https://phabricator.services.mozilla.com/D131165
2023-06-09 10:22:19 +02:00
Mats Palmgren
71c04d1d3c style: [css-lists] Remove the internal '-moz-list-reversed' CSS property that is no longer needed
Differential Revision: https://phabricator.services.mozilla.com/D129957
2023-06-09 10:22:19 +02:00
Mats Palmgren
82c0673881 style: [css-lists] Style system changes to support 'reversed(<counter-name>)'
Differential Revision: https://phabricator.services.mozilla.com/D129955
2023-06-09 10:22:18 +02:00
Emilio Cobos Álvarez
53b657e97b style: Add a foreground color to attention selection
In some platforms (like macOS, windows dark mode, android, and some gtk
themes) the foreground selection color might be `currentcolor`, and that
doesn't generally guarantee enough contrast with the attention
background.

Remove HeadlessLookAndFeelGTK's handling of this color since it's
useless (always overridden by prefs in all.js)

Differential Revision: https://phabricator.services.mozilla.com/D130617
2023-06-09 10:22:18 +02:00
Patrick Walton
cdec48328e Place floats in layout 2020, but don't flow text around the floats yet.
This commit puts floats behind the `layout.floats.enabled` pref, because of the
following issues and unimplemented features:

* Inline formatting contexts don't take floats into account, so text doesn't
  flow around the floats yet.

* Non-floated block formatting contexts don't take floats into account, so BFCs
  can overlap floats.

* Block formatting contexts that contain floats don't expand vertically to
  contain all the floats. That is, floats can stick out the bottom of BFCs,
  contra spec.
2023-06-03 06:09:21 +02:00
Emilio Cobos Álvarez
b9d2ae624b style: Remove other Widget* colors
These are only used for frameset painting and the non-e10s <select>
dropdown focus codepath. We have other more appropriate standard
colors for this.

Differential Revision: https://phabricator.services.mozilla.com/D129992
2023-05-31 00:50:36 +02:00
Emilio Cobos Álvarez
4ed53833ea style: Remove TextForeground/Background system colors
Same thing, there's nor reason these should be different from other
CSS-exposed colors.

Differential Revision: https://phabricator.services.mozilla.com/D129991
2023-05-31 00:50:36 +02:00
Emilio Cobos Álvarez
2fd66ea588 style: Remove WindowBackground/Foreground system colors
There's no reason for these to be different to the CSS-exposed
Window/WindowText.

Differential Revision: https://phabricator.services.mozilla.com/D129990
2023-05-31 00:50:36 +02:00
Emilio Cobos Álvarez
04776cd116 style: Treat empty root margin as zero as per spec
Differential Revision: https://phabricator.services.mozilla.com/D130131
2023-05-31 00:50:35 +02:00
Emilio Cobos Álvarez
285c645b78 style: Make autofill background configurable via system color prefs
And remove the autofill.background pref for 95 (or 96, depending on
when this lands) assuming nothing terrible causes us to turn it off on
94.

Differential Revision: https://phabricator.services.mozilla.com/D129988
2023-05-31 00:50:35 +02:00
Emilio Cobos Álvarez
c3322938f2 style: Move Canvas/Link color computation to C++-land
This doesn't change behavior but will allow us to deduplicate some
logic given we compute the effective color-scheme in C++.

Differential Revision: https://phabricator.services.mozilla.com/D129744
2023-05-31 00:50:34 +02:00
Emilio Cobos Álvarez
6c16c019fc style: Implement <meta name=color-scheme>
There are still tests failing because
https://bugzilla.mozilla.org/show_bug.cgi?id=1736034 hasn't been synced
yet.

Once that lands, they will still fail because we don't change
Canvas/CanvasText based on color-scheme, but that I'm attaching
patches for after this one.

Differential Revision: https://phabricator.services.mozilla.com/D129743
2023-05-31 00:50:34 +02:00
Emilio Cobos Álvarez
750c9ee814 style: Clean up GTK titlebar colors
Apparently ActiveCaption/CaptionText/InactiveCaption/InactiveCaptionText
are supposed to be used for titlebars, so implement them properly and
remove the GTK-specific colors.

Differential Revision: https://phabricator.services.mozilla.com/D128028
2023-05-31 00:50:30 +02:00
Boris Chiou
f00818b8ec style: Tweak the serialization of rotate property
The serialization of rotate should be updated to match the current spec.

1. If a rotation about the z axis (that is, in 2D) is specified, the property
   must serialize as just an <angle>.

2. If any other rotation is specified, the property must serialize with an axis
   specified. If the axis is parallel with the x or y axes, it must serialize
   as the appropriate keyword.

Also, we need to handle the zero length vector separately because it is
parallel to every other vector but different from x axis, y axis, or z axis.

Differential Revision: https://phabricator.services.mozilla.com/D127747
2023-05-31 00:50:30 +02:00
Emilio Cobos Álvarez
b3deee4cc8 style: Remove support for -moz-system-color() as chrome code no longer uses it (in favor of color-scheme)
Differential Revision: https://phabricator.services.mozilla.com/D127802
2023-05-31 00:50:30 +02:00
Emilio Cobos Álvarez
5766329ffe style: Add basic support for dark form controls to nsNativeBasicTheme
For that:

 * Tweak the standin system colors to match the non-native theme.

 * Use those system colors for button and field backgrounds.

 * Rename the "should use system colors" bit to "is high contrast",
   which is what it really is (specially now that we use system colors
   also in non-high-contrast).

Border colors and other colors like the <input type=range> and such
might need some extra tweaking perhaps, but this is a decent start and
looks good in https://crisal.io/tmp/form-controls.html afaict (dark mode
toggle needs the color-scheme pref enabled of course).

Differential Revision: https://phabricator.services.mozilla.com/D127533
2023-05-31 00:50:29 +02:00
Emilio Cobos Álvarez
f17c42110c style: Clean up button active system colors
This patch does three things:

 * Unifies mac and gtk's buttonactivetext system colors (unships mac's from
   content, but it was never meant to be exposed).

 * Simplifies the forms.css rules, since <input type=color>'s color property
   value doesn't affect its rendering in any meaningful way.

 * Adds a buttonactiveface color, which we'll use to provide dark backgrounds
   for buttons in Windows dark mode (and is good practice, since generally
   every text system color should have a corresponding background).

So as-is it shouldn't change content-exposed behavior (except we stop exposing
the -moz-mac-buttonactivetext to content), but it's a worthy cleanup.

Depends on D127246

Differential Revision: https://phabricator.services.mozilla.com/D127259
2023-05-31 00:50:29 +02:00
Boris Chiou
c21a0dcc96 style: Part 2: Add animation-timeline into animation shorthand
We use the same rule as blink: serialize the animation-timeline if
it is not the default value.

Differential Revision: https://phabricator.services.mozilla.com/D126451
2023-05-30 23:26:04 +02:00
Boris Chiou
2a7436481c style: Part 1: Add animation-timeline longhand property in style system
This patch adds the animation-timeline longhand property. For
shorthand, we will do that in the next patch.

This patch includes the aut-generated code in
devtools/shared/css/generated/properties-db.js, by `./mach devtools-css-db`.

Note:
1. we will use this property in Bug 1676791. For now, only make sure
   we parse it and serialize it correctly.
2. The syntax of animation-timeline may be updated, based on the spec
   issue: https://github.com/w3c/csswg-drafts/issues/6674.
   However, it's not a big problem to update it later, so we still can
   prototype this property based on the current version of spec.

Differential Revision: https://phabricator.services.mozilla.com/D126450
2023-05-30 23:26:04 +02:00
Emilio Cobos Álvarez
6785ffea7b style: Unprefix -moz-fit-content
I'm not aware of any reason we shouldn't do this, as it is interoperable
with other browsers, and it causes compat issues from sites that forget
to use the prefixed version.

Note this removes some #[parse(aliases)]. These only affect devtools
autocomplete behavior, and we avoid autocompleting -moz-prefixed
keywords when possible, so even though it's a slight behavior change,
it's worth it.

Differential Revision: https://phabricator.services.mozilla.com/D126718
2023-05-30 23:26:03 +02:00
Emilio Cobos Álvarez
75acb72256 style: Get rid of nsStackFrame
There are no legacy-stack uses anymore.

Differential Revision: https://phabricator.services.mozilla.com/D126077
2023-05-30 23:26:02 +02:00
Boris Chiou
111c8d616f style: Part 1: Implement @scroll-timeline in style system
Define the data structure for @scroll-timeline rule, the parsing code,
and the serialization.

Differential Revision: https://phabricator.services.mozilla.com/D125764
2023-05-30 23:26:01 +02:00
Oriol Brufau
35bf5f0b09 Further changes required by Servo 2023-05-30 23:26:01 +02:00
Emilio Cobos Álvarez
4522e7f94a style: Add experimental support for "e", "pi", and various trigonometric functions in calc()
I'll add some tests before enabling. Also, WebKit folks (who have
implemented cos() / tan() / sin()) said they will upstream their tests
to WPT, so I'll extend those with the inverse functions before landing
as well.

Differential Revision: https://phabricator.services.mozilla.com/D124990
2023-05-30 23:26:01 +02:00
Oriol Brufau
4f193fbf49 Further changes required by Servo 2023-05-30 23:26:00 +02:00
Emilio Cobos Álvarez
1e5806610b style: Don't consider system-ui valid for user font prioritization
Since the user can't configure it, at least from the UI (we could add UI
for it but it's unclear it'd be worth it).

Differential Revision: https://phabricator.services.mozilla.com/D125182
2023-05-30 23:26:00 +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
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
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