Commit graph

6718 commits

Author SHA1 Message Date
Emilio Cobos Álvarez
62d65c1872 style: Simplify some code in media_queries.rs 2016-12-16 14:53:17 +01:00
Ms2ger
ce0a402bc8 Remove unused style::refcell module. 2016-12-16 14:30:01 +01:00
Ravi Shankar
6d9aed9ac3 Add gecko glue for grid-{row,column}-{start,end} 2016-12-16 13:07:08 +05:30
Ravi Shankar
7976640251 Add GridLine type for grids 2016-12-16 13:03:27 +05:30
Xidorn Quan
7f06c554d9 Remove static atoms of CSS properties 2016-12-16 18:14:40 +11:00
Xidorn Quan
e73bb054c5 Update CSSOM FFI to use string and nsCSSProperty 2016-12-16 18:09:12 +11:00
bors-servo
0bc8415485 Auto merge of #14609 - upsuper:auto-regen-atoms, r=Wafflespeanut
Update atoms when build geckolib with gecko

<!-- Please describe your changes on the following line: -->
This would automatically update the generated atom-related files in-tree before calling cargo to build geckolib. With this change, `./mach build-gecko --with-gecko` should be now the easiest way to update all in-tree bindings.

This isn't really a build-time generating, because it isn't invoked from the build script, but from mach. It isn't done the other way because
1. it doesn't seem to be a common practice for build script to write anything to the src directory
2. real build-time generated atom data wouldn't need to include atoms for multiple platforms, but we still want it so that we can build geckolib independently

cc @heycam

r? @emilio

<!-- 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/14609)
<!-- Reviewable:end -->
2016-12-15 22:05:15 -08:00
Xidorn Quan
3633384f10 Update atoms when build geckolib with gecko 2016-12-16 17:02:25 +11:00
bors-servo
da42fea6b2 Auto merge of #14605 - emilio:crashtest-bug-1323717, r=SimonSapin
style: Avoid ending up with an invalid keyframe when inf or NaN are a…

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

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

r? @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/14605)
<!-- Reviewable:end -->
2016-12-15 17:45:12 -08:00
bors-servo
5357f05ff7 Auto merge of #14509 - canaltinova:position, r=Manishearth
Implement background-position-x/y

<!-- Please describe your changes on the following line: -->
This is a WIP PR. Just HorizontalPosition / VerticalPosition implementations are complete. I would like to get early feedbacks about this architecture. Here's some architectural topics to consider:

- I created `HorizontalPosition` and `VerticalPosition` structs for this and used them in `Position` as well. We have decided to split `Keyword` enum, but we need them as unified for `PositionComponent` enum. So I didn't split but I can split it if we prefer to change PositionComponent as well.
- If we prefer Keyword enum like this, we can create a SubPosition(or something like this) instead of HorizontalPosition/VerticalPosition enums since only difference is 2 lines in `parse` functions. We can create a `parse_horizontal` and `parse_vertical` instead and a lot of code duplication can be cleared.
- I couldn't find a good way to use HorizontalPosition/VerticalPosition's parse functions in `Position`'s parse function. It is a bit more complicated. I'm open to suggestions :)
- I don't know much about logical keywords so do I need to do something different? I placed some comments where logical keywords are processing.

Any advice about these?

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

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

<!-- 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/14509)
<!-- Reviewable:end -->
2016-12-15 12:15:06 -08:00
Emilio Cobos Álvarez
fa01716c52
style: Avoid ending up with an invalid keyframe when inf or NaN are at play. 2016-12-15 13:58:51 +01:00
Xidorn Quan
cbfe1832c5 Parallelize build-time bindgen 2016-12-15 18:25:08 +11:00
bors-servo
535563be31 Auto merge of #14581 - bholley:dont_traverse_xbl, r=heycam
stylo: Avoid traversing children of XBL-bound elements during initial styling

Corresponding Gecko bug: https://bugzilla.mozilla.org/show_bug.cgi?id=1294572

CC @heycam @emilio

<!-- 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/14581)
<!-- Reviewable:end -->
2016-12-14 19:41:12 -08:00
bors-servo
49133d1f49 Auto merge of #14580 - heycam:bindings-update-11, r=emilio
stylo: regenerate bindings

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

This corresponds to https://treeherder.mozilla.org/#/jobs?repo=stylo&revision=10ac81fb6185037648c6694889aa030d28a5e8a5.

There's probably no meaningful change here, but there's a lot of churn since I just changed locally to using clang-3.9.  r? @Manishearth

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

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

<!-- 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/14580)
<!-- Reviewable:end -->
2016-12-14 17:40:55 -08:00
Alan Jeffrey
9be4fd56ce Removed util. 2016-12-14 18:04:37 -06:00
Nazım Can Altınova
ed806efade Make background-position a shorthand instead of a longhand 2016-12-15 01:36:30 +03:00
Nazım Can Altınova
b302642592 Implement background-position-x/y 2016-12-15 01:36:27 +03:00
Bobby Holley
652e891d0d Bug 1294572 - Avoid traversing children of XBL-bound elements during initial styling. r=heycam
MozReview-Commit-ID: JHABvLnMYco
2016-12-14 10:26:50 -08:00
Matt Brubeck
e982d6003f Add the HTMLTableCellElement::rowspan property 2016-12-14 09:58:23 -08:00
bors-servo
9b84acc618 Auto merge of #14561 - Impally:master, r=Manishearth
font-variant-caps implemented in font.mako.rs

