Commit graph

3667 commits

Author SHA1 Message Date
CYBAI
a13a9f8f8d Use specific negative assertion for cef window 2018-01-26 02:24:21 +08:00
bors-servo
6b2e5283c9 Auto merge of #19838 - servo:rm-sequence-writer-as-it-was, r=emilio
Make ToCss' SequenceWriter not monomorphise like a maniac anymore

<!-- 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/19838)
<!-- Reviewable:end -->
2018-01-23 12:03:41 -06:00
Emilio Cobos Álvarez
cd04664fb9
style: Use CascadeFlags for what they're for.
Now that we have an Element around on cascade, we can stop using the cascade
flags mechanism to pass various element-related state, like "is this element the
root", or "should it use the item-based display fixup".

That fixes handwaviness in the handling of those flags from style reparenting,
and code duplication to handle tricky stuff like :visited.

There are a number of other changes that are worth noticing:

 * skip_root_and_item_based_display_fixup is renamed to skip_item_display_fixup:

   TElement::is_root() already implies being the document element, which by
   definition is not native anonymous and not a pseudo-element.

   Thus, you never get fixed-up if your NAC or a pseudo, which is what the code
   tried to avoid, so the only fixup with a point is the item one, which is
   necessary.

 * The pseudo-element probing code was refactored to return early a
   Option::<CascadeInputs>::None, which is nicer than what it was doing.

 * The visited_links_enabled check has moved to selector-matching time. The rest
   of the checks aren't based on whether the element is a link, or are properly
   guarded by parent_style.visited_style().is_some() or visited_rules.is_some().

   Thus you can transitively infer that no element will end up with a :visited
   style, not even from style reparenting.

Anyway, the underlying reason why I want the element in StyleAdjuster is because
we're going to implement an adjustment in there depending on the tag of the
element (converting display: contents to display: none depending on the tag), so
computing that information eagerly, including a hash lookup, wouldn't be nice.
2018-01-23 13:18:54 +01:00
Anthony Ramine
cd8f96cc9e Change ToCss to take a CssWriter<W>
This more concrete wrapper type can write a prefix the very first time something
is written to it. This allows removing plenty of useless monomorphisations caused
by the former W/SequenceWriter<W> pair of types.
2018-01-23 10:41:42 +01:00
Emilio Cobos Álvarez
5ac12b5df4
style: Make the TElement type arrive to the cascade function.
Not super-proud of this one, but it's the easiest way I could think of.

The changeset looks bigger than what it is, because while at it I've rewrapped a
fair amount of functions around to use proper block indentation.

Alternatives are parameterizing Stylist by <E>, which is not fun, or moving the
concrete element from layout_thread to layout, but that implies layout depending
on script, which isn't fun either.

Other alternative is implementing an empty enum and making anon boxes work on
it. It has the advantage of removing the annoying type parameter, but the
disadvantage of instantiating `cascade` twice, which isn't great, and having to
maintain all the boilerplate of a `TElement` implementation that just does
nothing.
2018-01-23 00:57:54 +01:00
Bobby Holley
f5dd50dcfd Avoid some unnecessary intermediate utf8 strings in glue.rs.
MozReview-Commit-ID: 79qv87uPzjR
2018-01-22 13:59:45 -08:00
Simon Sapin
897a5b39c5 Fix some "unnecessary parentheses" warnings 2018-01-22 17:41:25 +01:00
bors-servo
59033e6970 Auto merge of #19798 - gootorov:move_cursor_from_mako, r=emilio
style: Move cursor property out of mako

<!-- Please describe your changes on the following line: -->
Sub-PR of #19015

r? emilio

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

<!-- Either: -->
- [x] These changes do not require 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/19798)
<!-- Reviewable:end -->
2018-01-20 12:10:58 -06:00
Igor Gutorov
4ee9eb8563 style: Move cursor property out of mako 2018-01-20 19:06:29 +02:00
Emilio Cobos Álvarez
c49434726e
style: Skip a function for the static tests. 2018-01-20 02:10:58 +01:00
Emilio Cobos Álvarez
665690bba6
style: Hook in the document invalidator.
Bug: 1409672
Reviewed-by: xidorn
MozReview-Commit-ID: EoSMrYPS7dl
2018-01-17 18:03:16 +01:00
Bobby Holley
9a8821a1b0 Avoid debug serialization of PropertyDeclaration & co in release builds.
In total, this PR saves ~60k.

