Commit graph

19029 commits

Author SHA1 Message Date
Simon Sapin
52dceb3d5f Use new std::num::NonZero* types instead of deprecated core::nonzero::NonZero 2018-04-09 21:43:26 +02:00
Simon Sapin
3d6614e314 Upgrade to rustc 1.27.0-nightly (056f589fb 2018-04-07) 2018-04-09 21:43:25 +02:00
Anthony Ramine
f837354cb7 Do not emit a WebGL error for "gl_" prefixed names in gl.getAttribLocation 2018-04-09 15:52:56 +02:00
Anthony Ramine
561c41097f Fix filtering of reserved WebGL names in gl.getAttribLocation 2018-04-09 14:44:02 +02:00
Anthony Ramine
fcb6d5112e Properly check for cubic dimensions in gl.copyTexImage2D 2018-04-09 14:44:02 +02:00
bors-servo
cb754b2627
Auto merge of #20597 - emilio:host, r=xidorn
style: Implement the non-functional :host selector.

Kinda tricky because :host only matches rules on the shadow root where the rules
come from. So we need to be careful during invalidation and style sharing.

I didn't use the non_ts_pseudo_class_list bits because as soon as we implement
the :host(..) bits we're going to need to special-case it anyway.

The general schema is the following:

 * Rightmost featureless :host selectors are handled inserting them in the
   host_rules hashmap. Note that we only insert featureless stuff there. We
   could insert all of them and just filter during matching, but that's slightly
   annoying.

 * The other selectors, like non-featureless :host or what not, are added to the
   normal cascade data. This is harmless, since the shadow host rules are never
   matched against the host, so we know they'll just never match, and avoids
   adding more special-cases.

 * Featureless :host selectors to the left of a combinator are handled during
   matching, in the special-case of next_element_for_combinator in selectors.
   This prevents this from being more invasive, and keeps the usual fast path
   slim, but it's a bit hard to match the spec and the implementation.

   We could keep a copy of the SelectorIter instead in the matching context to
   make the handling of featureless-ness explicit in match_non_ts_pseudo_class,
   but we'd still need the special-case anyway, so I'm not fond of it.

 * We take advantage of one thing that makes this sound. As you may have
   noticed, if you had `root` element which is a ShadowRoot, and you matched
   something like `div:host` against it, using a MatchingContext with
   current_host == root, we'd incorrectly report a match. But this is impossible
   due to the following constraints:

    * Shadow root rules aren't matched against the host during styling (except
      these featureless selectors).

    * DOM APIs' current_host needs to be the _containing_ host, not the element
      itself if you're a Shadow host.

Bug: 992245
Reviewed-by: xidorn
MozReview-Commit-ID: KayYNfTXb5h

<!-- 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/20597)
<!-- Reviewable:end -->
2018-04-09 06:41:59 -04:00
Emilio Cobos Álvarez
db5db13559
style: Implement the non-functional :host selector.
Kinda tricky because :host only matches rules on the shadow root where the rules
come from. So we need to be careful during invalidation and style sharing.

I didn't use the non_ts_pseudo_class_list bits because as soon as we implement
the :host(..) bits we're going to need to special-case it anyway.

The general schema is the following:

 * Rightmost featureless :host selectors are handled inserting them in the
   host_rules hashmap. Note that we only insert featureless stuff there. We
   could insert all of them and just filter during matching, but that's slightly
   annoying.

 * The other selectors, like non-featureless :host or what not, are added to the
   normal cascade data. This is harmless, since the shadow host rules are never
   matched against the host, so we know they'll just never match, and avoids
   adding more special-cases.

 * Featureless :host selectors to the left of a combinator are handled during
   matching, in the special-case of next_element_for_combinator in selectors.
   This prevents this from being more invasive, and keeps the usual fast path
   slim, but it's a bit hard to match the spec and the implementation.

   We could keep a copy of the SelectorIter instead in the matching context to
   make the handling of featureless-ness explicit in match_non_ts_pseudo_class,
   but we'd still need the special-case anyway, so I'm not fond of it.

 * We take advantage of one thing that makes this sound. As you may have
   noticed, if you had `root` element which is a ShadowRoot, and you matched
   something like `div:host` against it, using a MatchingContext with
   current_host == root, we'd incorrectly report a match. But this is impossible
   due to the following constraints:

    * Shadow root rules aren't matched against the host during styling (except
      these featureless selectors).

    * DOM APIs' current_host needs to be the _containing_ host, not the element
      itself if you're a Shadow host.

Bug: 992245
Reviewed-by: xidorn
MozReview-Commit-ID: KayYNfTXb5h
2018-04-09 12:19:05 +02:00
Anthony Ramine
68898f4ebd Fix the error emitted for invalid targets in WebGLTexture::bind
It doesn't actually matter because this is only called from
WebGLRenderingContext::BindTexture, which already checks the target,
but better be safe than sorry.
2018-04-09 11:46:12 +02:00
Xidorn Quan
22cf429c35 Use Servo code to check whether a property is inherited. 2018-04-09 19:10:44 +10:00
bors-servo
e460b4ab8a
Auto merge of #20575 - Manishearth:filler-y, r=emilio
Use correct filler y value when animating with an implied-y translate()s

