Commit graph

28547 commits

Author SHA1 Message Date
bors-servo
97023f18f3 Auto merge of #17537 - jyc:default-namespace-serialization, r=emilio
Some fixes to selector serialization re: namespaces and universal selector

- Fix eliding default namespace when serializing
- Fix shortest serialization property when namespace prefix is `*|` and there is no default namespace
- Omit universal selector when serializing to match `cssom/serialize-namespaced-type-selectors` (again so we get the shortest serialization)

<!-- 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
- [X] These changes is part of a series to fix #17182

<!-- Either: -->

I'd like to land #17501 first, because it allows some tests for this to work.

- [ ] There are tests for these changes OR
- [ ] These changes do not require tests because _____

<!-- 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/17537)
<!-- Reviewable:end -->
2017-07-17 16:26:37 -07:00
bors-servo
e122ea65fd Auto merge of #17762 - emilio:visited-nested, r=jryans
style: Cascade the visited style with the normal rules if we didn't find a relevant link.

<!-- 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/17762)
<!-- Reviewable:end -->
2017-07-17 15:21:22 -07:00
Emilio Cobos Álvarez
1d8e069389
style: Cascade the visited style with the normal rules if we didn't find a relevant link.
MozReview-Commit-ID: HbfZs0jnusn
2017-07-17 23:30:37 +02:00
bors-servo
3459748134 Auto merge of #17758 - emilio:extended-slots, r=heycam
Bug 1377993: Make node slots less memory hungry in common cases.

<!-- 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/17758)
<!-- Reviewable:end -->
2017-07-17 14:25:51 -07:00
Emilio Cobos Álvarez
f5bddd1465
style: Update bindings. 2017-07-17 22:51:18 +02:00
Emilio Cobos Álvarez
c606ec13e2
Bug 1377993: Make node slots less memory hungry in common cases. 2017-07-17 22:48:11 +02:00
bors-servo
7f1278a329 Auto merge of #17606 - asajeffrey:canvas-delay-deleting-image-keys, r=jdm
Don't delete webrender image keys immediately.

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

We currently delete webrender image id's immediately on resizing a canvas, which can cause panics. This PR delays deleting the image id until an epoch has passed.

---
<!-- 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 #17534
- [X] These changes do not require tests because the intermittent failure is already triggered by the css-paint-api tests.

<!-- 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/17606)
<!-- Reviewable:end -->
2017-07-17 13:25:37 -07:00
Alan Jeffrey
3002c45184 Don't delete webrender image keys immediately. 2017-07-17 15:24:42 -05:00
bors-servo
602ef8bce1 Auto merge of #17757 - bholley:downgrade_assertion, r=bholley
Stop aborting release builds if we've missed invalidations before calling Servo_ResolveStyle

A lot of people are hitting this in [1]. I think having style (just potentially out-of-date) is less likely to cause weird crashes than failing to style the element entirely, so it's not worth inflicting this level of crashiness on the dogfood population.

[1] https://bugzilla.mozilla.org/show_bug.cgi?id=1381475
2017-07-17 11:52:32 -07:00
Bobby Holley
f3a42d9977 Stop aborting release builds if we've missed invalidations before calling Servo_ResolveStyle. 2017-07-17 11:49:55 -07:00
Jonathan Chan
1301bcdf10 Omit serializing the universal selector when possible.
If omitting the universal selector in the serialization is possible, we
should do it so we obtain a shorter serialization (to match the behavior
asserted in cssom/serialize-namespaced-type-selectors.html).

For example, if someone writes *|*::before and there is no default
namespace, we should serialize to ::before; however, if there is a
default namespace, we should serialize to *|*::before.
(This is the test case "Universal selector in any namespace followed by
pseudo element).

This matches the behavior implemented by WebKit; that one case in
particular isn't implemented by Gecko, but other cases where the
universal selector should be elided are implemented by Gecko but were not
previously by Servo.
2017-07-17 10:52:17 -07:00
Jonathan Chan
989b707623 Elide the explicit any namespace prefix when lacking default namespace.
Once again it seems we don't need to preserve the original prefix name,
and this lets to_css serialize to the shortest form when there is no
default namespace and the *| prefix is used.

