Commit graph

7214 commits

Author SHA1 Message Date
Emilio Cobos Álvarez
99f6d6f1b8 style: Three-value position syntax uses calc() as its computed value representation.
This restores the previous behavior of using calc().

Note that background-position / object-position, which test this, weren't
hitting the assertion because they use another codepath.

I didn't add more extensive tests for this because it's well tested for those
two properties, and because this is legacy anyway, see the comment in the test.

I did add the assertion to the codepath those two properties hit.

Differential Revision: https://phabricator.services.mozilla.com/D16176
2019-01-11 01:12:41 +01:00
Emilio Cobos Álvarez
119b316885 style: Rustfmt recent changes. 2019-01-11 00:57:26 +01:00
Emilio Cobos Álvarez
28cc747a0d style: Use a less-specific indexmap version. 2019-01-11 00:55:09 +01:00
Cameron McCormack
03507801cf style: Make GkAtoms opaque to avoid lld-link.exe errors.
Differential Revision: https://phabricator.services.mozilla.com/D15800
2019-01-11 00:50:46 +01:00
Cameron McCormack
63fd707bd3 style: Use atom handles in favour of atom pointers in style system code.
Differential Revision: https://phabricator.services.mozilla.com/D15078
2019-01-11 00:50:26 +01:00
Shanavas M
b763d6737c Remove OrderedMap in favor of IndexMap 2019-01-10 12:57:09 +05:30
Emilio Cobos Álvarez
2a6cdaa30a Rustfmt recent changes. 2019-01-08 12:01:28 +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
Emilio Cobos Álvarez
4c1076a9ac style: Fix gecko build. 2019-01-07 00:32:54 +01:00
Emilio Cobos Álvarez
5f173c463e style: Rustfmt recent changes. 2019-01-07 00:32:54 +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
a454f6233d Rename nsIDocument to mozilla::dom::Document.
Summary: Really sorry for the size of the patch. It's mostly automatic
s/nsIDocument/Document/ but I had to fix up in a bunch of places manually to
add the right namespacing and such.

Overall it's not a very interesting patch I think.

nsDocument.cpp turns into Document.cpp, nsIDocument.h into Document.h and
nsIDocumentInlines.h into DocumentInlines.h.

I also changed a bunch of nsCOMPtr usage to RefPtr, but not all of it.

While fixing up some of the bits I also removed some unneeded OwnerDoc() null
checks and such, but I didn't do anything riskier than that.

Bug: 1517241
Reviewed-by: smaug
2019-01-07 00:32:51 +01:00
quasicomputational
274845fc14 style: Implement the 'overflow-inline' media query.
Bug: 1422235
Reviewed-by: emilio
2019-01-07 00:32:51 +01:00
quasicomputational
81a07b4351 style: Implement the 'overflow-block' media query.
Bug: 1422235
Reviewed-by: emilio
2019-01-07 00:32:51 +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
Cameron McCormack
7b444182fe style: Bump smallvec and smallbitvec.
Differential Revision: https://phabricator.services.mozilla.com/D15052
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
Boris Chiou
b7e728abd0 style: Support unprefixed min-content and max-content.
Support unprefixed min-content and max-content and treat the prefixed
version as aliases for
1. width, min-width, max-width if inline-axis is horizontal, and
2. height, min-height, max-height if inline-axis is vertical, and
3. inline-size, min-inline-size, max-inline-size, and
4. flex-basis.

Besides, update the test cases to use unprefixed max-content and
min-content.

Differential Revision: https://phabricator.services.mozilla.com/D7536
2019-01-07 00:32:39 +01:00
Boris Chiou
3ed525f6c9 style: Use cbindgen for ExtremumLength.
ExtremumLength is the keyword type for css sizing properties, so we
could use cbindgen.

In Gecko, we use nsStyleCoord to store the sizing properties, and use
integer values to check the enum values, so I keep the macros in nsStyleConsts.
Even though we need to convert the enum type into integer, we still have
benefits to reduce the complexity of converting Rust into C++, and leave
the simplified mappings in C++ for better readability.

