Commit graph

28380 commits

Author SHA1 Message Date
Cameron McCormack
df2c8b2902 selectors: Add a non-counting Bloom filter type. 2017-08-09 19:27:48 +08:00
Cameron McCormack
e294372a32 selectors: Genericize BloomFilter so we can easily define a non-counting version. 2017-08-09 19:27:47 +08:00
bors-servo
77cb5371b3 Auto merge of #18019 - emilio:devirt-nsiatom, r=froydnj
stylo: Devirtualize nsIAtom refcounting.

Bug: 1362338
Reviewed-by: froydnj
MozReview-Commit-ID: 3q5rz3L8quQ
2017-08-09 06:08:14 -05:00
Emilio Cobos Álvarez
3c1645e2d8
style: Update bindings. 2017-08-09 13:06:43 +02:00
Emilio Cobos Álvarez
4e3ea45325
stylo: Devirtualize nsIAtom refcounting.
Bug: 1362338
Reviewed-by: froydnj
MozReview-Commit-ID: 3q5rz3L8quQ
2017-08-09 13:06:11 +02:00
bors-servo
f6aa17add9 Auto merge of #18018 - hiikezoe:list-style-type-animatable, r=emilio
Make list-style-type animatable

<!-- Please describe your changes on the following line: -->
https://bugzilla.mozilla.org/show_bug.cgi?id=1388652
---
- [X] `./mach build -d` does not report any errors
- [X] `./mach test-tidy` does not report any errors
2017-08-09 03:45:56 -05:00
Hiroyuki Ikezoe
d3c86e7b6a Make list-style-type animatable. 2017-08-09 17:35:10 +09:00
Hiroyuki Ikezoe
17eba0d4d6 Drop AnimatedProperty for stylo.
set_list_style_type() for gecko needs an additional argument 'Device' [1], and
making list-style-type animtable makes AnimatedProperty::update() call the
set_list_style_type(). To avoid introducing the Device argument to the setter in
servo, this patch makes simply PropertyAnimation conditional build.
(Whereas in stylo, we don't use the setter for animation, we use clone_xx()
instead.)

[1] https://hg.mozilla.org/mozilla-central/file/1d042bcb2632/servo/components/style/properties/properties.mako.rs#l2667
2017-08-09 17:34:55 +09:00
Cameron McCormack
7f47ae0730 style: Slight refactoring of TraversalStatistics::finish. 2017-08-09 16:24:50 +08:00
Cameron McCormack
68268226ea style: Tweak Stylist API for getting animations to avoid exposing the hash table. 2017-08-09 16:24:49 +08:00
Cameron McCormack
6bdb0abebf style: Make CascadeDataIter iterate from highest to lowest level. 2017-08-09 16:24:47 +08:00
bors-servo
89971910cf Auto merge of #18016 - BorisChiou:stylo/transform/rotate, r=heycam
stylo: Don't apply the rotation if it cannot be normalized.

According to the spec, the computed value of transform is as specified, but
with relative lengths converted into absolute lengths, so in Gecko, we do
nothing while computing the value of rotate3d(), and do normalization in
ProcessRotate3D(). If the direction cannot be normalized, we treat it as
an identity matrix.

However, in Servo, we do normalization in to_computed_value(), and looks
like we are trying to normalize any kind of direction vectors, so according
to the spec, let's move the normalization into Fragment::transform_matrix(),
and return an identity matrix if we cannot normalize its direction vector.

---
- [X] `./mach build -d` does not report any errors
- [X] `./mach test-tidy` does not report any errors
- [X] These changes fix [Bug 1388216](https://bugzilla.mozilla.org/show_bug.cgi?id=1388216).
- [X] These changes do not require tests because the added test is on Gecko side.

<!-- 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/18016)
<!-- Reviewable:end -->
2017-08-08 22:33:03 -05:00
bors-servo
31582a4874 Auto merge of #18002 - glennw:update-wr-linux-subpx, r=emilio
Update WR (text optimizations, Linux subpixel positioning / rasterization).

