Commit graph

28949 commits

Author SHA1 Message Date
Cameron McCormack
b3ee1c79c0 style: Make structs uncacheable if logical float/clear property values are used. 2017-09-14 17:13:44 +08:00
Cameron McCormack
5f17e2d13c style: Make structs uncacheable if ex/ch units are used.
Computing them depends on font metrics.
2017-09-14 17:13:43 +08:00
Cameron McCormack
1cde26eacb style: Record the property we are computing on computed::Context, if it's a non-inherited one. 2017-09-14 17:13:42 +08:00
Cameron McCormack
9230030daa style: Set writing mode dependency and uncacheable state only for non-inherited properties. 2017-09-14 17:13:40 +08:00
Emilio Cobos Álvarez
c34c92e904 style: Add a TLS-based style struct caching mechanism. 2017-09-14 17:13:39 +08:00
bors-servo
298b1363ff Auto merge of #18496 - bholley:2ndpass, r=emilio
do a second pass on the style sharing cache after computing the rule node

https://bugzilla.mozilla.org/show_bug.cgi?id=1397976
2017-09-14 00:07:52 -05:00
Bobby Holley
8e5c1c771e Share styles during recascades.
MozReview-Commit-ID: AFTwtzi4P93
2017-09-13 22:06:46 -07:00
Bobby Holley
1c9b39a8e8 Do a second pass on the sharing cache to reuse style by rule node identity.
MozReview-Commit-ID: H67j3Sbt3gr
2017-09-13 22:06:39 -07:00
Bobby Holley
7a7070e075 Add some wrapper types to propagate styles out of style resolver.
We'll use these next to propagate information about style reuse to the ElementDataFlags.

MozReview-Commit-ID: Dya6vgzydpL
2017-09-13 22:06:33 -07:00
Bobby Holley
9092e6b4c2 Return the element rather than styles from the style sharing cache.
This gives us more flexibility, and doesn't cost us anything.

MozReview-Commit-ID: CuvOEcLA3My
2017-09-13 22:06:24 -07:00
Bobby Holley
729db5ccec Cache the parent CV identity on ValidationData.
This will make the linear probing faster. If we end up implementing the two-tier
cache setup, this code will be unnecessary and can go away.

MozReview-Commit-ID: BRfV5ump34n
2017-09-13 22:06:17 -07:00
Bobby Holley
7b019f807b Use inheritance_parent to control style_sharing.
Using traversal_parent here is wrong.

MozReview-Commit-ID: GHCIjkgx4VE
2017-09-13 22:06:09 -07:00
Emilio Cobos Álvarez
46288f9c46 Share more code for the primary style resolution.
The code before predated the existence of CascadeInputs, I believe.

MozReview-Commit-ID: 2zPVfWZkgoh
2017-09-13 22:06:02 -07:00
Emilio Cobos Álvarez
2d66301e9c Be consistent about pseudo-elements in cascade_style.
Fortunately the checks were done in such a way that no incorrect behavior is
exposed. But worth doing it anyway.

MozReview-Commit-ID: 8873FkMXXKo
2017-09-13 22:05:55 -07:00
bors-servo
b6b698dbb1 Auto merge of #18491 - glennw:update-wr-android-bugs, r=jdm
Update WR (android driver bug fixes).

<!-- 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/18491)
<!-- Reviewable:end -->
2017-09-13 21:49:05 -05:00
bors-servo
bb2030a493 Auto merge of #18494 - frewsxcv:frewsxcv-size-hint, r=jdm
Implement `size_hint` for more iterators.

```
implement size hint for
more iterators because why
not we like fast things
```

<!-- 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/18494)
<!-- Reviewable:end -->
2017-09-13 19:38:32 -05:00
Corey Farwell
9cd4535364 Implement size_hint for more iterators.
```
implement size hint for
more iterators because why
not we like fast things
```
2017-09-13 20:29:27 -04:00
bors-servo
1ab705b026 Auto merge of #18486 - emilio:extra-data-to-cascade-data, r=SimonSapin
style: Move ExtraStyleData into CascadeData.

