Commit graph

2826 commits

Author SHA1 Message Date
Emilio Cobos Álvarez
c2819365f0 style: Rename MozLength to Size, and MaxLength to MaxSize.
MozLength is not a very descriptive name. If we're going to use it in both Gecko
and Servo we may as well name it something more accurate.

I would've chosen `ContentSize` per CSS2[1][2] if it wasn't a lie in presence
of box-sizing. I don't have better ideas than `Size`, given that.

[1]: https://drafts.csswg.org/css2/visudet.html#propdef-width
[2]: https://drafts.csswg.org/css2/box.html#content-width

Differential Revision: https://phabricator.services.mozilla.com/D19280
2019-02-12 02:28:00 +01:00
Emilio Cobos Álvarez
1cb235c81a style: Call things by their name. 2019-02-10 07:11:47 +01:00
Emilio Cobos Álvarez
a68bc29b96 style: Derive more length stuff, and shrink MaxLength / MozLength's repr(C) representation.
This patch:

 * Makes LengthPercentageOrAuto generic, and removes a bunch of code fo
   LengthPercentageOrNone, which was used only for servo and now can use the
   normal MaxLength (with a cfg() guard for the ExtremumLength variant).

 * Shrinks MaxLength / MozLength's repr(C) reperesentation by reducing enum
   nesting. The shrinking is in preparation for using them from C++ too, though
   that'd be a different bug.

 * Moves NonNegative usage to the proper places so that stuff for them can be
   derived.

I did this on top of bug 1523071 to prove both that it could be possible and
that stuff wasn't too messy. It got a bit messy, but just because of a bug I
had fixed in bindgen long time ago already, so this updates bindgen's patch
version to grab a fix instead of ugly workarounds :)

Differential Revision: https://phabricator.services.mozilla.com/D17762
2019-02-10 07:11:46 +01:00
Emilio Cobos Álvarez
8dad956513 style: Use Rust lengths for margin / padding / inset.
Also for the intersection observer root margin, since it was easier to fix it
up and clean it up than not doing it.

This is the first big step to get rid of nscoord. It duplicates a bit of logic
in nsLayoutUtils since for now max/min-width/height are still represented with
nsStyleCoord, but I think I prefer to land this incrementally.

I didn't add helpers for the physical accessors of the style rect sides that
nsStyleSides has (top/bottom/left/right) since I think we generally should
encourage the logical versions, but let me know if you want me to do that.

Differential Revision: https://phabricator.services.mozilla.com/D17739
2019-02-10 05:12:19 +01:00
Emilio Cobos Álvarez
13e12d23f3 style: Use the style system's LengthPercentage for shape-margin.
This also makes us pass a few WPTs because we stop losing precision when
serializing the computed value.

Differential Revision: https://phabricator.services.mozilla.com/D17738
2019-02-10 05:12:11 +01:00
Emilio Cobos Álvarez
15f503d000 style: Add bindings for LengthPercentage, and use it for text-indent.
Which is the only property that uses LengthPercentage alone.

Differential Revision: https://phabricator.services.mozilla.com/D17737
2019-02-10 05:12:00 +01:00
Emilio Cobos Álvarez
207ff730c2 style: Cleanup a bit after bug 1525371.
Differential Revision: https://phabricator.services.mozilla.com/D19001
2019-02-10 05:11:49 +01:00
Emilio Cobos Álvarez
258217a369 style: Generate combined transform just once.
Differential Revision: https://phabricator.services.mozilla.com/D18567
2019-02-10 05:11:43 +01:00
Emilio Cobos Álvarez
eef9e24e96 style: Make -moz-binding chrome / UA only.
But enable it in all tests because a lot of them rely on using it in the
style="" attribute for example, or in inline stylesheets, which will no longer
parse this (even in chrome documents), and we don't want to rewrite all the XUL
and XBL tests.

Differential Revision: https://phabricator.services.mozilla.com/D18027
2019-02-10 05:11:33 +01:00
Alan Jeffrey
386c0f80ed Implemented fullscreen top layer 2019-02-06 13:23:52 -06:00
Emilio Cobos Álvarez
76ea22d50c style: Simplify some conversion code used for mapped attributes.
These days for the types we share computed value representation we don't really
need any special code.