<!-- 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/18002)
<!-- Reviewable:end -->
2017-08-08 16:05:54 -05:00
Glenn Watson
f6a9f15fed Update WR.
* CPU text run optimizations.
* Linux subpixel positioning / rasterization.
* Update debug flags API.
* Update to resource transactions API.
2017-08-09 07:05:05 +10:00
bors-servo
ed3c2b9557 Auto merge of #18004 - mbrubeck:layout-cleanup, r=pcwalton
Clean up and simplify layout traversal code

Various refactorings of the code for traversing flow trees, including:

* Add a generic inorder traversal method
* Remove unused `traverse_postorder_absolute_flows` method
* Combine `compute_absolute_position` and `build_display_list` into a single traversal
* Move all generic traversal code into the `layout::traversal` module

And some changes to add documentation and more-accurate names:

* Fix spelling of `bottom_up_flow`
* Rename `compute_absolute_position` to `compute_stacking_relative_position`
* Change the mis-named `traverse_flow_tree_preorder` to `reflow`

---
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes do not require tests because they are refactoring only

<!-- 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/18004)
<!-- Reviewable:end -->
2017-08-08 14:04:23 -05:00
Matt Brubeck
ca300d6424 Allow CalculateStackingRelativePositions to short-circuit 2017-08-08 11:20:16 -07:00
bors-servo
955b625060 Auto merge of #18003 - DarkDrek:move_percentage, r=canaltinova
Move percentage to mod.rs

<!-- Please describe your changes on the following line: -->
The tests in the issue worked for me locally.

---
<!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `__` with appropriate data: -->
- [ ] `./mach build -d` does not report any errors
- [ ] `./mach test-tidy` does not report any errors
- [X] These changes fix #18001 (github issue number if applicable).

<!-- Either: -->
- [X] These changes do not require tests because they are just refactoring

<!-- 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/18003)
<!-- Reviewable:end -->
2017-08-08 13:01:00 -05:00
Matt Brubeck
832b811198 Change the mis-named 'traverse_flow_tree_preorder' to 'reflow' 2017-08-08 10:53:20 -07:00
Matt Brubeck
ee697a926d Fix spelling of bottom_up_flow 2017-08-08 10:53:20 -07:00
Matt Brubeck
d1a37f1ea3 Code organization: Move all generic traversal code to layout::traversal 2017-08-08 10:53:19 -07:00
Matt Brubeck
a08bc13df9 Rename compute_absolute_position to compute_stacking_relative_position 2017-08-08 10:53:17 -07:00
bors-servo
3c644ea616 Auto merge of #18014 - emilio:bitfields, r=SimonSapin
stylo: We've had bitfield accessors for a while now.

This will allow my work in bug 1362338 to not break stylo.

<!-- 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/18014)
<!-- Reviewable:end -->
2017-08-08 11:45:37 -05:00
Keith Yeung
0ff47c4475 Update HTTP fetch 2017-08-08 09:27:19 -07:00
Keith Yeung
b50bcdc8fc Rename basic fetch to scheme fetch 2017-08-08 09:27:17 -07:00
Keith Yeung
ed9c16575c Update main fetch 2017-08-08 09:22:29 -07:00
Emilio Cobos Álvarez
efed0ac742
stylo: We've had bitfield accessors for a while now. 2017-08-08 17:34:12 +02:00
bors-servo
dec4ba8ea6 Auto merge of #18011 - emilio:less-dumb-hash, r=nox
style: Avoid hashing hashes.

These are the last instances I can find of us hashing the atoms hash.

<!-- 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/18011)
<!-- Reviewable:end -->
2017-08-08 10:06:32 -05:00
Emilio Cobos Álvarez
de58c088b1
style: Avoid hashing hashes.
These are the last instances I can find of us hashing the atoms hash.
2017-08-08 17:06:11 +02:00
Connor Brewster
d8510baa29 Unwrap function before calling IsConstructor
IsConstructor returns true for all wrappers that are callable. Wrapped
arrow functions are callable and thus IsConstructor will return true
if given one; however, if we unwrap the arrow function, IsConstructor
will return false. The latter is the correct behavior here.
2017-08-08 08:46:35 -06:00
DarkDrek
a5b585a5f1 Move Percentage from length.rs to mod.rs 2017-08-08 16:44:31 +02:00
bors-servo
3ba4f784f8 Auto merge of #17973 - ferjm:ordered-map, r=heycam
stylo: ensure consistent order for custom properties computed values

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

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