It logically belongs there, and the only reason it wasn't there before we were
working around other stuff. Now it's needed to share UA stylesheets across documents.

<!-- 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/18486)
<!-- Reviewable:end -->
2017-09-13 17:44:21 -05:00
Emilio Cobos Álvarez
541977efb3
style: Move ExtraStyleData into CascadeData.
It logically belongs there, and the only reason it wasn't there before we were
working around it.

MozReview-Commit-ID: 5a5iksHAIdN
Signed-off-by: Emilio Cobos Álvarez <emilio@crisal.io>
2017-09-13 23:43:09 +02:00
bors-servo
1aa8be392b Auto merge of #18489 - froydnj:geckolib-feature-alignment, r=froydnj
align selectors's features in geckolib and stylo_tests

Gecko would like to turn on the stylo layout tests (tests/unit/stylo) in
Gecko CI.  The plan for doing this is to add the tests as a
dev-dependency of Gecko's main Rust library, from which `cargo test` can
be run in the usual fashion.

Doing this creates problems for normal development, because the stylo
tests need the `selectors` crate to be compiled with `gecko_like_types`,
whereas the `geckolib` crate does not.  So if we compile `geckolib` in a
non-test build configuration, the `selectors` crate is compiled without
`gecko_like_types`...but then if we compile `geckolib` in a test build
configuration, cargo will evict the previous rlib for the `selectors`
crate and replace it with a `selectors` compiled with gecko_like_types.
And then compiling `geckolib` in a non-test configuration repeats the
process, and so forth.

Needless to say, this is highly annoying behavior.  It is due to a bug
in cargo:

https://github.com/rust-lang/cargo/issues/3923

but it's not known when that bug will get fixed.  In the meantime, we
can just make sure that geckolib's `selectors` is compiled with the same
features as the `selectors` crate in the stylo tests.

- [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/18489)
<!-- Reviewable:end -->
2017-09-13 16:24:20 -05:00
Glenn Watson
1243a02940 Update WR (android driver bug fixes). 2017-09-14 06:47:10 +10:00
bors-servo
d461347adf Auto merge of #18484 - emilio:per-origin-sheets, r=SimonSapin
style: Store stylesheets per origin

This is the first step that will allow us to cache UA sheets across documents.

<!-- 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/18484)
<!-- Reviewable:end -->
2017-09-13 14:59:16 -05:00
bors-servo
6d1cdd1c92 Auto merge of #18481 - akosthekiss:bump-device-blurmac, r=jdm
Bump the device crate to add blurmac dependency to enable Web Bluetooth on macOS

<!-- Please describe your changes on the following line: -->
Latest revision of the device crate now has BlurMac among its dependencies that enables WBT on macOS in addition to Linux and Android (which have been supported for a while now). This PR bumps the device crate to this revision so that servo can make use of this.

---
<!-- 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 there are already WBT tests in tree.

<!-- 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/18481)
<!-- Reviewable:end -->
2017-09-13 13:57:02 -05:00
Nathan Froyd
6d93098491 align selectors's features in geckolib and stylo_tests
Gecko would like to turn on the stylo layout tests (tests/unit/stylo) in
Gecko CI.  The plan for doing this is to add the tests as a
dev-dependency of Gecko's main Rust library, from which `cargo test` can
be run in the usual fashion.

Doing this creates problems for normal development, because the stylo
tests need the `selectors` crate to be compiled with `gecko_like_types`,
whereas the `geckolib` crate does not.  So if we compile `geckolib` in a
non-test build configuration, the `selectors` crate is compiled without
`gecko_like_types`...but then if we compile `geckolib` in a test build
configuration, cargo will evict the previous rlib for the `selectors`
crate and replace it with a `selectors` compiled with gecko_like_types.
And then compiling `geckolib` in a non-test configuration repeats the
process, and so forth.

