Commit graph

6718 commits

Author SHA1 Message Date
Mantaroh Yoshinaga
1c574cf93b Add SVGLengthOrPercentageOrNumber for stroke-*.
We need to use enum instead of Either since we can't interpolate stroke-* between
unitless length and unit length(e.g. '5' -> '10px').

This coomit make following:

 * Introduce SVGLengthOrPercentageOrNumber on computed and specified values.
 * Make SVGLengthOrPercentageOrNumber animatable.
 * Make stroke-dasharray not-accumulate.
2017-08-18 10:28:11 +09:00
bors-servo
cc86ca2bcd Auto merge of #18126 - servo:glow-fox, r=emilio
geckolib: Fix some warnings (treated as error) new in Rust Nigthly

<!-- 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/18126)
<!-- Reviewable:end -->
2017-08-17 11:05:32 -05:00
Simon Sapin
35282042bc geckolib: Fix some warnings (treated as error) new in Rust Nigthly 2017-08-17 15:59:33 +02:00
Tom Tromey
7224a5617f Expose the source map URL on a style sheet
This changes Servo to track the source map URL of a style sheet.  This
parallels a change going in to Gecko:
https://bugzilla.mozilla.org/show_bug.cgi?id=1388855
2017-08-17 06:51:30 -06:00
Boris Chiou
e8fad236ef Implement ComputeSquaredDistance for Matrix and Perspective. 2017-08-17 13:53:25 +08:00
Boris Chiou
3a5cbfb769 Implement ComputeSquaredDistance for TransformList. 2017-08-17 13:53:20 +08:00
Boris Chiou
03e1794c12 Use f64 for Quaternion.
The unit of gfxQuaternion in Gecko is gfxFloat, which is "double", so
it's better to use f64 to match the precision of Gecko.
2017-08-17 13:53:15 +08:00
Boris Chiou
a5433ad68a Tweak CalcLengthOrPercentage to use pixel value.
We compute the distance for eCSSUnit_Calc by pixel value in Gecko,
so let's follow the same rules.
2017-08-17 13:53:07 +08:00
Ting-Yu Lin
ede8a23986 style: Move functions related to anonymous element to GeckoElement (Bug 1390773)
MozReview-Commit-ID: 6LqAPM86MQC
2017-08-17 10:50:34 +08:00
bors-servo
575bcf3989 Auto merge of #18117 - servo:we-are-leaving-babylon, r=emilio
Move more CSS values to their own submodules

<!-- 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/18117)
<!-- Reviewable:end -->
2017-08-16 20:26:22 -05:00
bors-servo
846b6dcb07 Auto merge of #18102 - hiikezoe:compute-distance-for-shadow-list, r=boris
Implement distance for shadow list.

<!-- Please describe your changes on the following line: -->
https://bugzilla.mozilla.org/show_bug.cgi?id=1387973
---
- [X] `./mach build -d` does not report any errors
- [X] `./mach test-tidy` does not report any errors

<!-- 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/18102)
<!-- Reviewable:end -->
2017-08-16 18:17:18 -05:00
Anthony Ramine
4ebeaa599b Move specified and computed time values to submodules 2017-08-17 00:05:59 +02:00
Anthony Ramine
1bd12bf91a Move specified and computed angles to submodules 2017-08-17 00:01:23 +02:00
Nazım Can Altınova
46adb0f0a7 Update bindings 2017-08-16 13:23:15 -07:00
Nazım Can Altınova
6893446b71 Add a pref checking mechanism for alias properties 2017-08-16 13:23:14 -07:00
bors-servo
75cae28728 Auto merge of #18103 - birtles:drop-fill-none-interpolation, r=hiro
Don't allow interpolating 'fill:none' with 'fill:none'

