Commit graph

16155 commits

Author SHA1 Message Date
Glenn Watson
c4b1033b17 Update WR (improved double border quality, minor API changes). 2017-04-21 11:33:40 +10:00
Bobby Holley
fe97033aa8 Use a SmallVec during selector parsing.
This significantly reduces realloc time at the expense of some additional
mmemmoves, but pencils out to a small win on my machine.

We wanted to do this anyway, and this avoids needing to remove the smallvec
dependency from Selectors and then add it back again.

MozReview-Commit-ID: HW4kDxzLACp
2017-04-20 15:04:52 -07:00
Bobby Holley
cebacc7faa Rename SimpleSelector to Component.
MozReview-Commit-ID: JfaZpHSkG8h
2017-04-20 15:04:48 -07:00
Bobby Holley
cf06e2bf1e Use Boxed slices for Empty and MozAny.
MozReview-Commit-ID: CmVK3u0vYn0
2017-04-20 15:00:50 -07:00
Bobby Holley
6d66ec5e11 Store selectors and combinators inline in a single sequence.
This improves cache locality and reduces allocations during parsing.

Note that this reverses the iteration order within a sequence of simple selectors,
but that shouldn't matter.
2017-04-20 15:00:43 -07:00
Anthony Ramine
2ac57a7d8f Fix parsing of -webkit-radial-gradient()
It's either keywords or lengths, but not a mix of two.
2017-04-20 22:46:18 +02:00
Nathan Froyd
7249d5f4f1 add the gecko_debug feature
debug_assertions is not a reliable guide to whether Gecko C++ code is
being compiled with debugging assertions, since we can now compile Gecko
with --enable-optimize --disable-debug --enable-rust-debug: Gecko will
be compiled without debugging assertions (and debugging struct layouts)
and Rust code will be compiled with debug_assertions.  The struct
mismatches in the binding layer lead to startup crashes.

