Commit graph

2892 commits

Author SHA1 Message Date
Emilio Cobos Álvarez
197065f6bc style: Use rust lengths for border corners.
The test in https://github.com/web-platform-tests/wpt/pull/15423 hasn't been
synced over yet, but it passes with this patch of course.

Differential Revision: https://phabricator.services.mozilla.com/D20960
2019-03-13 15:08:12 +01:00
Emilio Cobos Álvarez
71daec59eb style: Use Rust types from transform-origin / perspective-origin.
Differential Revision: https://phabricator.services.mozilla.com/D20382
2019-02-23 21:05:23 -08:00
Emilio Cobos Álvarez
74d7d5bc42 style: Use Rust types for perspective and z-index.
Differential Revision: https://phabricator.services.mozilla.com/D20381
2019-02-23 21:05:17 -08:00
Asfiya
6428ed726d style: Convert NS_STYLE_FLEX_DIRECTION to an enum class in nsStyleConsts.h
Converted the #define variable NS_STYLE_FLEX_DIRECTION to an enum class in nsStyleConsts.h and made changes in other files that access it

Differential Revision: https://phabricator.services.mozilla.com/D20291
2019-02-23 21:05:07 -08:00
scharing
85718c3b5a style: Convert NS_STYLE_MASK_MODE_* to enum class.
Differential Revision: https://phabricator.services.mozilla.com/D20063
2019-02-23 21:05:00 -08:00
Emilio Cobos Álvarez
73d5b82f9f style: Improve #[derive(Parse)].
I want to do this so that I can get rid of Either<>. The reasons for getting rid
of either are multiple:

 * It doesn't generate as nice C++ code using cbindgen.
 * It isn't that nice to use either from Rust.
 * cbindgen has bugs with zero-sized types.

I started using this for ColorOrAuto and a few others, for now.

Differential Revision: https://phabricator.services.mozilla.com/D19844
2019-02-23 21:04:44 -08:00
Emilio Cobos Álvarez
6118e4d993 style: Use Rust types for some misc properties.
-moz-tab-size, border-image-outset and border-image-slice.

This is not a particularly interesting patch, just removes some code. We can
remove way more code when a few related properties are also ported.

Differential Revision: https://phabricator.services.mozilla.com/D19825
2019-02-23 21:04:33 -08:00
Emilio Cobos Álvarez
eefd440656 style: Remove nsFont::featureValueLookup.
It's a global object, it doesn't have to be stored in nsFont. Pass it from the
caller like the user font set and co.

Depends on D20141

Differential Revision: https://phabricator.services.mozilla.com/D20142
2019-02-23 21:04:26 -08:00
Emilio Cobos Álvarez
dcfe30ff18 style: Remove a couple trivial dependencies on nsPresContext.
Differential Revision: https://phabricator.services.mozilla.com/D20141
2019-02-23 21:04:19 -08:00
Emilio Cobos Álvarez
3231714758 style: Include anon boxes in CSSPseudoElementType, to remove ComputedStyle::mPseudoTag.
This is more consistent with what the Rust bits of the style system do, and
removes a pointer from ComputedStyle which is always nice.

This also aligns the Rust bits with the C++ bits re. not treating xul pseudos as
anonymous boxes. See the comment in nsTreeStyleCache.cpp regarding those.

Can't wait for XUL trees to die.

Differential Revision: https://phabricator.services.mozilla.com/D19002
2019-02-23 21:04:03 -08:00
Hiroyuki Ikezoe
22e12a0f52 style: Implement scroll-snap-align parser and serializer.
https://drafts.csswg.org/css-scroll-snap-1/#scroll-snap-align

Differential Revision: https://phabricator.services.mozilla.com/D20205
2019-02-23 21:03:55 -08:00
Hiroyuki Ikezoe
7cbaaf6734 style: Implement scroll-padding parser and serializer.
Differential Revision: https://phabricator.services.mozilla.com/D20103
2019-02-23 21:03:47 -08:00
Hiroyuki Ikezoe
79a5e97c13 style: Implement scroll-margin parser and serializer.
The reason why we use  RelaxedAtomBool is that
ScrollSnapUtils::GetSnapPointForDestination() is called both from the main and
the compositor threads, and the function will have a branch depending on the
pref value.

Differential Revision: https://phabricator.services.mozilla.com/D20101
2019-02-23 21:03:29 -08:00
Emilio Cobos Álvarez
07cb325402 style: Use rust types for background-size.
Hopefully straight-forward.

Differential Revision: https://phabricator.services.mozilla.com/D19625
2019-02-23 21:02:46 -08:00
Emilio Cobos Álvarez
1e6338e1ee style: Use Rust types for Position.
This one should be much easier to review / much more pleasant to see :-)

Differential Revision: https://phabricator.services.mozilla.com/D19563
2019-02-23 21:02:36 -08:00
Emilio Cobos Álvarez
f7a59bf0ee style: Use Rust sizes for flex-basis, width, height, and their min/max properties.
Really sorry for the size of the patch :(

Only intentional behavior change is in the uses of HasLengthAndPercentage(),
where it's easier to do the right thing. The checks that used to check for
(IsCalcUnit() && CalcHasPercentage()) are wrong since bug 957915.

Differential Revision: https://phabricator.services.mozilla.com/D19553
2019-02-23 21:02:18 -08:00
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