Differential Revision: https://phabricator.services.mozilla.com/D17763
2019-01-29 02:39:26 +01:00
Emilio Cobos Álvarez
45a416b996 style: Cleanup a few shorthand properties.
Differential Revision: https://phabricator.services.mozilla.com/D17082
2019-01-29 02:39:19 +01:00
Emilio Cobos Álvarez
624db3a0eb style: Remove layout.css.overflow.moz-scrollbars.enabled.
We've been shipping it for a few releases already, see bug 1481125.

Differential Revision: https://phabricator.services.mozilla.com/D17081
2019-01-29 02:38:58 +01:00
Emilio Cobos Álvarez
0488a3d3d3 style: Implement the inset shorthand.
Differential Revision: https://phabricator.services.mozilla.com/D16704
2019-01-29 02:38:46 +01:00
Emilio Cobos Álvarez
289d9b033c style: Make tidy happy. 2019-01-20 17:50:18 +01:00
Mats Palmgren
c40839a24f style: Implement the flow-relative border-radius properties.
Bug: 1520684
Reviewed-by: emilio
2019-01-20 14:32:42 +01:00
Mats Palmgren
beb4ad91af style: Add plumbing for handling physical/logical corner values.
Bug: 1520684
Reviewed-by: emilio
2019-01-20 14:32:26 +01:00
Mats Palmgren
50babf81f8 style: Implement the border-{block,inline}-{color,style,width} shorthands.
Bug: 1520236
Reviewed-by: emilio
2019-01-20 14:32:11 +01:00
Noemi Erli
1ae815214a Backed out changeset 009cf5f885ba (bug 1520236) for multiple failures in logical-box-border-color-visited-link-002.html 2019-01-20 14:31:56 +01:00
Mats Palmgren
89e12780b9 style: Implement the border-block/border-inline shorthands.
Bug: 1520396
Reviewed-by: emilio
2019-01-20 14:31:39 +01:00
Mats Palmgren
604ec247f7 style: Implement the border-{block,inline}-{color,style,width} shorthands.
Bug: 1520236
Reviewed-by: emilio
2019-01-20 14:31:20 +01:00
Mats Palmgren
30184370b1 style: Implement the inset-block/inline shorthands.
Bug: 1520229
Reviewed-by: emilio
2019-01-20 14:31:04 +01:00
Emilio Cobos Álvarez
92b58ade2f style: Move cursor to cbindgen.
The only reason it was on style_traits is so that they could use it from some
other crates, but Servo eventually ends up getting the value from an integer, so
may as well pass it around and do that in the end of the process anyway.

Differential Revision: https://phabricator.services.mozilla.com/D16557
2019-01-20 14:30:51 +01:00
Mats Palmgren
88fd730775 style: Implement the margin-block/inline shorthands.
Bug: 1519944
Reviewed-by: emilio
2019-01-20 14:30:36 +01:00
Mats Palmgren
2509c729dc style: Implement the padding-block/inline shorthands.
Bug: 1519847
Reviewed-by: emilio
2019-01-20 14:30:21 +01:00
Boris Chiou
2b77a29697 style: Implement Animate for track lists on grid-template-{columns|rows}.
Based on https://bugzilla.mozilla.org/show_bug.cgi?id=1348519#c6 and
https://github.com/w3c/csswg-drafts/issues/3201:

Currently grid-template-rows/columns interpolate “per computed value”, which
means that if the number of tracks differs, or any track changes to/from a
particular keyword value to any other value, or if a line name is added/removed
at any position, the entire track listing is interpolated as “discrete”.
But we "agree" with two more granular options:

1. Check interpolation type per track, rather than for the entire list, before
   falling back to discrete. I.e. a length-percentage track can animate between
   two values while an adjacent auto track flips discretely to min-content.
2. Allow discrete interpolation of line name changes independently of track
   sizes.

Besides, for the repeat() function, it's complicated to support interpolation
between different repeat types (i.e. auto-fill, auto-fit) and different repeat
counts, so we always fall-back to discrete if the first parameter of repeat()
is different.