The conditional compilation on the _Debug FFI function eliminates one
of the ToCss variants, eliminating 54.4k, as well as a bunch of other
<1k functions. Removing the public trait implementation of Debug for the
font metrics provider eliminates the last Debug impl from stylo.

MozReview-Commit-ID: nIfQ3sy4OW
2018-01-15 17:24:27 -08:00
Bobby Holley
f858ce91e8 Avoid entraining various Debug impls in release builds.
MozReview-Commit-ID: Lp9i9EI5qdU
2018-01-13 09:51:46 -08:00
bors-servo
6ca651c0c8 Auto merge of #19751 - servo:selectors, r=bholley
Clean up the selectors crate for a new crates.io release

<!-- 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/19751)
<!-- Reviewable:end -->
2018-01-12 16:55:12 -06:00
Bobby Holley
2b1c1d7b68 Avoid atomic overhead in Servo_Element_IsDisplayNone.
This reduces time spent in NoteDirtyElement by about 15% in the testcase. Even
though the subsequent patch will cause us to call Servo_Element_IsDisplayNone less
for this particular testcase, it could still be hot on other testcases, and so
it's worth optimizing.

MozReview-Commit-ID: 3F3Zfp48dDW
2018-01-12 10:19:07 -08:00
Bobby Holley
ac74cf7a60 Add machinery to assert single-threadedness from geckolib.
MozReview-Commit-ID: 9LBNm2h5Ct3
2018-01-12 10:19:06 -08:00
Simon Sapin
7d1dc7286a Move selectors size_of tests to Stylo tests 2018-01-12 15:10:56 +01:00
Bobby Holley
fd41646699 Adjust size of gecko ComputedValues struct for removal of separate lazy pseudo cache. 2018-01-11 10:15:35 -08:00
Emilio Cobos Álvarez
8f6455b9df
style: Remove some unneeded indirection.
All TElement's implement Copy, and are just pointers, so the double indirection
is stupid.

I'm going to try to see if removing this double-indirection fixes some
selector-matching performance, and this is a trivial pre-requisite while I wait
for Talos results.
2018-01-10 03:56:34 +01:00
Emilio Cobos Álvarez
ce1d8cd232
style: Make invalidation state also be with the ::slotted rules.
MozReview-Commit-ID: GYmsXYvL9vj
2018-01-09 14:26:03 +01:00
Emilio Cobos Álvarez
bab6077c1c
Revert #19666 since we do create NAC elements and expect them to be inline.
This reverts commit 1970e82b0d, reversing
changes made to e882660ea6.

The reparenting logic is still bogus, but I'll figure out how to deal with that
in a bit.
2017-12-31 17:00:26 +01:00
Emilio Cobos Álvarez
e464f5b020
style: Simplify the skip item based display fixup adjustment.
In practice the only NAC that possibly inherits from a grid or flex container
are pseudos.

In Gecko, if the root element is an item container, custom anon content would
also sometimes incorrectly inherit from that (see bug 1405635), but that's fixed
in Stylo.

We remove the IS_ROOT_ELEMENT blockification from the "skip display fixup"
check, since the root element is never NAC or anything like that, so there's no
need for the check.

This also fixes some reparenting fishiness related to pseudo-elements. We were
only skipping the fixup when reparenting anon boxes, not when reparenting normal
element styles, nor when reparenting other pseudo styles which are not anon
boxes.
2017-12-31 13:57:49 +01:00
Emilio Cobos Álvarez
a747de1814
style: Simplify "prohibit display: contents" adjustment.
On top of #19661.

The NAC condition is pointless because NAC don't match author rules unless they
are a pseudo-element too.
2017-12-31 09:17:00 +01:00
Emilio Cobos Álvarez
563da3a19c
style: Simplify ::-moz-fieldset-content special-casing.
The style adjuster knows about the pseudo, so there's no reason to thread that
info down.

There are more simplifications that can be done in followups, cleaning a bit the
cascade flags too, those will come later.
2017-12-30 22:08:04 +01:00
CYBAI
05b014e720 style: Move touch-action outside of mako 2017-12-28 23:13:39 +08:00
tigercosmos
6d6491e814 deny warnings 2017-12-22 03:34:11 +08:00
Emilio Cobos Álvarez
604c520343
style: Make anon boxes account for :visited.
This should fix one of the test failures of:

  https://bugzilla.mozilla.org/show_bug.cgi?id=616436
