Commit Graph

153 Commits

Author SHA1 Message Date
Emilio Cobos Álvarez
cdc1679ad0 Bug 1797146 - Remove system font support for various font longhands. r=jfkthame
We don't use them[1], and these are generally not properties that
authors would be able to set via the font shorthand anyways.

Let's simplify the code. This fixes the font-variant bug and also
unblocks further clean-ups of these properties in the future.

[1]: https://searchfox.org/mozilla-central/rev/59f0bf3c13dd455d9f5415b89178de701ea6b850/widget/LookAndFeelTypes.ipdlh#12-18

Differential Revision: https://phabricator.services.mozilla.com/D160352
2022-10-26 14:42:49 +00:00
Ting-Yu Lin
a6d1bf0cc4 Bug 1792615 - Run "cargo +nightly fmt" for style components in servo. r=emilio
The directories changed:
* servo/components/selectors/
* servo/components/style/
* servo/components/style_derive/
* servo/ports/geckolib/

Per review request, disable rustfmt in `components_to_transform_3d_matrix()` to
preserve the format for a call to `Transform3D::new`.

My mozilla-central is at
https://hg.mozilla.org/mozilla-central/rev/d1ae84015c22f2034435b47194fdced878072035

My nightly rust is 1.66.0-nightly (8b705839c 2022-09-26).

Differential Revision: https://phabricator.services.mozilla.com/D158234
2022-09-28 07:10:52 +00:00
Jonathan Kew
90070eb1ea Bug 1788036 - Update font-tech feature-* keywords to features-*, as per editorial fix in the spec. r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D155962
2022-08-30 14:29:42 +00:00
Jonathan Kew
442844a6b8 Bug 1786493 - Implement CSS @supports font-format(...) and font-tech(...) functions. r=emilio
These are gated by the same layout.css.font-tech.enabled pref as the
closely-related `tech()` function for the @font-face src descriptor;
once the spec questions are settled, we should enable them all together.

Differential Revision: https://phabricator.services.mozilla.com/D155359
2022-08-25 12:19:21 +00:00
Marian-Vasile Laza
3def482eee Backed out 2 changesets (bug 1786493) for causing build bustages. CLOSED TREE
Backed out changeset 077219c44704 (bug 1786493)
Backed out changeset b1b0464f9bed (bug 1786493)
2022-08-25 14:26:59 +03:00
Jonathan Kew
76715dc986 Bug 1786493 - Implement CSS @supports font-format(...) and font-tech(...) functions. r=emilio
These are gated by the same layout.css.font-tech.enabled pref as the
closely-related `tech()` function for the @font-face src descriptor;
once the spec questions are settled, we should enable them all together.

Differential Revision: https://phabricator.services.mozilla.com/D155359
2022-08-25 11:09:10 +00:00
Jonathan Kew
8d72beeace Bug 1786804 - Put the @font-face src tech() function behind a pref, enabled only on Nightly for now. r=emilio
There are a couple of current issues/discussions that may lead to a change in the set of supported keywords, so we may want to hold back a little on actually shipping this.

- In https://github.com/w3c/IFT/pull/113, the WebFonts WG proposes several new incremental-* keywords (and maybe implies dropping the currently-defined incremental?)

- In https://github.com/w3c/csswg-drafts/issues/7633, I just proposed renaming the feature-* keywords to features-* (plural) for better readability; I'd like to see a decision on that before we ship this to release.

Differential Revision: https://phabricator.services.mozilla.com/D155458
2022-08-24 11:27:42 +00:00
Jonathan Kew
e38622a12c Bug 1715546 - Add support for the @font-face src descriptor's tech() function. r=emilio
WPT tests to be added in a following patch.