This feature is not presently used, but will be set by some Gecko-side
changes and then used by some Servo-side changes.  These changes need to
be made first so that CI on both sides works correctly at all
intermediate stages along the way.
2017-04-20 16:13:15 -04:00
Anthony Ramine
de1fb76ac1 Properly forbid legacy keywords in modern gradient syntax 2017-04-20 13:11:13 +02:00
Anthony Ramine
efdc67d5a1 Properly parse background-size in background longhand (fixes #15199) 2017-04-20 12:18:41 +02:00
bors-servo
7f825d2119 Auto merge of #16511 - nox:webkit-gradients, r=emilio
Implement -webkit-radial-gradient() (fixes #15441)

<!-- 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/16511)
<!-- Reviewable:end -->
2017-04-20 04:27:33 -05:00
Anthony Ramine
d5cd34dec8 Implement -webkit-radial-gradient() (fixes #15441) 2017-04-20 11:26:47 +02:00
Anthony Ramine
50c25f3221 Extract the shape parsing code from GradientKind::parse_radial 2017-04-20 11:15:40 +02:00
bors-servo
6e05a903af Auto merge of #16531 - mrobinson:clip-id, r=glennw
Eliminate ScrollRootId

Just use WebRender's ClipId directly. This will allow us to create and
use ReferenceFrames in the future, if we need to do that. It will also
make it easier to have Servo responsible for creating the root
scrolling area, which will allow removing some old hacks in the future.

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

<!-- Either: -->
- [ ] There are tests for these changes OR
- [x] These changes do not require tests because they should not change behavior.

<!-- 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/16531)
<!-- Reviewable:end -->
2017-04-20 01:55:33 -05:00
Martin Robinson
d150cc9f95 Eliminate ScrollRootId
Just use WebRender's ClipId directly. This will allow us to create and
use ReferenceFrames in the future, if we need to do that. It will also
make it easier to have Servo responsible for creating the root
scrolling area, which will allow removing some old hacks in the future.
2017-04-20 08:51:38 +02:00
bors-servo
2d732d829b Auto merge of #16472 - cu1t:#14095-fix-xml-doc-namespaces, r=nox
Fix namespaces of elements created in XML documents

Correctly implement following step of [Dom Document Spec](https://dom.spec.whatwg.org/#dom-document-createelement):
> Let namespace be the HTML namespace, if the context object is an HTML document or context object’s content type is "application/xhtml+xml", and null otherwise.

Note, this will make following test in `tests/wpt/web-platform-tests/dom/nodes/Document-constructor.html` to fail, so related .ini file added to mark it as such:
```
test(function() {
  var doc = new Document();
  var a = doc.createElement("a");
  // In UTF-8: 0xC3 0xA4
  a.href = "http://example.org/?\u00E4";
  assert_equals(a.href, "http://example.org/?%C3%A4");
}, "new Document(): URL parsing")
```
I'm not very familiar with specs, but from quick look at it, I'm doubtfull that it is valid in the first place. This is an "application/xml" document, so I don't see why it should encode a.href. Firefox also fails that.

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

<!-- Either: -->
- [ ] There are tests for these changes OR
- [X] These changes do not require tests because because there are already tests which were being ignored

<!-- 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/16472)
<!-- Reviewable:end -->
2017-04-20 01:01:05 -05:00
Manish Goregaokar
3162babada stylo: Support scriptlevel computation and scriptminsize
scriptlevel is a property that affects how font-size is inherited. If scriptlevel is
+1, for example, it will inherit as the script size multiplier times
the parent font. This does not affect cases where the font-size is
explicitly set.

However, this transformation is not allowed to reduce the size below
scriptminsize. If this inheritance will reduce it to below
scriptminsize, it will be set to scriptminsize or the parent size,
whichever is smaller (the parent size could be smaller than the min size
because it was explicitly specified).

Now, within a node that has inherited a font-size which was
crossing scriptminsize once the scriptlevel was applied, a negative
scriptlevel may be used to increase the size again.

This should work, however if we have already been capped by the
scriptminsize multiple times, this can lead to a jump in the size.

For example, if we have text of the form:

huge large medium small tiny reallytiny tiny small medium huge

which is represented by progressive nesting and scriptlevel values of
+1 till the center after which the scriptlevel is -1, the "tiny"s should
be the same size, as should be the "small"s and "medium"s, etc.

However, if scriptminsize kicked it at around "medium", then
medium/tiny/reallytiny will all be the same size (the min size).
A -1 scriptlevel change after this will increase the min size by the
multiplier, making the second tiny larger than medium.

Instead, we wish for the second "tiny" to still be capped by the script
level, and when we reach the second "large", it should be the same size
as the original one.

We do this by cascading two separate font sizes. The font size (mSize)
is the actual displayed font size. The unconstrained font size
(mScriptUnconstrainedSize) is the font size in the situation where
scriptminsize never applied.

We calculate the proposed inherited font size based on scriptlevel and
the parent unconstrained size, instead of using the parent font size.
This is stored in the node's unconstrained size and will also be stored
in the font size provided that it is above the min size.

All of this only applies when inheriting. When the font size is
manually set, scriptminsize does not apply, and both the real and
unconstrained size are set to the explicit value. However, if the font
size is manually set to an em or percent unit, the unconstrained size
will be set to the value of that unit computed against the parent
unconstrained size, whereas the font size will be set computing against
the parent font size.

MozReview-Commit-ID: 820BIWqno3L
2017-04-19 22:19:55 -07:00
Manish Goregaokar
1b8458598e stylo: Support computing font-size against an arbitrary base size
MozReview-Commit-ID: 4jWcugvXR65
2017-04-19 22:10:43 -07:00
bors-servo
f74f1fb592 Auto merge of #16537 - KuoE0:add-inline-axis-and-block-axis-for-moz-box-orient, r=KuoE0
Add `inline-axis` and `block-axis` aliases for `-moz-box-orient`.

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

This issue is reported at https://bugzilla.mozilla.org/show_bug.cgi?id=1355005.

spec: https://developer.mozilla.org/en-US/docs/Web/CSS/box-orient

---
<!-- 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 1355005](https://bugzilla.mozilla.org/show_bug.cgi?id=1355005)

<!-- Either: -->
- [X] These changes do not require tests 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/16537)
<!-- Reviewable:end -->
2017-04-19 23:19:48 -05:00
KuoE0
d43e151499 Add inline-axis and block-axis aliases for -moz-box-orient.
Ref: Bug 1355005 - stylo: Support -moz-box-orient: {block,inline}-axis
2017-04-20 11:55:29 +08:00
Boris Chiou
0dcee472c1 Change the animation_type of column-count to normal. 2017-04-20 11:28:57 +08:00
bors-servo
b8b4ec92df Auto merge of #16231 - canaltinova:moz-transform, r=Manishearth
stylo: Implement -moz-transform property