Needless to say, this is highly annoying behavior.  It is due to a bug
in cargo:

https://github.com/rust-lang/cargo/issues/3923

but it's not known when that bug will get fixed.  In the meantime, we
can just make sure that geckolib's `selectors` is compiled with the same
features as the `selectors` crate in the stylo tests.
2017-09-13 14:41:21 -04:00
Emilio Cobos Álvarez
d7a3bec6d7
style: Add a comment about why the raw pointer is ok. 2017-09-13 19:52:49 +02:00
bors-servo
f4b2ba6a2a Auto merge of #18476 - glennw:update-wr-frame-output, r=metajack
Update WR (new frame out feature for webvr team).

This includes the experimental frame output feature that the
webvr team requested. This feature allows configuring WR to
output the contents of an iframe onto a native texture, allowing
experiments such as interactive web pages inside a webgl/webvr scene.

<!-- 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/18476)
<!-- Reviewable:end -->
2017-09-13 12:26:08 -05:00
Emilio Cobos Álvarez
31079e2e3d
style: Disable "removed" assertion in Gecko. 2017-09-13 19:12:49 +02:00
bors-servo
e50341d4a9 Auto merge of #18352 - jdm:serialize-fun, r=emilio
Make serialization match Gecko in a few corner cases

This addresses the testcases from https://bugzilla.mozilla.org/show_bug.cgi?id=1345218. Gecko differs from the specification by doing the following:
* reusing longhands that have previously been serialized in order to serialize shorthands
* immediately breaking out of the shorthand loop for the current property as soon as a shorthand is successfully serialized

https://github.com/w3c/csswg-drafts/issues/1774 is filed to track ways that the standard could be made more clear on these points.

---
- [X] `./mach build -d` does not report any errors
- [X] `./mach test-tidy` does not report any errors
- [X] These changes fix [bug 1345218](https://bugzilla.mozilla.org/show_bug.cgi?id=1345218).
- [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/18352)
<!-- Reviewable:end -->
2017-09-13 10:51:00 -05:00
Emilio Cobos Álvarez
82c58d0a05
script: Fix stylesheet adoption. 2017-09-13 17:11:24 +02:00
Josh Matthews
5b83beaceb Consider serializing shorthands based on previously-serialized longhands. 2017-09-13 10:58:50 -04:00
bors-servo
2c576e5613 Auto merge of #18480 - servo:rc-microtask-queue, r=jdm
Store microtask queues directly in GlobalScope

<!-- 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/18480)
<!-- Reviewable:end -->
2017-09-13 09:18:41 -05:00
Emilio Cobos Álvarez
02d1264047
style: Store stylesheets per origin.
This will allow us to cache UA sheets across documents.

MozReview-Commit-ID: 5rYIKTmC6iw
Signed-off-by: Emilio Cobos Álvarez <emilio@crisal.io>
2017-09-13 16:01:35 +02:00
Emilio Cobos Álvarez
a373ed3f9d
style: Expose and make Clone OriginSetIterator.
MozReview-Commit-ID: AEQLfYy4gDz
Signed-off-by: Emilio Cobos Álvarez <emilio@crisal.io>
2017-09-13 15:52:14 +02:00
bors-servo
8ee055fdc1 Auto merge of #18474 - nnethercote:malloc_size_of-tweaks, r=jdm
malloc_size_of tweaks

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

A couple of tweaks.
---
<!-- 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 #18473 (github issue number if applicable).