Differential Revision: https://phabricator.services.mozilla.com/D154399
2022-08-12 22:17:24 +00:00
Jonathan Kew
47d4aa9c51 Bug 650372 - Use the style-system format hint directly in gfx, instead of mapping to a separate internal enum. r=gfx-reviewers,aosmond,lsalzman
Now that the style system has keywords for this, we don't need to define them in gfx
but can just use the enum directly. (No functional change, just code simplification.)

Depends on D154237

Differential Revision: https://phabricator.services.mozilla.com/D154238
2022-08-12 11:25:59 +00:00
Jonathan Kew
08356cafca Bug 650372 - Accept keywords in addition to strings in the @font-face format() hint function. r=emilio
The CSS Fonts 4 spec requires this, and Safari (at least) has long supported it.

Depends on D154277

Differential Revision: https://phabricator.services.mozilla.com/D154237
2022-08-12 11:25:59 +00:00
Jonathan Kew
c71cb025a1 Bug 1784058 - Do not allow a list of strings in the @font-face src descriptor's format() function, only a single format string. r=emilio
This aligns with CSS Fonts 4 (rather than Fonts 3) and with behavior in other browsers;
I don't expect any significant breakage, given that specifying multiple format strings
was never supported in other engines AFAIK, and never served any useful purpose.

Depends on D154234

Differential Revision: https://phabricator.services.mozilla.com/D154235
2022-08-12 11:25:58 +00:00
Iulian Moraru
b2a2b27770 Backed out 7 changesets (bug 1784058, bug 650372) for causing wpt failures on format-specifiers-variations.html. CLOSED TREE
Backed out changeset 2aa97ebc8593 (bug 650372)
Backed out changeset 41d1c62f11ac (bug 650372)
Backed out changeset 8340c08ff8b6 (bug 650372)
Backed out changeset cbe59d9bbcbb (bug 1784058)
Backed out changeset 40b00a214019 (bug 1784058)
Backed out changeset 714d84a2680a (bug 1784058)
Backed out changeset e5b24489d365 (bug 1784058)
2022-08-11 23:24:20 +03:00
Jonathan Kew
4a84154178 Bug 650372 - Use the style-system format hint directly in gfx, instead of mapping to a separate internal enum. r=gfx-reviewers,aosmond,lsalzman
Now that the style system has keywords for this, we don't need to define them in gfx
but can just use the enum directly. (No functional change, just code simplification.)

Depends on D154237

Differential Revision: https://phabricator.services.mozilla.com/D154238
2022-08-11 18:03:58 +00:00
Jonathan Kew
3dd02d51f6 Bug 650372 - Accept keywords in addition to strings in the @font-face format() hint function. r=emilio
The CSS Fonts 4 spec requires this, and Safari (at least) has long supported it.

Depends on D154277

Differential Revision: https://phabricator.services.mozilla.com/D154237
2022-08-11 18:03:58 +00:00
Jonathan Kew
37f1fe9925 Bug 1784058 - Do not allow a list of strings in the @font-face src descriptor's format() function, only a single format string. r=emilio
This aligns with CSS Fonts 4 (rather than Fonts 3) and with behavior in other browsers;
I don't expect any significant breakage, given that specifying multiple format strings
was never supported in other engines AFAIK, and never served any useful purpose.

Depends on D154234

Differential Revision: https://phabricator.services.mozilla.com/D154235
2022-08-11 18:03:56 +00:00
Cristian Tuns
96ac2d4fa3 Backed out 7 changesets (bug 650372, bug 1784058) for causing reftest failures on variation-format-hint-1a.html CLOSED TREE
Backed out changeset c78a59ace7ec (bug 650372)
Backed out changeset eea47293ce56 (bug 650372)
Backed out changeset e978496c7ea0 (bug 650372)
Backed out changeset 597837e9753f (bug 1784058)
Backed out changeset 6d71bcfcc1a1 (bug 1784058)
Backed out changeset 5d21f6e4f8e0 (bug 1784058)
Backed out changeset 35634f66cb37 (bug 1784058)
2022-08-11 10:28:40 -04:00
Jonathan Kew
694a39cdd0 Bug 650372 - Use the style-system format hint directly in gfx, instead of mapping to a separate internal enum. r=gfx-reviewers,aosmond,lsalzman
Now that the style system has keywords for this, we don't need to define them in gfx
but can just use the enum directly. (No functional change, just code simplification.)