<!-- 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/17973)
<!-- Reviewable:end -->
2017-08-08 08:29:14 -05:00
bors-servo
32f835260c Auto merge of #17984 - Manishearth:rm-testing, r=SimonSapin
Remove style/testing feature

We added this because a year ago we had no reliable Gecko CI. This meant that Gecko-only properties needed to be tested *somehow*, and we solved that by making it so that for unit tests we compile all properties, not just the servo ones.

This was useful back then, but I don't think we need this anymore. We have reliable Gecko CI, and all the gecko-only stuff we tested is adequately handled by the properties-database parsing mochitests. It's a bit of annoying cruft that just complicates things; we probably should remove it.

r? @emilio or @SimonSapin

<!-- 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/17984)
<!-- Reviewable:end -->
2017-08-08 07:35:29 -05:00
bors-servo
b6d46789f8 Auto merge of #17999 - emilio:pseudo-enumerated-array, r=heycam
style: Use an enumerated array for per-pseudo maps.

<!-- 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/17999)
<!-- Reviewable:end -->
2017-08-08 06:32:12 -05:00
Boris Chiou
9603266f9a Don't apply the rotation if it cannot be normalized.
According to the spec, the computed value of transform is as specified, but
with relative lengths converted into absolute lengths, so in Gecko, we do
nothing while computing the value of rotate3d(), and do normalization in
ProcessRotate3D(). If the direction cannot be normalized, we treat it as
an identity matrix.

However, in Servo, we do normalization in to_computed_value(), and looks
like we are trying to normalize any kind of direction vectors, so according
to the spec, let's move the normalization into Fragment::transform_matrix(),
and return an identity matrix if we cannot normalize its direction vector.
2017-08-08 18:47:43 +08:00
Emilio Cobos Álvarez
faa8646e0f
style: Use an enumerated array for per-pseudo maps.
This avoids random HashMaps.

MozReview-Commit-ID: LQeZrLsoOnl
Signed-off-by: Emilio Cobos Álvarez <emilio@crisal.io>
2017-08-08 12:40:31 +02:00
bors-servo
5ecedb562c Auto merge of #18009 - emilio:video-controls, r=heycam
stylo: Fix skip_root_and_item_display_fixup.

The check isn't doing what the comment is saying.

XBL subtrees for video controls all have the
NODE_IS_IN_NATIVE_ANONYMOUS_SUBTREE flag, but not all of them are NAC
themselves, so we may incorrectly miss blockification.

Bug: 1366163
Reviewed-by: heycam
MozReview-Commit-ID: Oq3W258Lz2

<!-- 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/18009)
<!-- Reviewable:end -->
2017-08-08 05:28:35 -05:00
Fernando Jiménez Moreno
ff1e701fa6 style: Implement OrderedMapIterator 2017-08-08 12:26:45 +02:00
Emilio Cobos Álvarez
a7e45bba63
stylo: Fix skip_root_and_item_display_fixup.
The check isn't doing what the comment is saying.

XBL subtrees for video controls all have the
NODE_IS_IN_NATIVE_ANONYMOUS_SUBTREE flag, but not all of them are NAC
themselves, so we may incorrectly miss blockification.

Bug: 1366163
Reviewed-by: heycam
MozReview-Commit-ID: Oq3W258Lz2
Signed-off-by: Emilio Cobos Álvarez <emilio@crisal.io>
2017-08-08 11:57:47 +02:00
Emilio Cobos Álvarez
fd1f14a41e style: Use OrderedMap for specified values too. 2017-08-08 11:55:33 +02:00
Emilio Cobos Álvarez
6d61d62bf4 style: Make the OrderedMap also generic on the value. 2017-08-08 11:55:32 +02:00
Emilio Cobos Álvarez
d48fd2964d style: Make ComputedValuesMap a bit more generic. 2017-08-08 11:55:32 +02:00
bors-servo
69f02f4f7f Auto merge of #17992 - emilio:rework-precomputed-pseudo, r=heycam
style: Rework how precomputed pseudo stuff works, to avoid malloc/free churn.