Selectors § 6.1.1 says:

    Element type selectors that have no namespace component (no namespace
    separator) represent elements without regard to the element's namespace
    (equivalent to "*|") unless a default namespace has been declared for
    namespaced selectors (e.g. in CSS, in the style sheet). If a default
    namespace has been declared, such selectors will represent only elements
    in the default namespace.

Then if there is no default namespace, *| (which we write as
QNamePrefix::ExplicitAnyNamespace) is equivalent to what we write as
QNamePrefix::ImplicitAnyNamespace; the latter has a shorter
serialization, so we should use that.
2017-07-17 10:43:24 -07:00
bors-servo
66b9544d60 Auto merge of #17520 - camlorn:master, r=asajeffrey
Convert node serialization to a purely iterative algorithm.

We maintain a stack of open element nodes with their children count, popping from the top of the stack and closing when the count reaches zero.

Contrary to my comment in #16696, this is a purely iterative algorithm.  I just wasn't feeling sufficiently clever with respect to finding a relatively clean way until later.

<!-- 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
- [x] These changes fix #16696 (github issue number if applicable).

<!-- Either: -->
- [x] There are tests for these changes.

<!-- 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/17520)
<!-- Reviewable:end -->
2017-07-17 09:54:43 -07:00
Pavel Sergeev
6a2f84eca4 replace vector iteration by ascii_case_insensitive_phf_map 2017-07-17 19:30:55 +03:00
Austin Hicks
033b31979b Convert node serialization to a purely iterative algorithm.
We maintain a stack of open element nodes and non-node elements and use it to determine when to close them.
2017-07-17 12:24:30 -04:00
bors-servo
2bb4f65100 Auto merge of #16508 - brainlessdeveloper:fetch-set-origin, r=asajeffrey
Properly set origin of fetch requests

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

These changes aim to fix #15247

---
<!-- 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 #15247 (github issue number if applicable).

<!-- Either: -->
- [ ] There are tests for these changes
- [x] These changes do not require tests because cors is already tested with different origins

These changes require changes in tests, but I need help with that (see comments below).

<!-- 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/16508)
<!-- Reviewable:end -->
2017-07-17 08:29:23 -07:00
bors-servo
38f4ae80c4 Auto merge of #17739 - jdm:no-vendor-prefixed-errors, r=emilio
Suppress CSS parser errors for vendor-prefixed properties.

This matches the behaviour of Gecko's CSS parser.

- [X] `./mach build -d` does not report any errors
- [X] `./mach test-tidy` does not report any errors
- [X] These changes fix #17736
- [X] There are tests for these changes

<!-- 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/17739)
<!-- Reviewable:end -->
2017-07-17 07:10:11 -07:00
Josh Matthews
94d631c1f4 Suppress CSS parser errors for vendor-prefixed properties. 2017-07-17 10:00:31 -04:00
bors-servo
9d30e5b4e0 Auto merge of #17727 - servo:rustup, r=nox
Upgrade to rustc 1.20.0-nightly (ab91c70cc 2017-07-14), use non-"alt" std

<s>Possibly</s> fixes https://github.com/servo/servo/pull/17604

<!-- 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/17727)
<!-- Reviewable:end -->
2017-07-17 05:06:01 -07:00
bors-servo
2d37700cf8 Auto merge of #17731 - emilio:percentage-calc, r=nox
style: Respect calc for percentages.

<!-- 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/17731)
<!-- Reviewable:end -->
2017-07-17 01:29:11 -07:00
bors-servo
495faf3201 Auto merge of #17684 - paulrouget:fix_allow_navigation, r=paulrouget
allow_navigation: use channel to send response

From the embedder perspective, this makes things easier in term of synchronicity.

---
<!-- 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
- [ ] These changes fix #__ (github issue number if applicable).

<!-- Either: -->
- [ ] There are tests for these changes OR
- [ ] These changes do not require tests because _____

<!-- 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/17684)
<!-- Reviewable:end -->
2017-07-16 23:58:48 -07:00
Paul Rouget
cd3172c913 allow_navigation: use channel to send response 2017-07-17 08:55:59 +02:00
bors-servo
d8ba8cad58 Auto merge of #17751 - emilio:embarrasing-typo, r=heycam
style: Fix a typo that makes us resolve styles for the whole spin to the root.