From [Gecko bug 1390364](https://bugzilla.mozilla.org/show_bug.cgi?id=1390364).

In SMIL we don't expect the 'none' value of the 'fill' property to be additive and hence the following animation should have no effect:

```svg
  <rect width="100" height="100" y="100" fill="blue">
    <animate attributeName="fill" dur="3s" from="red" by="none"/>
  </rect>
```

Although SMIL doesn't make this entirely clear, [it says](https://www.w3.org/TR/smil-animation/#AnimFuncValues) that "by animation" and "from-by animation" may only be used "with attributes that support addition (e.g.  most numeric attributes)" and [SVG says](https://www.w3.org/TR/SVG11/animate.html#AnimationAttributesAndProperties) that `<paint>`s are "only additive if each value can be converted to an RGB color". As a result, the animation above should have no effect.

By extrapolation, animating from 'none' by 'none' should also have no effect:

```svg
  <rect width="100" height="100" y="100" fill="blue">
    <animate attributeName="fill" dur="3s" from="none" by="none"/>
  </rect>
```

However, in Servo's interpolation of `<paint>`s we special case the interpolation and addition of 'none' such that if both values are 'none' it is allowed.

We should disallow this in order to produce the expected behavior and in order to match Gecko's behavior.

<!-- 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/18103)
<!-- Reviewable:end -->
2017-08-16 05:46:56 -05:00
bors-servo
467316e35b Auto merge of #18097 - bholley:avoid_recursion_clear_descendant_data, r=emilio
Avoid recursion in clear_descendant_data

This will allow us to have a tight stack limit in https://bugzilla.mozilla.org/show_bug.cgi?id=1376883

<!-- 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/18097)
<!-- Reviewable:end -->
2017-08-16 04:22:23 -05:00
bors-servo
b300800b2c Auto merge of #18087 - emilio:stylist-clear-cleanup, r=heycam
style: Cleanup a bit Stylist and SelectorMap.

Bug: 1390255
Reviewed-by: heycam

<!-- 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/18087)
<!-- Reviewable:end -->
2017-08-16 02:56:13 -05:00
Emilio Cobos Álvarez
4c80cccbd2
stylo: Cleanup a bit of the Stylist clear setup.
This moves us to clear on rebuild, which allows us to remove yet another place
where we track stylist dirtiness.

Bug: 1390255
Reviewed-by: heycam
MozReview-Commit-ID: nihQbUAbh8
Signed-off-by: Emilio Cobos Álvarez <emilio@crisal.io>
2017-08-16 08:49:41 +02:00
Emilio Cobos Álvarez
b040d79333
style: Avoid multiple selector walk-ups during SelectorMap insertion.
MozReview-Commit-ID: 5b2X0GL2753
Signed-off-by: Emilio Cobos Álvarez <emilio@crisal.io>
2017-08-16 08:49:39 +02:00
Ting-Yu Lin
0e82ca1d3a style: Skip matching :nth-child if element is the root of anonymous subtree
This implement the logic in Gecko's nsNthIndexCache::GetNthIndex().

MozReview-Commit-ID: 8lzK9iIbfzo
2017-08-16 14:25:01 +08:00
Bobby Holley
653107d6c4 Avoid recursion in clear_descendant_data.
MozReview-Commit-ID: LeMhhcKoLr9
2017-08-15 23:24:17 -07:00
Brian Birtles
9ecb0aa7fa Don't allow interpolating 'fill:none' with 'fill:none'
In SMIL we don't expect the 'none' value of the 'fill' property to be
additive and hence the following animation should have no effect:

  <rect width="100" height="100" y="100" fill="blue">
    <animate attributeName="fill" dur="3s" from="red" by="none"/>
  </rect>

Although SMIL doesn't make this entirely clear, [1] says that "by
animation" and "from-by animation" may only be used "with attributes
that support addition (e.g.  most numeric attributes)" and [2] says that
<paint>s are "only additive if each value can be converted to an RGB
color". As a result, the animation above should have no effect.

By extrapolation, animating from 'none' by 'none' should also have no
effect:

  <rect width="100" height="100" y="100" fill="blue">
    <animate attributeName="fill" dur="3s" from="none" by="none"/>
  </rect>

However, in Servo's interpolation of <paint>s we special case the
interpolation and addition of 'none' such that if both values are 'none'
it is allowed.

We should disallow this in order to produce the expected behavior and in
order to match Gecko's behavior.