This showed up in a few profiles, and was an easy improvement.

<!-- 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/17992)
<!-- Reviewable:end -->
2017-08-08 04:25:24 -05:00
Emilio Cobos Álvarez
121e2d5837
style: Move precomputed pseudo handling to its own match arm. 2017-08-08 10:30:44 +02:00
Emilio Cobos Álvarez
64a96ce21c
style: Rework how precomputed pseudo stuff works, to avoid malloc/free churn.
This showed up in a few profiles, and was an easy improvement.

MozReview-Commit-ID: HVqATaSB2Ak
Signed-off-by: Emilio Cobos Álvarez <emilio@crisal.io>
2017-08-08 10:28:02 +02:00
bors-servo
4fdc571e9f Auto merge of #18008 - emilio:double-important, r=upsuper
stylo: Avoid reporting rules that contain both normal and important declarations twice.

Bug: 1387906

<!-- 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/18008)
<!-- Reviewable:end -->
2017-08-08 03:21:54 -05:00
Emilio Cobos Álvarez
cd58dc6aa9
stylo: Avoid reporting rules that contain both normal and important declarations twice.
Bug: 1387906
2017-08-08 10:00:12 +02:00
bors-servo
48b7e6d27c Auto merge of #18007 - BorisChiou:stylo/animation/interpolation/font_weight, r=xidorn
stylo: Fix the computation of the interpolation of FontWeight.

Interpolated result of FontWeight is wrong because clamping code is incorrect.

---
- [X] `./mach build -d` does not report any errors
- [X] `./mach test-tidy` does not report any errors
- [X] These changes fix [Bug 1387948](https://bugzilla.mozilla.org/show_bug.cgi?id=1387948).
- [X] These changes do not require tests because Gecko has tests
2017-08-08 01:32:06 -05:00
Boris Chiou
f91bcfd92e Fix the computation of the interpolation of FontWeight. 2017-08-08 14:10:19 +08:00
bors-servo
689dadc751 Auto merge of #18005 - hiikezoe:dont-unset-animation-only-dirty-bit, r=birtles
Don't clear animation only dirty bit during style recalc

Unless the element is in a display:none subtree.

After bug 1356141, the setup of animation-only dirty bit should have matched
to normal dirty bit's one (Though they don't match in post traversal due to
throttled animation flush). An unset_animation_only_dirty_descendants call
removed in this patch cleared dirty bits which are needed for post traversal if
there is a second animation-only traversal and if there is no need to restyle
for the second animation-only traversal.

The reftest in this patch fails without either this fix or the fix for bug
1367975.

See [Gecko bug 1384435 comment 12](https://bugzilla.mozilla.org/show_bug.cgi?id=1384435#c12)
for more detail what's going on at that time.

<!-- Please describe your changes on the following line: -->
https://bugzilla.mozilla.org/show_bug.cgi?id=1384435
---
<!-- 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
2017-08-07 20:13:32 -05:00
Hiroyuki Ikezoe
bdf84510f8 Don't clear animation only dirty bit during style recalc (unless the element is in a display:none subtree).
After bug 1356141, the setup of animation-only dirty bit should have matched
to normal dirty bit's one (Though they don't match in post traversal due to
throttled animation flush). An unset_animation_only_dirty_descendants call
removed in this patch cleared dirty bits which are needed for post traversal if
there is a second animation-only traversal and if there is no need to restyle
for the second animation-only traversal.

The reftest in this patch fails without either this fix or the fix for bug
1367975.

See [Gecko bug 1384435 comment 12](https://bugzilla.mozilla.org/show_bug.cgi?id=1384435#c12)
for more detail what's going on at that time.
2017-08-08 10:01:47 +09:00