For undisplayed elements, at least.

<!-- 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/17751)
<!-- Reviewable:end -->
2017-07-16 17:53:41 -07:00
Fausto Núñez Alberro
6032940fb8 Change RequestInit origin type to ImmutableOrigin 2017-07-16 21:44:33 +02:00
Emilio Cobos Álvarez
1316f3640b
style: Fix a typo that makes us resolve styles for the whole spin to the root.
For undisplayed elements, at least.
2017-07-16 16:32:50 +02:00
bors-servo
17f99e2a7b Auto merge of #17741 - bholley:trim_traversal_fat, r=emilio
Trim some fat from the traversal

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

<!-- 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/17741)
<!-- Reviewable:end -->
2017-07-15 15:07:51 -07:00
Bobby Holley
b7de96e702 Pass a callback to recalc_style_at to avoid traversing children twice.
MozReview-Commit-ID: DIHXaVNzbFM
2017-07-15 14:45:51 -07:00
Bobby Holley
e534ec9e47 Move clearing of dirty descendants bit closer to the last place it's needed.
In the next patch, we'll move logic to identify the children for traversal into
preprocess_children (which will be renamed), and the set_dirty_descendants logic
will move along with it. So left as-is, the code here will clobber the flags.

MozReview-Commit-ID: 7ZskKWD4QC3
2017-07-15 14:27:18 -07:00
Bobby Holley
2a58c0768b Avoid memmoving the large smallvec in Parallel.rs.
MozReview-Commit-ID: 7nzjMwOmszZ
2017-07-15 14:27:18 -07:00
bors-servo
98836ff30d Auto merge of #17745 - SergeevPavel:cleanup, r=emilio
rustify if statements style

<!-- Please describe your changes on the following line: -->
Rewrite if statement in more rusty style.

---
<!-- 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 #17699 (github issue number if applicable).

<!-- Either: -->
- [ ] There are tests for these changes OR
- [ ] These changes do not require tests because _____

<!-- 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/17745)
<!-- Reviewable:end -->
2017-07-15 14:07:19 -07:00
bors-servo
9d78008acb Auto merge of #17747 - emilio:more-stuff-going-away, r=wafflespeanut
style: Remove unused ElementStyles::styles_and_restyle_mut.

Never enough code going away.

<!-- 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/17747)
<!-- Reviewable:end -->
2017-07-15 11:11:13 -07:00
Emilio Cobos Álvarez
65d2e8ff99
style: Remove unused ElementStyles::styles_and_restyle_mut. 2017-07-15 19:15:27 +02:00
bors-servo
c69cc88a6a Auto merge of #17746 - emilio:always-be-removing-the-ugly, r=wafflespeanut
style: Remove some no longer needed type arguments.

<!-- 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/17746)
<!-- Reviewable:end -->
2017-07-15 10:04:25 -07:00
Emilio Cobos Álvarez
3faba0cfff
style: Remove some no longer needed type arguments. 2017-07-15 19:02:19 +02:00
Pavel Sergeev
729b8120e0 rustify if statements style 2017-07-15 19:57:47 +03:00
bors-servo
3497bbbf1d Auto merge of #17744 - emilio:ensure-data, r=nox
script: Move the layout_wrapper outside of script.

This allows us to have ensure_data() and clear_data() functions on the TElement
trait, instead of hacking around it adding methods in random traits.

This also allows us to do some further cleanup, which I'd rather do in a
followup.

<!-- 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/17744)
<!-- Reviewable:end -->
2017-07-15 07:44:08 -07:00
Emilio Cobos Álvarez
bf9369b29d
script: Move the layout_wrapper outside of script.
This allows us to have ensure_data() and clear_data() functions on the TElement
trait, instead of hacking around it adding methods in random traits.