r=emilio https://bugzilla.mozilla.org/show_bug.cgi?id=1451724

<!-- 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/20575)
<!-- Reviewable:end -->
2018-04-09 01:47:58 -04:00
bors-servo
954ac8157f
Auto merge of #20586 - emilio:moz-gradient-pref, r=xidorn
style: Respect the -moz- gradient pref again.

This hopefully allows us to unship them eventually.

Bug: 1451874
Reviewed-by: xidorn
MozReview-Commit-ID: 2MDRZLmLMM0

<!-- 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/20586)
<!-- Reviewable:end -->
2018-04-07 11:07:55 -04:00
Emilio Cobos Álvarez
3927b3453a
style: Respect the -moz- gradient pref again.
This hopefully allows us to unship them eventually.

Bug: 1451874
Reviewed-by: xidorn
MozReview-Commit-ID: 2MDRZLmLMM0
2018-04-07 16:40:38 +02:00
bors-servo
ecfcf35c26
Auto merge of #20583 - emilio:affine-stuff, r=upsuper
selectors: Don't serialize :nth-child(-n) as -1n.

<!-- 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/20583)
<!-- Reviewable:end -->
2018-04-07 10:10:35 -04:00
Emilio Cobos Álvarez
1eab5927a5
selectors: Don't serialize :nth-child(-n) as -1n. 2018-04-07 14:54:23 +02:00
Xidorn Quan
3274e84278 Have CSSOM append rather than replace slot in declaration block.
The early return for identical setting in importance matching as well
as the comment before `index_to_remove` are removed because the order
is web-exposing regardless of whether it's from CSSOM or parsing. e.g.
`top: 1px; left: 2px; top: 1px;` is effectively `left: 2px; top: 1px;`,
not `top: 1px; left: 2px;`.
2018-04-07 19:58:27 +10:00
bors-servo
ecf71d77cd
Auto merge of #20573 - Ramshell:issue/20498, r=mbrubeck
Add support for percentages in column-gap.

<!-- Please describe your changes on the following line: -->
# Changes in this PR
* I've removed the `if product == "gecko"` line in order to make the column_gap type "NonNegativeLengthOrPercentageOrNormal" always.

* Then I've changed this line
```rust
Either::First(len) => len.into(),
```
to
```rust
Either::First(len) => len.0.to_pixel_length(content_inline_size).into(),
```