Differential Revision: https://phabricator.services.mozilla.com/D16129
2019-01-13 21:58:44 +01:00
Ryan Hunt
c04a4140a7 style: Add 'overflow-anchor' CSS property.
https://drafts.csswg.org/css-scroll-anchoring/#exclusion-api

Differential Revision: https://phabricator.services.mozilla.com/D13265
2019-01-13 21:58:18 +01:00
Simon Sapin
3a710f22ed Document public macros.
Undocumented public macros emit warnings in nightly-2019-01-11,
and we #![deny] that warning.
2019-01-11 14:17:22 +01:00
Emilio Cobos Álvarez
80651fde47 style: Manually rename some variables.
lop is not an acceptable variable name for LengthPercentage.

Differential Revision: https://phabricator.services.mozilla.com/D15813
2019-01-08 12:00:48 +01:00
Emilio Cobos Álvarez
daf1f02feb style: Rename LengthOrPercentage to LengthPercentage.
It does not represent `<length> | <percentage>`, but `<length-percentage>`, so
`LengthOrPercentage` is not the right name.

This patch is totally autogenerated using:

rg 'LengthOrPercentage' servo | cut -d : -f 1 | sort | uniq > files
for file in $(cat files); do sed -i "s#LengthOrPercentage#LengthPercentage#g" $file; done

Differential Revision: https://phabricator.services.mozilla.com/D15812
2019-01-08 12:00:48 +01:00
Emilio Cobos Álvarez
4a31509215 style: Fix servo build.
This also fixes a bunch of calc handling issues and such.

Also remove tests that no longer compile and are covered by WPT.
2019-01-08 12:00:42 +01:00
Emilio Cobos Álvarez
ca503b4908 style: Simplify computed::LengthOrPercentage and friends.
This is a first step to share LengthOrPercentage representation between Rust and
Gecko.

We need to preserve whether the value came from a calc() expression, for now at
least, since we do different things depending on whether we're calc or not right
now. See https://github.com/w3c/csswg-drafts/issues/3482 and dependent bugs for
example.

That means that the gecko conversion code needs to handle calc() in a bit of an
awkward way until I change it to not be needed (patches for that incoming in the
next few weeks I hope).

I need to add a hack to exclude other things from the PartialEq implementation
because the new conversion code is less lossy than the old one, and we relied on
the lousiness in AnimationValue comparison (in order to start transitions and
such, in [1] for example).

I expect to remove that manual PartialEq implementation as soon as I'm done with
the conversion.

The less lossy conversion does fix a few serialization bugs for animation values
though, like not loosing 0% values in calc() when interpolating lengths and
percentages, see the two modified tests:

 * property-types.js
 * test_animation_properties.html

Differential Revision: https://phabricator.services.mozilla.com/D15793
2019-01-07 17:05:40 +01:00
Hiroyuki Ikezoe
152ef2e042 style: Drop layout.css.background-blend-mode.enabled pref.
It was enabled by default in bug 970600.

Differential Revision: https://phabricator.services.mozilla.com/D15708
2019-01-07 00:32:53 +01:00
Hiroyuki Ikezoe
48e4433ab8 style: Drop layout.css.scroll-behavior.property-enabled pref.
It was enabled by default in bug 1041833 (for desktops) and
bug 1087562 (for Fennec).

Differential Revision: https://phabricator.services.mozilla.com/D15707
2019-01-07 00:32:53 +01:00
Hiroyuki Ikezoe
a0d1a038a2 style: Drop layout.css.mix-blend-mode.enabled pref.
It was enabled by default in bug 952643.

Differential Revision: https://phabricator.services.mozilla.com/D15706
2019-01-07 00:32:53 +01:00
Hiroyuki Ikezoe
0488f81dac style: Drop layout.css.isolation.enabled pref.
It was enabled by default in bug 1091885.

Differential Revision: https://phabricator.services.mozilla.com/D15705
2019-01-07 00:32:52 +01:00
Hiroyuki Ikezoe
d862daeee6 style: Drop layout.css.image-orientation.enabled pref.
It was enabled by default in bug 825771.

Differential Revision: https://phabricator.services.mozilla.com/D15704
2019-01-07 00:32:52 +01:00
Hiroyuki Ikezoe
529ff36bb6 style: Drop layout.css.color-adjust.enabled pref.
It was enabled by default in bug 1209273.