<!-- Please describe your changes on the following line: -->
Implemented font-variant-caps for gecko library

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

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

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

<img width="261" alt="beforechange" src="https://cloud.githubusercontent.com/assets/9249887/21127332/03487fbc-c0c0-11e6-8667-bb1e60d5c754.PNG">

After Change:

<img width="174" alt="afterchange" src="https://cloud.githubusercontent.com/assets/9249887/21127345/0cc8860e-c0c0-11e6-96cf-16b77c14c5a7.png">

Pictures are rendering of example from [font-variant-caps](https://developer.mozilla.org/en-US/docs/Web/CSS/font-variant-caps)

<!-- 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/14561)
<!-- Reviewable:end -->
2016-12-14 09:55:57 -08:00
bors-servo
65b891c23f Auto merge of #14582 - heycam:cfg, r=emilio
fix feature check for Gecko-specific assertions

r? @emilio

<!-- 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/14582)
<!-- Reviewable:end -->
2016-12-14 05:13:17 -08:00
Cameron McCormack
33ac29e830 Fix feature check for Gecko-specific assertions. 2016-12-14 13:53:09 +08:00
Cameron McCormack
45125c6da2 Regenerate bindings. 2016-12-14 10:59:27 +08:00
bors-servo
cd1d5f1cf3 Auto merge of #14359 - shinglyu:dropshadow-refactor, r=Manishearth
Reuse box-shadow code for drop-shadow filter

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

Followup for #14218. Extracted the `Shadow` struct and methods into `values::*`, and make `box-shadow` and `drop-shadow` share the new `Shadow` type. The `ToCss` trait is not reused because they behave different in the two properties.

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

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

<!-- 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/14359)
<!-- Reviewable:end -->
2016-12-13 18:50:30 -08:00
bors-servo
a6cfec972f Auto merge of #14563 - upsuper:buildtime-bindgen, r=emilio
Add asserts to make failure clearer

Gecko currently doesn't pass absolute path for `MOZ_DIST`, which leads to obscure panic when running the build script. This patch adds some assertions so that failures around this would be clearer.

r? @emilio

<!-- 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/14563)
<!-- Reviewable:end -->
2016-12-13 01:40:23 -08:00
bors-servo
fb6f88624a Auto merge of #14565 - emilio:assert, r=heycam
style: Make some removed assertions Servo-only instead.

These were removed in #14560.

r? @heycam or @bholley

<!-- 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/14565)
<!-- Reviewable:end -->
2016-12-13 00:32:28 -08:00
Emilio Cobos Álvarez
864fe8a9a7
style: Make some removed assertions Servo-only instead. 2016-12-13 08:35:57 +01:00
Shing Lyu
64ecb33e17 Reuse box-shadow code for drop-shadow filter 2016-12-13 14:47:02 +08:00
Xidorn Quan
ac5c09c929 Add asserts to make failure clearer 2016-12-13 17:22:45 +11:00
Cameron McCormack
444570db0f Regenerate bindings. 2016-12-13 13:55:22 +08:00
Cameron McCormack
d0a8958edd Bindings update for latest mozilla-central. 2016-12-13 13:55:21 +08:00
Suh Dude
b03b8c2991 font-variant-caps implemented in font.mako.rs 2016-12-12 23:05:19 -05:00
Bobby Holley
61eadbe7f1 Bug 1322945 - Improve ergonomics and share more code for style crate DOM tree logging. r=heycam
MozReview-Commit-ID: 4Fy3ujpI4n2
2016-12-12 18:50:33 -08:00
Bobby Holley
3a56954069 Bug 1322945 - Change skip_root to unstyled_children_only and use StyleNewChildren in more places. r=heycam
I noticed that our current behavior in ContentRangeInserted is incorrect. Unlike
ContentInserted (where this code lived originally), ContentRangeInserted takes a
start and end element. I'm not sure if we ever take that path for new content that
needs style, but it seemed sketchy. And generally, it seems nice to just always
style new content the same way (though we still need to style NAC by the subtree
root, since it hasn't been attached to the parent yet).

For situations where there is indeed only one unstyled child, the traversal
overhead should be neglible, since we special-case the single-element in
parallel.rs to avoid calling into rayon.

Being more explicit about what we want here also makes us more robust against
the other handful of callpaths that can take us into
nsCSSFrameConstructor::{ContentRangeInserted,ContentAppended}. Currently we
can call StyleNewSubtree on an already-styled element via RecreateFramesForContent,
which triggers an assertion in the servo traversal.

MozReview-Commit-ID: DqCGh90deHH
2016-12-12 18:50:33 -08:00
Bobby Holley
75e4c16bc7 Bug 1322945 - Remove the requirement that the parent styles must be current to style a subtree. r=heycam
Sometimes Gecko eagerly styles things without processing pending restyles first. In
general we'd like to avoid this, but there can be good reasons (for example, needing
to construct a frame for some small piece of newly-added content in order to do something
specific with that frame, but not wanting to flush all of layout). Just handle it.