-moz-transform property is an alias shorthand property. It has transform as sub-property but their parsing is different in some cases(matrix/matrix3d). -moz-transform also accepts LengthOrPercentage in the nondiagonal homogeneous components of matrix and matrix3d.

It looks like length and percentage values are getting computed to number directly. For example 120px converts into 120 and calc(120px + 20%) converts into 140. So I did like this. But we need to check this behavior again to be sure, I guess.

Also I spent half day investigating why matrices are not serializing after this change and found out their ToCss functions is not completely implemented yet 😄 I was going to implement them but there is an easy issue about it(#15194) so I left it that way. Probably all tests won't pass without it.

---
<!-- 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 #16003 and [Bug 1351356](https://bugzilla.mozilla.org/show_bug.cgi?id=1351356)

<!-- 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/16231)
<!-- Reviewable:end -->
2017-04-19 17:37:07 -05:00
bors-servo
2d2c82541a Auto merge of #16529 - mrobinson:root-scroll, r=glennw
Create proper root ClipId when scrolling from script

WebRender currently makes a distinction between an external ClipId with
id equal to 0 and the root scroll ClipId. We need to detect this
situation and properly form the ClipId for the root.

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

<!-- Either: -->
- [x] 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/16529)
<!-- Reviewable:end -->
2017-04-19 17:01:58 -05:00
Martin Robinson
6017dc0836 Create proper root ClipId when scrolling from script
WebRender currently makes a distinction between an external ClipId with
id equal to 0 and the root scroll ClipId. We need to detect this
situation and properly form the ClipId for the root.
2017-04-19 23:43:24 +02:00
Nazım Can Altınova
f9225d84aa
Implement moz-transform property 2017-04-19 22:11:54 +03:00
Nazım Can Altınova
67799f9445
Create a generic flag system for properties 2017-04-19 22:08:50 +03:00
Nazım Can Altınova
aa077ed40a
stylo: Add clip value to overflow-{x,y} properties 2017-04-19 18:47:34 +03:00
Jack Moffitt
853c91781e Remove DOMRectList and use sequences instead.
DOMRectList was removed last back in 2015. See
https://www.w3.org/Bugs/Public/show_bug.cgi?id=26200 for details.
2017-04-19 07:11:58 -06:00
cu1t
bef86cbf36 Fix namespaces of elements created in XML documents 2017-04-19 19:40:23 +07:00
bors-servo
355d5f89da Auto merge of #16527 - BorisChiou:stylo/transition/shorthands, r=emilio
stylo: Bug 1353628 - Support shorthand properties for CSS Transition.

These patches add shorthand properties into TransitionProperty, so we can parse the shorthand properties properly and create transitions for them.

---
- [X] `./mach build -d` does not report any errors
- [X] `./mach test-tidy` does not report any errors
- [X] These changes fix Bug 1353628
- [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/16527)
<!-- Reviewable:end -->
2017-04-19 07:35:09 -05:00
bors-servo
5062c4b117 Auto merge of #16526 - BorisChiou:stylo/animation/logical_type, r=emilio
stylo: Bug 1357671 - Make animation_type of logical properties be None.

Logical properties will be animatable (with discrete type), but for now, it is still non-animatable, so we assign "None" to the animation_type.

---
- [X] `./mach build -d` does not report any errors
- [X] `./mach test-tidy` does not report any errors
- [X] These changes fix Bug 1357671
- [X] These changes do not require tests because this is for code gen. If there is any problem, we will get compilation 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/16526)
<!-- Reviewable:end -->
2017-04-19 05:29:48 -05:00
bors-servo
0a54d5a025 Auto merge of #16523 - glennw:update-wr-drivers, r=metajack
Update WR (driver workaround, large clip mask fix, font index support).

<!-- 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/16523)
<!-- Reviewable:end -->
2017-04-19 04:53:22 -05:00
Boris Chiou
43f9f8ca95 Bug 1353628 - Part 3: Create PropertyAnimation for shorthands.
Therefore, we can start transitions on shorthand properties properly.