[1] https://www.w3.org/TR/smil-animation/#AnimFuncValues
[2] https://www.w3.org/TR/SVG11/animate.html#AnimationAttributesAndProperties
2017-08-16 15:01:44 +09:00
Hiroyuki Ikezoe
41cbd2fa62 Implement distance for shadow list. 2017-08-16 14:25:30 +09:00
bors-servo
dc654c9912 Auto merge of #18099 - KuoE0:make-empty-rule-can-be-inserted-into-rule-tree, r=emilio
Make emtpy rule can be inserted into rule tree

<!-- Please describe your changes on the following line: -->
We really want to ensure empty rule nodes appear in the rule tree for devtools, this condition ensures that if we find an empty rule node, we insert it at the normal level.

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `__` with appropriate data: -->
- [x] `./mach build -d` does not report any errors
- [X] `./mach test-tidy` does not report any errors
- [X] These changes fix [Bug 1384802](https://bugzilla.mozilla.org/show_bug.cgi?id=1384802)

<!-- Either: -->
- [ ] There are tests for these changes OR
- [X] These changes do not require tests because of the test cases are in Gecko.

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->

<!-- 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/18099)
<!-- Reviewable:end -->
2017-08-15 23:11:04 -05:00
J. Ryan Stinnett
711adba0ce Update Stylo bindings 2017-08-15 22:09:08 -05:00
KuoE0
a6ceafe3da Make emtpy rule can be inserted into rule tree 2017-08-16 11:08:49 +08:00
J. Ryan Stinnett
d4b364200a Fix up Gecko_CalcStyleDifference for Linux 32-bit ABI
Bindgen bitfield enums don't work as return values with the Linux 32-bit ABI at
the moment because they wrap the value in a struct.

This causes the Rust side to believe the callee expects space for the struct
return value, while C++ believes it's just an integer value.

MozReview-Commit-ID: FRBqlZuMiAR
2017-08-15 21:10:37 -05:00
bors-servo
eba896157e Auto merge of #18095 - emilio:unused, r=bholley
stylo: Remove some unused FFI functions.

Bug: 1390650
Reviewed-by: bholley
MozReview-Commit-ID: K9fXGRmgkr4

<!-- 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/18095)
<!-- Reviewable:end -->
2017-08-15 19:29:45 -05:00
Emilio Cobos Álvarez
6b6ab991fd
stylo: Remove some unused FFI functions.
Bug: 1390650
Reviewed-by: bholley
MozReview-Commit-ID: K9fXGRmgkr4
2017-08-15 23:57:59 +02:00
Bobby Holley
8a3761972d Bonus fix: Be more robust about clearing descendants bits under display:none subtrees.
MozReview-Commit-ID: 9KQVOpdEjwF
2017-08-15 14:25:50 -07:00
Bobby Holley
05a1b682bb Avoid leaving stale ANCESTOR_WAS_RECONSTRUCTED bits in the tree.
MozReview-Commit-ID: 76q5XxK2o2a
2017-08-15 14:25:50 -07:00
Simon Sapin
b5a4b8d6a0 Upgrade to rustc 1.21.0-nightly (13d94d5fa 2017-08-10) 2017-08-15 14:10:44 +02:00
bors-servo
41fb10c589 Auto merge of #18085 - dadaa:make-content-animatable, r=hiro
Make content animatable

<!-- Please describe your changes on the following line: -->

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `__` with appropriate data: -->
- [X] `./mach build -d` does not report any errors
- [X] `./mach test-tidy` does not report any errors

<!-- Either: -->
- [X] There are tests for these changes. The test codes are patch part 3 and 4 in https://bugzilla.mozilla.org/show_bug.cgi?id=1382136

<!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.-->

<!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. -->

<!-- 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/18085)
<!-- Reviewable:end -->
2017-08-15 05:50:15 -05:00
bors-servo
526d573e07 Auto merge of #18084 - hiikezoe:currentcolor-for-box-shadow-animation, r=xidorn
Currentcolor for box shadow animation

<!-- Please describe your changes on the following line: -->
https://bugzilla.mozilla.org/show_bug.cgi?id=1388220
---
- [X] `./mach build -d` does not report any errors
- [X] `./mach test-tidy` does not report any errors

<!-- 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/18084)
<!-- Reviewable:end -->
2017-08-15 04:37:44 -05:00
bors-servo
87c872a7f7 Auto merge of #18081 - hiikezoe:interpolation-with-auto, r=birtles,boris,mantaroh
Fix interpolation between auto and other values