Differential Revision: https://phabricator.services.mozilla.com/D154238
2022-08-11 13:10:04 +00:00
Jonathan Kew
1564423192 Bug 650372 - Accept keywords in addition to strings in the @font-face format() hint function. r=emilio
The CSS Fonts 4 spec requires this, and Safari (at least) has long supported it.

Differential Revision: https://phabricator.services.mozilla.com/D154237
2022-08-11 13:10:03 +00:00
Jonathan Kew
488472f055 Bug 1784058 - Do not allow a list of strings in the @font-face src descriptor's format() function, only a single format string. r=emilio
This aligns with CSS Fonts 4 (rather than Fonts 3) and with behavior in other browsers;
I don't expect any significant breakage, given that specifying multiple format strings
was never supported in other engines AFAIK, and never served any useful purpose.

Differential Revision: https://phabricator.services.mozilla.com/D154235
2022-08-11 13:10:01 +00:00
Emilio Cobos Álvarez
42a711655b Bug 1773558 - Move fixed-point font types to Rust. r=layout-reviewers,jfkthame
Now that cbindgen and rust support const generics, it seems more simple.

This centralizes all the relevant font constants etc in rust and avoids
conversions when going from rust to C++ and vice versa.

Differential Revision: https://phabricator.services.mozilla.com/D148847
2022-06-13 00:59:23 +00:00
Noemi Erli
fbf29a9961 Backed out changeset 7585591a9bad (bug 1773558) for causing failures in system-fonts.html 2022-06-12 19:02:33 +03:00
Emilio Cobos Álvarez
152643ec11 Bug 1773558 - Move fixed-point font types to Rust. r=layout-reviewers,jfkthame
Now that cbindgen and rust support const generics, it seems more simple.

This centralizes all the relevant font constants etc in rust and avoids
conversions when going from rust to C++ and vice versa.

Differential Revision: https://phabricator.services.mozilla.com/D148847
2022-06-12 10:48:58 +00:00
Emilio Cobos Álvarez
7921536cee Bug 1728617 - Tweak at-rule parsing APIs to support cascade layers. r=boris
This needs https://github.com/servo/rust-cssparser/pull/287 and a
cssparser update.

Differential Revision: https://phabricator.services.mozilla.com/D124216
2021-09-03 09:26:10 +00:00
Jonathan Kew
27a9b59230 Bug 1698495 - Add the size-adjust descriptor to the style system. r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D110022
2021-03-29 21:14:43 +00:00
Jonathan Kew
f754f639eb Bug 1681691 - Add ascent-, descent- and line-gap-override descriptors to the style system. r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D109287
2021-03-23 17:10:22 +00:00
Jonathan Kew
c9102360ae Bug 1681691 - Convert the font-stretch descriptor to use NonNegativePercentage. r=emilio
Depends on D109285

Differential Revision: https://phabricator.services.mozilla.com/D109286
2021-03-23 17:10:22 +00:00
smolnar
6f80681539 Backed out 8 changesets (bug 1681691) for causing wpt failures in idlharness.https.html. CLOSED TREE
Backed out changeset dda736a69ceb (bug 1681691)
Backed out changeset 64edecd0df6f (bug 1681691)
Backed out changeset a19844063d00 (bug 1681691)
Backed out changeset 5dd06c73f703 (bug 1681691)
Backed out changeset 1bc4081f95e4 (bug 1681691)
Backed out changeset e7887dc9a3c6 (bug 1681691)
Backed out changeset d9b488c09c23 (bug 1681691)
Backed out changeset b45b607fee4d (bug 1681691)
2021-03-23 12:00:39 +02:00
Jonathan Kew
359ea63612 Bug 1681691 - Add ascent-, descent- and line-gap-override descriptors to the style system. r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D109287
2021-03-23 08:37:06 +00:00
Jonathan Kew
ca5997206d Bug 1681691 - Convert the font-stretch descriptor to use NonNegativePercentage. r=emilio
Depends on D109285