MozReview-Commit-ID: EjXs0M4855Q
2016-12-12 18:50:33 -08:00
Bobby Holley
851568f59e Bug 1322945 - Only assert against _restyling_ roots with later siblings. r=heycam
The problem is with restyles, so we should leave the door open on
initial styling if that ends up making sense.

MozReview-Commit-ID: 5GOFBEUZhDe
2016-12-12 18:50:33 -08:00
Nazım Can Altınova
a409d41d1d Implement HorizontalPosition / VerticalPosition 2016-12-12 13:48:36 +03:00
bors-servo
0530e648af Auto merge of #14538 - DominoTree:master, r=Manishearth,Wafflespeanut
Use LengthOrNormal for column-gap #14297

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

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

<!-- 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/14538)
<!-- Reviewable:end -->
2016-12-11 08:03:16 -08:00
Nick Price
64a95f6410 Update layout component and helper to use LengthOrNormal 2016-12-11 08:50:06 -05:00
bors-servo
37c4051d21 Auto merge of #14498 - dpyro:image-orientation, r=canaltinova
Added image-orientation property

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

Implemented as per the MDN documentation—I could not find a current CSS draft. I am not sure if this is the complete correct metadata for the longhand helper:
```
<%helpers:longhand name="image-orientation”
                   experimental=“True”
                   animatable=“False”>
```
Also I am not sure how to test this and would appreciate help in creating a testing strategy.

---
<!-- 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 #13877.

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

<!-- 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/14498)
<!-- Reviewable:end -->
2016-12-10 13:57:14 -08:00
Sumant Manne
faddb0c3bb Added image-orientation property 2016-12-10 13:43:49 -06:00
Xidorn Quan
6e78325866 Remove script and doc no longer relevant 2016-12-10 00:33:41 -10:00
Xidorn Quan
446ee7bcc3 Make regen_atoms.py work by itself 2016-12-10 00:33:41 -10:00
Xidorn Quan
1cefd1bef0 Do build-time bindgen
Majority of build_gecko.rs is just the straightforward conversion from
regen.py. There are two differences that:
1. Side in whitelist is changed to mozilla::Side
2. std::atomic__My_base is added to opaque types for Windows
2016-12-10 00:33:41 -10:00
bors-servo
6dd4b4822f Auto merge of #14535 - servo:property-id, r=mbrubeck
Introduce a PropertyId enum and use it instead of strings of property names

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

* `LonghandId` and `ShorthandId` are C-like enums
* `Atom` is used for the name of custom properties.
* `PropertyDeclarationId` is the identifier for `PropertyDeclaration`,
  after parsing and shorthand expansion. (Longhand or custom property.)
* `PropertyId` represents any CSS property, e.g. in CSSOM.
  (Longhand, shorthand, or custom.)

CC @upsuper

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

<!-- 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/14535)
<!-- Reviewable:end -->
2016-12-10 01:16:26 -08:00
Simon Sapin
9856c617df Add PropertyId::from_nscsspropertyid 2016-12-09 17:06:53 -10:00
Simon Sapin
dbc9fcc2de Use PropertyId in per-property CSSStyleDeclaration accessors. 2016-12-09 17:06:52 -10:00
Simon Sapin
433c33c4df Match on PropertyId (not strings) to parse a declaration. 2016-12-09 17:06:51 -10:00
Simon Sapin
58d452fa4e Use PropertyId instead of Atom for CSSStyleDeclaration::get_computed_style 2016-12-09 17:06:50 -10:00
Bobby Holley
80460cc549 Make Restyle tracking more granular.
The primary idea of this patch is to ditch the rigid enum of Previous/Current
styles, and replace it with a series of indicators for the various types of
work that needs to be performed (expanding snapshots, rematching, recascading,
and damage processing). This loses us a little bit of sanity checking (since
the up-to-date-ness of our style is no longer baked into the type system), but
gives us a lot more flexibility that we'll need going forward (especially when
we separate matching from cascading). We also eliminate get_styling_mode in
favor of a method on the traversal.

This patch does a few other things as ridealongs:
* Temporarily eliminates the handling for transfering ownership of styles to the
  frame. We'll need this again at some point, but for now it's causing too much
  complexity for a half-implemented feature.
* Ditches TRestyleDamage, which is no longer necessary post-crate-merge, and is
  a constant source of compilation failures from either needing to be imported
  or being unnecessarily imported (which varies between gecko and servo).
* Expands Snapshots for the traversal root, which was missing before.
* Fixes up the skip_root stuff to avoid visiting the skipped root.
* Unifies parallel traversal and avoids spawning for a single work item.
* Adds an explicit pre_traverse step do any pre-processing and determine whether
  we need to traverse at all.

MozReview-Commit-ID: IKhLAkAigXE
2016-12-09 14:46:40 -10:00