---
<!-- 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 build-geckolib` does not report any errors
- [X] `./mach test-tidy` does not report any errors
- [X] These changes fix #20498  (github issue number if applicable).

<!-- Either: -->
- [X] These changes do not require tests because there are tests already for this in wpt, in particular css/css-align/gaps/column-gap-parsing-001.html for the parsing bits, and css/css-multicol/multicol-gap-percentage-001.html for the layout bits.

<!-- 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/20573)
<!-- Reviewable:end -->
2018-04-06 19:48:59 -04:00
Bobby Holley
9b5354f953 Stop using Gecko namespace ids in servo.
MozReview-Commit-ID: 2532dHCGPXW
2018-04-06 11:32:00 -07:00
Ramshell
14a0e74ca3 Remove col_gap_type variable 2018-04-06 12:23:25 -03:00
Manish Goregaokar
e5afb22184 Use correct filler y value when animating with an implied-y translate()s 2018-04-06 08:11:58 -07:00
bors-servo
a0bdba73e3
Auto merge of #20572 - jwatt:master, r=emilio
Stop using NS_STYLE_FONT_WEIGHT_NORMAL and NS_STYLE_FONT_WEIGHT_BOLD

The Servo side of the changes for
https://bugzilla.mozilla.org/show_bug.cgi?id=1452040

- [X] `./mach build -d` does not report any errors
- [X] `./mach build-geckolib` does not report any errors
- [X] `./mach test-tidy` does not report any errors
- [ ] These changes fix #__ (github issue number if applicable).

- [ ] There are tests for these changes OR
- [X] These changes do not require tests because it's a trivial change to internal constants

<!-- 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/20572)
<!-- Reviewable:end -->
2018-04-06 09:22:33 -04:00
bors-servo
ad4905cb90
Auto merge of #20486 - Eijebong:walkdir, r=nox
Bump walkdir

<!-- 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/20486)
<!-- Reviewable:end -->
2018-04-06 08:14:00 -04:00
Ramshell
20e8922433 Remove FIXME comment 2018-04-06 08:34:03 -03:00
bors-servo
646e487309
Auto merge of #20571 - emilio:align-shorthands-again, r=mats
style: Don't restrict alignment shorthand parsing now that's not ambiguous.

Bug: 1339656
Reviewed-by: mats
MozReview-Commit-ID: AnYBt6zwnPl

<!-- 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/20571)
<!-- Reviewable:end -->
2018-04-06 07:11:37 -04:00
Jonathan Watt
f72136800f Stop using NS_STYLE_FONT_WEIGHT_NORMAL and NS_STYLE_FONT_WEIGHT_BOLD
The Servo side of the changes for
https://bugzilla.mozilla.org/show_bug.cgi?id=1452040
2018-04-06 11:03:51 +01:00
Emilio Cobos Álvarez
0a87a15d23
style: Use a consistent style for position shorthand parsing. 2018-04-06 11:56:40 +02:00
Emilio Cobos Álvarez
725943f383
style: Don't restrict alignment shorthand parsing now that's not ambiguous.
Bug: 1339656
Reviewed-by: mats
MozReview-Commit-ID: AnYBt6zwnPl
2018-04-06 11:52:21 +02:00
bors-servo
c096629939
Auto merge of #20565 - servo:webgl, r=emilio
Daily batch of drive-by WebGL improvements, wholesome and gluten-free

<!-- 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/20565)
<!-- Reviewable:end -->
2018-04-06 05:52:06 -04:00
Anthony Ramine
e8f19fa7fc Properly check the right internal formats in gl.renderbufferStorage 2018-04-06 11:22:28 +02:00
Anthony Ramine
ac85d1255d Emit InvalidEnum for invalid targets passed to gl.renderbufferStorage 2018-04-06 11:22:27 +02:00
Anthony Ramine
183cc4c035 Properly check for invalid targets in gl.BindFramebuffer
It should always emit InvalidEnum, not InvalidOperation.
2018-04-06 11:22:27 +02:00
Ramshell
d588590ed2 Add support for percentages in column-gap. 2018-04-05 21:04:29 -03:00
Connor Brewster
f3d068f583 Implement diff-based session history
This new implementation of the session history keeps track of
a single tree of browsing contexts and pipelines which represents
the active entry of the session history and it keeps track of
diffs between adjacent entries. This allows use to traverse across
the joint session history by applying diffs to the active tree.
2018-04-05 18:23:21 -05:00
Xidorn Quan
a140a70c12 Update bindings. 2018-04-05 19:37:20 +10:00
Xidorn Quan
8932dc98be Remove all color stuff from nsCSSValue. 2018-04-05 19:37:20 +10:00
Xidorn Quan
665ea9037a Make DOMIntersectionObserver use nsStyleSides for mRootMargin, and use Servo code to serialize it. 2018-04-05 19:37:19 +10:00
bors-servo
4645e5bda3
Auto merge of #20539 - servo:webgl, r=emilio
Moar WebGL improvements, again

<!-- 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/20539)
<!-- Reviewable:end -->
2018-04-05 03:31:41 -04:00
Anthony Ramine
91d07a27db Remove SAMPLE_COVERAGE_INVERT from WebGLRenderingContext::validate_feature_enum
This constant is not mentioned in the docs of glEnable or glIsEnabled.
2018-04-05 09:31:13 +02:00
Anthony Ramine
1881c09a9c Mention #20534 near the enable/disable/isEnabled WebGL methods 2018-04-05 09:31:12 +02:00
Anthony Ramine
fb290e9c9e Properly clamp arguments to WebGLRenderingContext.depthRange 2018-04-05 09:31:09 +02:00
Anthony Ramine
7b4d66b621 Manually clamp the argument of WebGLRenderingContext.clearDepth
Better be safe than to feed stuff to some GPU driver that wouldn't clamp it.
2018-04-05 09:30:21 +02:00
Xidorn Quan
80ab893e3a Use Servo data to back @counter-style rule. 2018-04-05 09:33:45 +10:00
Xidorn Quan
32cd0b4ea0 Add source_location to CounterStyleRule. 2018-04-05 09:00:25 +10:00
Xidorn Quan
9ad03d3ec9 Remove initial value of @counter-style rule descriptors. 2018-04-05 09:00:16 +10:00
Anthony Ramine
fc6335c01d Properly allow more than FUNC_ADD in blendEquationSeparate 2018-04-04 15:49:21 +02:00
Anthony Ramine
15272d2c3b Properly allow FUNC_SUBTRACT and FUNC_REVERSE_SUBTRACT in blendEquation 2018-04-04 15:43:09 +02:00
Anthony Ramine
ae286a518d Cache BUFFER_USAGE value on the DOM side 2018-04-04 15:41:27 +02:00
Anthony Ramine
93d2082acb Move some methods out of the WebGLRenderingContextBase mixin
Those methods are to be overloaded in WebGL2, but this can't be done with
their current definitions, thanks to https://github.com/KhronosGroup/WebGL/issues/2216.
2018-04-04 13:12:43 +02:00
Anthony Ramine
bb2b6a7a41 Fix the signature of WebGLRenderingContext::BufferSubData 2018-04-04 13:12:42 +02:00
Anthony Ramine
3c56d2f5a7 Move handle_potential_webgl_error to the dom macros module 2018-04-04 13:12:41 +02:00
Anthony Ramine
e7f716de12 Fix the emitted error for invalid targets in WebGLRenderingContext::BufferData_ 2018-04-04 13:12:41 +02:00