Differential Revision: https://phabricator.services.mozilla.com/D109286
2021-03-23 08:37:06 +00:00
Cosmin Sabou
6ed2b6f700 Backed out 10 changesets (bug 1681691) for wpt failures on fontface-override-descriptor-getter-setter.sub.html and idlharness.https.html. CLOSED TREE
Backed out changeset e43fba82fb31 (bug 1681691)
Backed out changeset 104675869016 (bug 1681691)
Backed out changeset 536bbc4b9ecd (bug 1681691)
Backed out changeset bb53155c3dd0 (bug 1681691)
Backed out changeset 9f9c3c13801a (bug 1681691)
Backed out changeset af79bc7f7919 (bug 1681691)
Backed out changeset e86d980f511e (bug 1681691)
Backed out changeset 12418707741d (bug 1681691)
Backed out changeset 8d5c2106a2b4 (bug 1681691)
Backed out changeset 4805e23e62d2 (bug 1681691)
2021-03-22 20:37:38 +02:00
Jonathan Kew
8c29255f83 Bug 1681691 - Add ascent-, descent- and line-gap-override descriptors to the style system. r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D109287
2021-03-22 15:40:52 +00:00
Jonathan Kew
793c7a2336 Bug 1681691 - Convert the font-stretch descriptor to use NonNegativePercentage. r=emilio
Depends on D109285

Differential Revision: https://phabricator.services.mozilla.com/D109286
2021-03-22 15:40:52 +00:00
Emilio Cobos Álvarez
4b40674ded Bug 1663231 - Make @font-face and @counter-style serialization closer other browsers and style rules. r=xidorn
Style rules serialize on one line and so should @font-face blocks.

Part of https://github.com/w3c/csswg-drafts/issues/4828.

Differential Revision: https://phabricator.services.mozilla.com/D89302
2020-09-05 00:42:43 +00:00
Emilio Cobos Álvarez
7fd67ffb41 Bug 1646546 - Switch all callsites of try() to try_parse() in the style crate. r=boris
Fully automated via:

  $ rg -l '\.try\(' | xargs sed -i 's/\.try(/.try_parse(/g'
  $ cd servo/components/style && cargo +nightly fmt

Differential Revision: https://phabricator.services.mozilla.com/D80099
2020-06-17 22:27:37 +00:00
Emilio Cobos Álvarez
9060a88275 Bug 1593642 - Add a few commas that newer macros need.
Servo is on a newer cssparser version.

Differential Revision: https://phabricator.services.mozilla.com/D51592
2019-11-04 12:53:04 +00:00
Nicholas Nethercote
85e194318f Bug 1563555 - Use static_prefs::pref! in Stylo. r=emilio
It's much nicer.

One nice thing about this is that the new code is subject to the existing
threadedness checking, which identified that several of these should be atomic
because they're accessed off the main thread.

Differential Revision: https://phabricator.services.mozilla.com/D40792
2019-08-07 22:58:55 +00:00
Cosmin Sabou
4a5cc732bb Backed out 2 changesets (bug 1563555) for causing marionette failures on test_profile_management.py.
Backed out changeset 2559f5ddf8e0 (bug 1563555)
Backed out changeset e3c86ffa168c (bug 1563555)
2019-08-07 12:09:13 +03:00
Nicholas Nethercote
89e2a446f9 Bug 1563555 - Use static_prefs::pref! in Stylo. r=emilio
It's much nicer.

One nice thing about this is that the new code is subject to the existing
threadedness checking, which identified that several of these should be atomic
because they're accessed off the main thread.