Depends on D15702

Differential Revision: https://phabricator.services.mozilla.com/D15703
2019-01-07 00:32:52 +01:00
Hiroyuki Ikezoe
d5bee572d7 style: Drop layout.css.box-decoration-break.enabled pref.
It was enabled by default in bug 1006326.

Differential Revision: https://phabricator.services.mozilla.com/D15702
2019-01-07 00:32:52 +01:00
Emilio Cobos Álvarez
8929087d83 style: Update the Rust target version for bindgen.
This brings us alignas support and also associated constants for bitfield enums.

Differential Revision: https://phabricator.services.mozilla.com/D15334
2019-01-07 00:32:50 +01:00
sharath
8a6230e5a2 style: changes to implement enum class for #define NS_STYLE_COLOR_ADJUST.
Differential Revision: https://phabricator.services.mozilla.com/D15284
2019-01-07 00:32:50 +01:00
Boris Chiou
f0f3eb3194 style: Clamp to non-negative value after doing interpolation for circle(), ellipse(), and inset().
Replace LengthOrPercentage with NonNegativeLengthOrPercentage on
ShapeRadius, Circle, Ellipse. And derive ToAnimatedValue for ShapeSource and
its related types, so we clamp its interpolated results into non-negative
values. (i.e. The radius of circle()/ellipse() and the border-radius of
inset().)

Note: We may get negative values when using a negative easing function, so the
clamp is necessary to avoid the incorrect result or any undefined behavior.

Differential Revision: https://phabricator.services.mozilla.com/D14654
2019-01-07 00:32:49 +01:00
Boris Chiou
627559546d style: Let logical height, block-size, accept keywords.
We should let block-size/min-block-size/max-block-size accept keywords as the
initial value, just like width in vertical writing mode or height in horizontal
writing mode.

Differential Revision: https://phabricator.services.mozilla.com/D14320
2019-01-07 00:32:49 +01:00
Emilio Cobos Álvarez
ca1ad003bd style: Use NonNegative more in the border code.
This ended up not being so small of a patch as I'd have thought, since it
propagated a bit. But most of it is mechanical. Interesting part is
NonNegativeNumberOrPercentage and the actual uses of the NonNegative stuff and
during parsing.

This looks like it'd fix a few correctness issues during interpolation for all
the types except for BorderRadius and co (which handled it manually).

I should write tests for those in a different patch.

Differential Revision: https://phabricator.services.mozilla.com/D14673
2019-01-07 00:03:41 +01:00
Emilio Cobos Álvarez
31838b1e6f style: The 'all' property is not animatable.
Since it allows to animate display, which is not good.

This is a regression from:

  https://hg.mozilla.org/mozilla-central/rev/6884ba750aa3

Actually I wonder if the logic shouldn't be the other way around, i.e., a
shorthand is animatable if all the longhands are, not if just one.

In any case this rolls back to the previous behavior, should we do that, it
should be another bug.

Differential Revision: https://phabricator.services.mozilla.com/D14632
2019-01-07 00:03:15 +01:00
Daniel Holbert
4799e83e3c style: Enable CSS containment for frontend code.
Differential Revision: https://phabricator.services.mozilla.com/D9963
2019-01-07 00:03:04 +01:00
Emilio Cobos Álvarez
901c055519 style: Move overflow to use cbindgen.
It's one of the most annoying / hacky mako bits we have.

Differential Revision: https://phabricator.services.mozilla.com/D14084
2018-12-16 13:35:05 +01:00
Emilio Cobos Álvarez
626172d64c style: Use cbindgen for a couple more CSS properties.
Differential Revision: https://phabricator.services.mozilla.com/D13886
2018-12-16 13:35:04 +01:00
Emilio Cobos Álvarez
edf4b0129b style: Make page-break-* Gecko-only. 2018-12-02 14:17:28 -05:00
Emilio Cobos Álvarez
efecd06a28 style: Use cbindgen for border-style and outline-style.
I'm pretty sure the FIXME I left in the outline-style code is a bug,
but I want to clean this up further and I didn't want to fix it without adding
a test.

Differential Revision: https://phabricator.services.mozilla.com/D12859
2018-12-02 14:17:27 -05:00