<!-- Please describe your changes on the following line: -->
https://bugzilla.mozilla.org/show_bug.cgi?id=1387939

---
- [X] `./mach build -d` does not report any errors
- [X] `./mach test-tidy` does not report any errors

<!-- 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/18081)
<!-- Reviewable:end -->
2017-08-15 03:28:21 -05:00
Daisuke Akatsuka
87c932dff6 Make content animatable 2017-08-15 15:25:06 +09:00
Daisuke Akatsuka
c05baa2327 Implement clone_content method 2017-08-15 15:25:05 +09:00
Hiroyuki Ikezoe
95994bd710 Convert gecko's currentcolor to servo one. 2017-08-15 15:19:47 +09:00
Hiroyuki Ikezoe
4665d6dd15 Reuse to_simple_shadow() for box-shadow as well. 2017-08-15 15:19:31 +09:00
Emilio Cobos Álvarez
3e2d87d8db
style: Simplify the ruby text adjustment.
StyleBuilder keeps a reference to the parent style, so no need to get it as an
argument.
2017-08-15 07:49:54 +02:00
bors-servo
e0b834033d Auto merge of #18079 - hiikezoe:moz-image-region, r=boris
Don't convert zero component value to 'auto' in clone__moz_image_region.

Currently Gecko treats 'auto' component value as zero for animation.

<!-- Please describe your changes on the following line: -->

https://bugzilla.mozilla.org/show_bug.cgi?id=1387951

---
- [X] `./mach build -d` does not report any errors
- [X] `./mach test-tidy` does not report any errors

<!-- 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/18079)
<!-- Reviewable:end -->
2017-08-14 23:31:19 -05:00
Hiroyuki Ikezoe
08ebc524cf Round halfway values toward positive infinity for integer type of animation.
From the spec[1];

 `with values halfway between a pair of integers rounded towards positive infinity.`

[1] https://drafts.csswg.org/css-transitions/#animtype-integer
2017-08-15 13:05:15 +09:00
Hiroyuki Ikezoe
bff67d8272 Don't fallback to discrete animation within add_weighted() for Either<>.
For CSS Transitions we want this case to return Err() so we know that the two
values are not interpolable.

For CSS Animations/Web Animations we implement discrete animation as the
fallback behavior when Err() is returned.
2017-08-15 13:04:07 +09:00
Hiroyuki Ikezoe
fa3b62746d ComputedPositiveInteger is an integer greater than or equal to 1. 2017-08-15 13:03:54 +09:00
Hiroyuki Ikezoe
19d498f01e Make assertion for colum-count more accurate.
column-count should be greater than or equal to 1. Also it should be less than
or equal to nsStyleColumn_kMaxColumnCount since we limit it in
set_column_count().
2017-08-15 13:03:33 +09:00
Hiroyuki Ikezoe
f6b8fb177c Check interpolatable to tell whether transition is created or not. 2017-08-15 13:03:18 +09:00
Hiroyuki Ikezoe
6d49d8151c Don't convert zero component value to 'auto' in clone__moz_image_region.
Currently Gecko treats 'auto' component value as zero for animation.
2017-08-15 12:34:45 +09:00
bors-servo
0aba7442a6 Auto merge of #18078 - hiikezoe:vertical-align-animation, r=boris
Make vertical-align animatable between percentage and percentage or l…

…ength.

<!-- Please describe your changes on the following line: -->
https://bugzilla.mozilla.org/show_bug.cgi?id=1387949

---
- [X] `./mach build -d` does not report any errors
- [X] `./mach test-tidy` does not report any errors

<!-- 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/18078)
<!-- Reviewable:end -->
2017-08-14 22:07:31 -05:00
bors-servo
4771e6ea1e Auto merge of #18076 - upsuper:fullscreen-pref, r=TYLin
Check pref when parsing :fullscreen pseudo-class

This is the Servo side change of [bug 1374902](https://bugzilla.mozilla.org/show_bug.cgi?id=1374902).

<!-- 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/18076)
<!-- Reviewable:end -->
2017-08-14 20:12:31 -05:00