This also allows us to do some further cleanup, which I'd rather do in a
followup.
2017-07-15 16:41:12 +02:00
bors-servo
5c5c5147ea Auto merge of #17743 - emilio:assert-properly, r=heycam
stylo: Assert our stuff properly.
2017-07-15 05:49:54 -07:00
Emilio Cobos Álvarez
3000326885
stylo: Assert our stuff properly.
MozReview-Commit-ID: KBrJtWcoKp8
2017-07-15 14:48:59 +02:00
bors-servo
f9642b36bd Auto merge of #17740 - hiikezoe:post-traversal-fix, r=emilio
Post traversal fix triggered by animation-only restyle for event handling

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

---
<!-- 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-07-14 21:07:38 -07:00
Hiroyuki Ikezoe
0053efb154 Update bindings. 2017-07-15 11:54:43 +09:00
Hiroyuki Ikezoe
dddea0cd94 Recreate style context only if the element was restyled during the traversal. 2017-07-15 11:54:43 +09:00
Hiroyuki Ikezoe
e700a66e9f Preserve restyle hints after ForThrottledAnimationFlush restyle.
Those remaining restyle hints are needed for normal traversal later.
2017-07-15 11:54:43 +09:00
Hiroyuki Ikezoe
b688353c82 Return whether the root element has animation-only dirty bit from Servo_TraverseSubtree for flushing throttled animations. 2017-07-15 11:54:43 +09:00
Hiroyuki Ikezoe
0523e7efb6 Rename TraversalRestyleBehavior::ForAnimationOnly to TraversalRestyleBehavior::ForThrottledAnimationFlush.
ForAnimationOnly is somewhat misleading, it means actually we process
*only* animation-only restyle without normal restyle. The purpose of
ForAnimationOnly is for updating throttled animations to get correct position
of the animations when we need to handle events. Currently we do also update
unthrottled animations though.
2017-07-15 11:54:43 +09:00
bors-servo
3fb309c755 Auto merge of #17696 - jyc:image-orientation-redux, r=Manishearth
Sync Servo / Gecko image-orientation rounding; pass as enum.

Make Servo's rounding of image-orientation values agree with Gecko's,
and pass orientations directly as an enum instead of as angles.

Depends on a Gecko change to be subsequently landed in m-c.

Were reviewed here: https://reviewboard.mozilla.org/r/155336/

<!-- 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
- [ ] These changes fix [Bugzilla Bug 1355380](https://bugzilla.mozilla.org/show_bug.cgi?id=1355380) (github issue number if applicable).

<!-- Either: -->
- [X] There are tests for these changes OR
- [ ] These changes do not require tests because they

<!-- 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/17696)
<!-- Reviewable:end -->
2017-07-14 18:54:45 -07:00
bors-servo
fe98a8001b Auto merge of #17738 - jdm:no-css-text, r=bholley
Don't retrieve the CSS source when a parse error is reported.

Per https://bugzilla.mozilla.org/show_bug.cgi?id=1381045 retrieving the CSS source is an unnecessary performance hit for Stylo.

- [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 tested by Gecko.

<!-- 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/17738)
<!-- Reviewable:end -->
2017-07-14 17:53:12 -07:00
Josh Matthews
5db9f06ecd Don't retrieve the CSS source when a parse error is reported (bug 1381045). 2017-07-14 20:26:47 -04:00
bors-servo
124a23b207 Auto merge of #17737 - canaltinova:same-grid-but-better, r=Manishearth,wafflespeanut
Convert TrackList's `values` field to store only TrackSize.

It was storing both TrackSize and TrackRepeat before and TrackRepeat have to be
converted into sequence of TrackSize during serialization. Instead of doing this
in serialization process(which is hard and hacky), we converted to do this in
parsing process. We were doing this conversion in the ComputedValue conversion.
So we only had to move this process to parsing.

---
<!-- 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

<!-- 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/17737)
<!-- Reviewable:end -->
2017-07-14 16:50:04 -07:00
Nazım Can Altınova
ade76f10b7 Convert TrackList's 'values' field to store only TrackSize.
It was storing both TrackSize and TrackRepeat before and TrackRepeat have to be
converted into sequence of TrackSize during serialization. Instead of doing this
in serialization process(which is hard and hacky), we converted to do this in
parsing process. We were doing this conversion in the ComputedValue conversion.
So we only had to move this process to parsing.
2017-07-14 15:55:40 -07:00