MozReview-Commit-ID: Ev2u2tEalnK
2017-04-19 17:42:44 +08:00
Boris Chiou
a06ce4a6aa Bug 1353628 - Part 1: Add shorthand properties into TransitionProperty.
In order to make TransitionProperty::parse() also work on shorthands, we
should add shorthands into TransitionProperty, and add the arms in other
functions which match TransitionProperty.

MozReview-Commit-ID: KFd26KcQf3N
2017-04-19 17:42:24 +08:00
Boris Chiou
aca0d24f36 Bug 1357671 - Make animation_type of logical properties be None.
Logical properties will be animatable (with discrete type), but for now
it is still non-animatable, so we assign "None" to the animation_type.

MozReview-Commit-ID: HRYwIhKkpoW
2017-04-19 17:24:19 +08:00
bors-servo
83130dcc91 Auto merge of #16519 - emilio:unused-import, r=emilio
dom/medialist: remove unused import.

<!-- 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/16519)
<!-- Reviewable:end -->
2017-04-19 04:17:09 -05:00
bors-servo
5274991545 Auto merge of #16516 - emilio:stylesheet-handling, r=bholley
stylo: Centralize stylesheet handling.

This is needed for both bug 1357461 and bug 1273303, where I plan to add smarter
invalidations than what we have now.

Also, it's cleaner.

Ideally I'll move this onto stylist, though that may require extra work to make
it work fine for Servo, so for now let's just do the obvious thing.

<!-- 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/16516)
<!-- Reviewable:end -->
2017-04-19 03:41:08 -05:00
bors-servo
195100f3ca Auto merge of #16495 - coalman:tidy-brace-alignment, r=emilio
Make tidy check that opening and closing braces that begin a line do …

…so with proper alignment.

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

<!-- Either: -->
- [X] 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/16495)
<!-- Reviewable:end -->
2017-04-19 03:06:31 -05:00
Emilio Cobos Álvarez
4651b94ff0
style: Simplify author_style_disabled handling. 2017-04-19 09:41:37 +02:00
Emilio Cobos Álvarez
97235d0bf7
stylo: Centralize stylesheet handling.
This is needed for both bug 1357461 and bug 1273303, where I plan to add smarter
invalidations than what we have now.

Also, it's cleaner.

Ideally I'll move this onto stylist, though that may require extra work to make
it work fine for Servo, so for now let's just do the obvious thing.
2017-04-19 09:41:36 +02:00
Emilio Cobos Álvarez
3aacbe69c7
dom/medialist: remove unused Default import. 2017-04-19 08:56:45 +02:00
Glenn Watson
3dccd1ed2c Update WR (driver workaround, large clip mask fix, font index support). 2017-04-19 14:08:06 +10:00
Bobby Holley
69e3870cdd Store bloom filter hashes inline.
MozReview-Commit-ID: F07JkdduLaI
2017-04-18 20:07:55 -07:00
Bobby Holley
9524c5cb57 Introduce SelectorInner and use it for top-level matching.
MozReview-Commit-ID: DxG6USsPIkh
2017-04-18 20:07:53 -07:00
Manish Goregaokar
14c632408c tidy and test fixes 2017-04-18 18:51:31 -07:00
Bobby Holley
11745fb983 Eliminate the AFFECTED_BY_SIBLINGS StyleRelation.
MozReview-Commit-ID: Lm25v2K21v5
2017-04-18 15:59:14 -07:00
coalman
fc34b9a14d Fix indentation errors in servo rust code that tidy now finds. 2017-04-18 14:56:13 -04:00
Manish Goregaokar
59f16b57e7 Bug 1349417 - Part 8: stylo: Serialize system fonts correctly; r?xidorn
MozReview-Commit-ID: 4q1zZUcw6zF
2017-04-18 10:50:12 -07:00
Manish Goregaokar
681df60191 stylo: System font support for bitflag properties and font-language-override 2017-04-18 09:46:03 -07:00
Manish Goregaokar
f973a9720d stylo: System font support for font-size-adjust 2017-04-18 09:45:56 -07:00
Manish Goregaokar
4a899530be stylo: System font support for font-weight 2017-04-18 09:45:49 -07:00