2017-12-14 05:02:54 +01:00
Manish Goregaokar
337e5288c2 Add weighted telemetry probes for parallel restyles 2017-12-12 10:13:23 -06:00
Manish Goregaokar
d573081fe5 Add telemetry probe for fraction of restyles that are parallel 2017-12-12 10:08:11 -06:00
Simon Sapin
e17697fb0e Update euclid, azure, skia, offscreen_gl_context, plane-split, webrender 2017-12-08 14:32:28 +01:00
Simon Sapin
9d898cd460 Include test crates as workspace members rather that dev-dependencies 2017-12-07 13:50:09 +01:00
Simon Sapin
05a364c7b8 Move Stylo unit tests out of tests/unit
This will allow writing `tests/unit/*` in the root `Cargo.toml` file
to designate Servo unit tests.
2017-12-07 13:50:09 +01:00
bors-servo
c20fd7d58a Auto merge of #19494 - Eijebong:smallvec, r=emilio
Update smallvec to 0.6

<!-- 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/19494)
<!-- Reviewable:end -->
2017-12-05 13:44:19 -06:00
Boris Chiou
aa52e644fe Implement the Servo parser for FontFaceSet Web API. 2017-12-05 21:33:14 +08:00
Boris Chiou
1e29e64000 Implement the Servo parser for font descriptors Web API.
According to the spec, this parser should follow what we do for
@font_face rule, so we use the same type to parse the input, instead of
using the parser of their specified values.
2017-12-05 21:33:07 +08:00
Bastien Orivel
6f8ba39dce Update smallvec to 0.6 2017-12-05 12:03:20 +01:00
Emilio Cobos Álvarez
23d69ea77d
style: Support calc() in color functions. 2017-12-05 10:06:24 +01:00
Emilio Cobos Álvarez
ea5efd9e2f
style: Update cssparser to 0.23. 2017-12-05 10:01:37 +01:00
bors-servo
005fd9cfa8 Auto merge of #19473 - servo:error-message, r=aethanyc
geckolib: Fix typo in CSS parser error message name.

<!-- 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/19473)
<!-- Reviewable:end -->
2017-12-05 00:54:12 -06:00
Cameron McCormack
9a31d0d8d8 geckolib: Allow Servo_ComputeColor to report errors to the console. 2017-12-05 13:22:22 +08:00
Cameron McCormack
7015d5b22e style: Add a new CSS error type for lone value parsing errors.
This allows us to report errors in functions that want to just parse a
single CSS value, rather than a value for a particular property declaration.

The one value type that we need to support for now is <color> value parsing
errors, so just add formatting/support for that.
2017-12-05 13:22:22 +08:00
Cameron McCormack
7940061c9a geckolib: Allow an ErrorReporter to be created with null URL data.
This allows us to create an ErrorReporter that will report errors as being
"from DOM" rather than a specific URL.

Also, factor out a method on ErrorReporter so that we don't need to pass in
a UrlExtraData reference.
2017-12-05 13:22:22 +08:00
Cameron McCormack
393ab5ab1e geckolib: Return from Servo_ComputeColor whether the value was currentcolor. 2017-12-05 13:22:22 +08:00
Cameron McCormack
c49554d4c4 style: Add FFI function to parse a @counter-style descriptor. 2017-12-05 10:04:52 +08:00
Cameron McCormack
374f0091c1 geckolib: Add FFI function to parse a @counter-style name. 2017-12-05 10:04:52 +08:00
Gecko Backout
25436276ae Backed out 1 changesets because the gecko part (bug 1420117) has to be backed out for the mochitests r=backout on a CLOSED TREE
Backed out changeset baada68cad47

Backs out https://github.com/servo/servo/pull/19441
2017-12-05 00:18:35 +00:00
Cameron McCormack
89bf25b879
geckolib: Fix typo in CSS parser error message name. 2017-12-04 10:33:01 +08:00
Cameron McCormack
3513b31091 style: Add FFI function to parse a @counter-style descriptor. 2017-12-04 08:57:46 +08:00
Cameron McCormack
c00944046c geckolib: Add FFI function to parse a @counter-style name. 2017-12-04 08:57:46 +08:00
Emilio Cobos Álvarez
d570fc8164
style: Remove pretty useless layer of abstraction. 2017-12-02 03:23:22 +01:00