Differential Revision: https://phabricator.services.mozilla.com/D7535
2019-01-07 00:03:52 +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
19035590ce style: Cleanup some conversion code dealing with NonNegative.
I'm about to introduce another use of it and I don't want to repeat the same
copy-pasta again.

Differential Revision: https://phabricator.services.mozilla.com/D14672
2019-01-07 00:03:31 +01:00
Emilio Cobos Álvarez
b59ec2e699 style: Make <use> shadow trees lookup keyframe rules in the containing tree.
The same thing we do for rule matching.

Differential Revision: https://phabricator.services.mozilla.com/D14548
2019-01-07 00:03:23 +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
bors-servo
e68585a26f
Auto merge of #22576 - Eijebong:itertools, r=Manishearth
Update itertools to 0.8

<!-- Reviewable:start -->
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/22576)
<!-- Reviewable:end -->
2019-01-02 13:05:04 -05:00
bors-servo
8de1b8d3f4
Auto merge of #22385 - servo:rustup, r=SimonSapin
Upgrade to rustc 1.33.0-nightly (fb86d604b 2018-12-27)

<!-- Reviewable:start -->
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/22385)
<!-- Reviewable:end -->
2018-12-31 13:09:35 -05:00
Bastien Orivel
b3fd2233b3 Update itertools to 0.8 2018-12-30 16:09:34 +01:00
Bastien Orivel
c3df9b594b Update bindgen to 0.46 2018-12-29 19:30:23 +01:00
Simon Sapin
be2218a134 Fix some warnings 2018-12-28 15:31:08 +01:00
Simon Sapin
be69f9c3e6 Rustfmt has changed its default style :/ 2018-12-28 13:17:47 +01:00
bors-servo
b5a10e9c96
Auto merge of #22487 - emilio:single-layout-thread-pool, r=jdm
style: Make Servo use a single thread-pool for layout-related tasks per process.

Instead of per-document. This also allows to reuse this thread-pool if needed
for other stuff, like parallel CSS parsing (#22478), and to share more code with
Gecko, which is always nice.

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/22487)
<!-- Reviewable:end -->
2018-12-23 09:39:07 -05:00
Emilio Cobos Álvarez
006e71c7de style: Make Servo use a single thread-pool for layout-related tasks per-process.
Instead of per-document. This also allows to reuse this thread-pool if needed
for other stuff, like parallel CSS parsing (#22478), and to share more code with
Gecko, which is always nice.
2018-12-23 13:00:56 +01:00
Bastien Orivel
96816bd107 Update owning_ref to 0.4 2018-12-22 21:02:42 +01:00
Emilio Cobos Álvarez
273705d7fb style: Fix tidy issues. 2018-12-16 13:35:09 +01:00
Olli Pettay
28719f2455 Move FragmentOrElement::mAttrs to Element.
Bug: 1512256
Reviewed-by: ehsan
2018-12-16 13:35:09 +01:00
Emilio Cobos Álvarez
27322abeda style: Minor build fixup after the Servo crossbeam_channel update. 2018-12-16 13:35:08 +01:00
Daniel Holbert
ee6bf98675 style: Include the 'unsafe' keyword in serializations of css-align properties.
Previously we'd omit it since it was merely an explicit way of requesting the
default behavior.  But the spec has changed such that it's not necessarily
equivalent to the default anymore:
https://drafts.csswg.org/css-align/#overflow-values

(Technically the behaviors are probably still equivalent in our implementation,
pending bug 1451380, but we don't have to publicize that via our
serialization.)

Differential Revision: https://phabricator.services.mozilla.com/D14599
2018-12-16 13:35:07 +01:00
Emilio Cobos Álvarez
7f5a9e0f45 style: Handle nested slots correctly in slotted matching and invalidation.
The patch and test should be pretty much self-descriptive.

Differential Revision: https://phabricator.services.mozilla.com/D14063
2018-12-16 13:35:06 +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