<!-- Either: -->
- [ ] There are tests for these changes OR
- [X] These changes do not require tests because they are tested 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/18474)
<!-- Reviewable:end -->
2017-09-13 08:02:45 -05:00
Anthony Ramine
24cf15a014 Store microtask queues in their global (fixes #18467) 2017-09-13 15:02:45 +02:00
Anthony Ramine
7481ce177f Store a Rc<MicrotaskQueue> directly on Window 2017-09-13 14:27:45 +02:00
Anthony Ramine
7f9f95b7ce Store microtask queues in Rc<T> 2017-09-13 14:27:42 +02:00
Anthony Ramine
fe29037e89 Avoid a clone in ScriptThread::new 2017-09-13 14:27:40 +02:00
Anthony Ramine
65dfd6bf63 Clean up DissimilarOriginWindow::origin
It's not dead code, and it should use Castable instead of directly reaching
to the globascope field.
2017-09-13 14:27:36 +02:00
bors-servo
ac1b49b198 Auto merge of #18381 - BorisChiou:stylo/transform/rounding, r=<try>
stylo: Bug 1392161 - Introduce CSSPixelLength as computed::Length

These are the inter-dependent patches of bug 1392161. We want to handle
extreme small lengths carefully for some properties, such as transform, so we
shouldn't use |Au| as the computed value of specified::Length. Now, we introduce
a new type, CSSPixelLength, which is a wrapper of CSSFloat, and it is the
computed value of specified::Length, so we can keep the fractional part
of computed::Length.

---
- [X] `./mach build -d` does not report any errors
- [X] `./mach test-tidy` does not report any errors
- [X] These changes fix [Bug 1392161](https://bugzilla.mozilla.org/show_bug.cgi?id=1392161).
- [X] These changes do not require tests because there is a wpt test for this, and I also add some others in 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/18381)
<!-- Reviewable:end -->
2017-09-13 05:20:20 -05:00
Boris Chiou
ce9f1ed143 Fix extremely small pixel value for transform on Servo.
Sometimes, we want to use extremely small pixel value in transform, e.g.
translate(calc(0.001px)), which should be rendered correctly together
with scale(100000). This patch only fixes this case for Servo because
Stylo still uses Au on the Gecko side, even if we pass pixel value into
FFI directly in the previous patch.
2017-09-13 18:10:47 +08:00
Boris Chiou
b89286e8e7 Use CSSPixelLength in LengthOrPercentage{*}.
Replace Au with CSSPixelLength in LengthOrPercentage,
LengthOrPercentageOrAuto, and LengthOrPercentageOrNone.
2017-09-13 18:10:46 +08:00
Boris Chiou
535c1e3c6f Replace Au with CSSPixelLength in CalcLengthOrPercentage.
We replace Au with CSSPixelLength for the length part of
computed::CalcLengthOrPercentage. Therefore, it would be easier to use
CSSPixelLength for all other LengthOrPercentage{*} types.
2017-09-13 18:10:39 +08:00
Boris Chiou
a949e2a057 Introduce CSSPixelLength and update NonNegativeLength.
First, we define computed::CSSPixelLength which contains a CSSFloat, a
pixel value, and then we replace computed::Length with CSSPixelLength.
Therefore, the |ComputedValue| of NoCalcLength, AbsoluteLength,
FontRelativeLength, ViewportPercentageLength, CharacterWidth, and
PhysicalLength is CSSPixelLength.

Besides, we drop NonNegativeAu, and replace computed::NonNegativeLength
with NonNegative<computed::Length>. (i.e. NonNegative<CSSPixelLength>)
2017-09-13 18:05:14 +08:00
Akos Kiss
a650e8b444 Bump the device crate to add blurmac dependency to enable Web Bluetooth on macOS 2017-09-13 11:37:40 +02:00
Anthony Ramine
1c46135c75 Reformat DissimilarOriginWindow::new 2017-09-13 10:53:05 +02:00
Anthony Ramine
b8ae82ffb8 Reformat GlobalScope::new_inherited 2017-09-13 10:53:03 +02:00
Anthony Ramine
3764217ca6 Reformat WorkerGlobalScope::new_inherited 2017-09-13 10:53:01 +02:00
Anthony Ramine
71df1d5d9b Reformat WorkletGlobalScope::new_inherited 2017-09-13 10:53:00 +02:00
Anthony Ramine
0822a74f94 Reformat Window::new 2017-09-13 10:50:09 +02:00