Differential Revision: https://phabricator.services.mozilla.com/D40792
2019-08-07 04:17:08 +00:00
Nicholas Nethercote
8c91e2c074 Bug 1561216 - Change StaticPrefs from a class to a namespace. r=froydnj
This doesn't change the way C++ code uses static prefs. But it does slightly
change how Rust code uses static prefs, specifically the name generated by
bindgen is slightly different.

The commit also improves some comments.

Differential Revision: https://phabricator.services.mozilla.com/D35764
2019-06-25 10:36:59 +10:00
Emilio Cobos Álvarez
ab26c3cce3 Bug 1552708 - Use cbindgen for URIs. r=heycam
This doesn't clean up as much as a whole, but it's a step in the right
direction. In particular, it allows us to start using simple bindings for:

 * Filters
 * Shapes and images, almost. Need to:
   * Get rid of the complex -moz- gradient parsing (let
     layout.css.simple-moz-gradient.enabled get to release).
 * Counters, almost. Need to:
   * Share the Attr representation with Gecko, by not using Option<>.
     * Just another variant should be enough (ContentItem::{Attr,Prefixedattr},
       maybe).

Which in turn allows us to remove a whole lot of bindings in followups to this.

The setup changes a bit. This also removes the double pointer I complained about
while reviewing the shared UA sheet patches. The old setup is:

```
SpecifiedUrl
 * CssUrl
   * Arc<CssUrlData>
     * String
     * UrlExtraData
 * UrlValueSource
   * Arc<CssUrlData>
   * load id
   * resolved uri
   * CORS mode.
   * ...
```

The new one removes the double reference to the url data via URLValue, and looks
like:

```
SpecifiedUrl
 * CssUrl
   * Arc<CssUrlData>
     * String
     * UrlExtraData
     * CorsMode
     * LoadData
       * load id
       * resolved URI
```

The LoadData is the only mutable bit that C++ can change, and is not used from
Rust. Ideally, in the future, we could just use rust-url to resolve the URL
after parsing or something, and make it all immutable. Maybe.

I've verified that this approach still works with the UA sheet patches (via the
LoadDataSource::Lazy).

The reordering of mWillChange is to avoid nsStyleDisplay from going over the
size limit. We want to split it up anyway in bug 1552587, but mBinding gains a
tag member, which means that we were having a bit of extra padding.

One thing I want to explore is to see if we can abuse rustc's non-zero
optimizations to predict the layout from C++, but that's something to explore at
some other point in time and with a lot of care and help from Michael (who sits
next to me and works on rustc ;)).

Differential Revision: https://phabricator.services.mozilla.com/D31742
2019-05-29 21:22:04 +02:00
Brindusan Cristian
ff5dcfd738 Backed out 3 changesets (bug 1552708, bug 1552878) for build bustages and compiler issues. CLOSED TREE
Backed out changeset 9d4f178bfcbd (bug 1552878)
Backed out changeset 80db9f845237 (bug 1552708)
Backed out changeset 1bdbfbb5b342 (bug 1552708)
2019-05-27 17:00:03 +03:00
Emilio Cobos Álvarez
306823667b Bug 1552708 - Use cbindgen for URIs. r=heycam
This doesn't clean up as much as a whole, but it's a step in the right
direction. In particular, it allows us to start using simple bindings for:

 * Filters
 * Shapes and images, almost. Need to:
   * Get rid of the complex -moz- gradient parsing (let
     layout.css.simple-moz-gradient.enabled get to release).
 * Counters, almost. Need to:
   * Share the Attr representation with Gecko, by not using Option<>.
     * Just another variant should be enough (ContentItem::{Attr,Prefixedattr},
       maybe).

Which in turn allows us to remove a whole lot of bindings in followups to this.

The setup changes a bit. This also removes the double pointer I complained about
while reviewing the shared UA sheet patches. The old setup is:

```
SpecifiedUrl
 * CssUrl
   * Arc<CssUrlData>
     * String
     * UrlExtraData
 * UrlValueSource
   * Arc<CssUrlData>
   * load id
   * resolved uri
   * CORS mode.
   * ...
```

The new one removes the double reference to the url data via URLValue, and looks
like:

```
SpecifiedUrl
 * CssUrl
   * Arc<CssUrlData>
     * String
     * UrlExtraData
     * CorsMode
     * LoadData
       * load id
       * resolved URI
```

The LoadData is the only mutable bit that C++ can change, and is not used from
Rust. Ideally, in the future, we could just use rust-url to resolve the URL
after parsing or something, and make it all immutable. Maybe.

I've verified that this approach still works with the UA sheet patches (via the
LoadDataSource::Lazy).

The reordering of mWillChange is to avoid nsStyleDisplay from going over the
size limit. We want to split it up anyway in bug 1552587, but mBinding gains a
tag member, which means that we were having a bit of extra padding.

One thing I want to explore is to see if we can abuse rustc's non-zero
optimizations to predict the layout from C++, but that's something to explore at
some other point in time and with a lot of care and help from Michael (who sits
next to me and works on rustc ;)).

Differential Revision: https://phabricator.services.mozilla.com/D31742
2019-05-27 11:45:12 +00:00
Cameron McCormack
325131e833 Bug 1474793 - Part 10.8: Add derived ToShmem implementations. r=emilio
Depends on D17196

Differential Revision: https://phabricator.services.mozilla.com/D17197
2019-03-30 00:16:25 +00:00
Emilio Cobos Álvarez
aff2d25b6f Bug 1537576 - fix some rust-nightly warnings about unused doc comments. r=boris
Differential Revision: https://phabricator.services.mozilla.com/D24287
2019-03-20 22:47:30 +00:00
Simon Sapin
07c1de366b Bug 1518045 - Rustfmt has changed its default style. r=emilio
This cherry-picks the formatting parts of
https://github.com/servo/servo/pull/22385.
2019-01-07 00:53:06 +01:00
Emilio Cobos Álvarez
dea05cdada Bug 1511811 - Use https for the MPL license URL.
Cherry-picks https://github.com/servo/servo/pull/22198
2018-12-03 08:43:48 -05:00
shindli
3a4462fafb Backed out 13 changesets (bug 1511811) for Btup bustages
Backed out changeset d71cde918f43 (bug 1511811)
Backed out changeset 0ae2634de8e1 (bug 1511811)
Backed out changeset 53d1f5ca4099 (bug 1511811)
Backed out changeset 5a08148928ef (bug 1511811)
Backed out changeset da7816ec50ef (bug 1511811)
Backed out changeset 5fe23889cccc (bug 1511811)
Backed out changeset 800bc60c75a7 (bug 1511811)
Backed out changeset 2392d8199cd0 (bug 1511811)
Backed out changeset 7bc486fbd195 (bug 1511811)
Backed out changeset d2c997426108 (bug 1511811)
Backed out changeset ddd573878432 (bug 1511811)
Backed out changeset 29c8ec1559a4 (bug 1511811)
Backed out changeset f5851346109d (bug 1511811)
2018-12-03 15:39:11 +02:00
Emilio Cobos Álvarez
11a665046f Bug 1511811 - Use https for the MPL license URL.
Cherry-picks https://github.com/servo/servo/pull/22198
2018-12-03 08:15:21 -05:00
Emilio Cobos Álvarez
6f6c710a23 Bug 1506391 - Manually extinguish multi-line use statements. 2018-11-11 02:40:30 +01:00
Emilio Cobos Álvarez
bedbd489d5 Bug 1506391 - Revert try -> r#try change.
Since we're in an inconsistent state because mako files weren't updated, and
it's really ugly.
2018-11-11 02:40:28 +01:00