Commit graph

21105 commits

Author SHA1 Message Date
Emilio Cobos Álvarez
aa5ea337da style: Try to bring some more sanity into our font code.
It's not very easy to understand on its current state, and it causes subtle bugs
like bug 1533654.

It could be simpler if we centralized where the interactions between properties
are handled. This patch does this.

This patch also changes how MathML script sizes are tracked when scriptlevel
changes and they have relative fonts in between.

With this patch, any explicitly specified font-size is treated the same (being a
scriptlevel boundary), regardless of whether it's either an absolute size, a
relative size, or a wide keyword.

Relative lengths always resolve relative to the constrained size, which allows
us to avoid the double font-size computation, and not give up on sanity with
keyword font-sizes.

I think given no other browser supports scriptlevel it seems like the right
trade-off.

Differential Revision: https://phabricator.services.mozilla.com/D23070
2019-03-27 14:29:07 +01:00
Emilio Cobos Álvarez
77a75596bb style: Don't call PrefillDefaultForGeneric when inheriting font-family.
This is the low-risk fix for this issue, that we should get into 67.

What's going on here is that font-family is tracked via the font list, from the
POV of the style system the font list is generally just the
RefPtr<SharedFontList>, but in Gecko there's also mDefaultGenericId.

The way we end up with the right mDefaultGenericId is fishy at best, bogus at
worst. I left various fixmes over time related to a bunch of this code.

After my patch, we end up with a mDefaultGenericId of serif, rather than the
right one (none).

The parent font always has none because nsLayoutUtils::ComputeSystemFont always
sets it to none if the font is known.

Before my patch, PrefillDefaultForGeneric with aGenericId of none (from the
parent), which makes it the default generic id for the current language, serif
in this case.

Before my optimization, apply_declaration_ignoring_phase called
copy_font_family_from, which resets both the font list _and_ the default
generic.

This patch achieves the same effect by not having the first mutation in the
first place.

This code is still terribly fishy in any case, all the _skip_font_family stuff
is just ridiculous. I'll try to clean up a bit after this, but for 68.

Differential Revision: https://phabricator.services.mozilla.com/D23026
2019-03-27 14:29:07 +01:00
Emilio Cobos Álvarez
9f4643ac24 style: Avoid crashing when calling insertRule("@import ...") on a detached sheet.
This should unblock the fuzzers for now, though it's not the ideal solution.

It's the only reasonably easy solution to unblock them though, I think.

We should probably always keep track of the document a stylesheet was associated
with. We'll need that for constructible stylesheets anyway.

That requires some though on how to get the cycle-collection and such right,
though, and I wouldn't be able to write or land that ASAP.

Differential Revision: https://phabricator.services.mozilla.com/D23584
2019-03-27 14:29:06 +01:00
Emilio Cobos Álvarez
95ee1a5adf style: Use a single RestyleHint representation.
Differential Revision: https://phabricator.services.mozilla.com/D22828
2019-03-27 14:29:05 +01:00
Emilio Cobos Álvarez
8dbf9b1da9 Bug 1535084 - Cleanup contain property. r=dholbert
Now that cbindgen supports bitflags, this is trivial.

Differential Revision: https://phabricator.services.mozilla.com/D23371
2019-03-27 14:29:05 +01:00
bors-servo
5da1de6a3e
Auto merge of #23102 - servo:rustup, r=Manishearth
Upgrade to rustc 1.35.0-nightly (4c27fb19b 2019-03-25)

<!-- 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/23102)
<!-- Reviewable:end -->
2019-03-27 01:35:41 -04:00
bors-servo
3c27dc993d
Auto merge of #23097 - Manishearth:transforms, r=asajeffrey
Properly support transforms in WebXR

Still need to test this

There are also a bunch of fixmes that I should get to in this PR.

<!-- 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/23097)
<!-- Reviewable:end -->
2019-03-27 00:05:03 -04:00
Manish Goregaokar
2e62805578 Allow unused 2019-03-26 14:33:50 -07:00
bors-servo
2e0191b839
Auto merge of #23080 - jdm:sampling-profiler, r=gterzian
Add a sampling profiler

This uses the code already built for the background hang monitor and adds the ability to repeatedly sample all monitored threads. This sampling allows us to generate profiles that we can translate into the format used by https://perf-html.io/, allowing us to benefit from modern Gecko performance tooling.

You can run Servo with `PROFILE_OUTPUT=foo.json` and `SAMPLING_RATE=50` (for example), otherwise these values will default to `samples.json` and 10ms, respectively. To activate the profiler, press cmd+p, and to stop profiling, press cmd+p again. This will the captured samples to be symbolicated, which will take a very long time, and eventually there will be a new JSON profile in the output location.

To create a profile for use by Gecko's tools, run `python etc/profilicate.py path/to/profile.json >gecko_profile.json`, and load `gecko_profile.json` in the https://perf-html.io/ to see something like [this](https://profiler.firefox.com/public/8137e2b11fbb92afb80090bc534fd83015c87ee6/calltree/?globalTrackOrder=0-1&thread=1&v=3);

---
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes fix #13103
- [x] These changes do not require tests because way too many pieces to automate

<!-- 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/23080)
<!-- Reviewable:end -->
2019-03-26 16:36:19 -04:00
Josh Matthews
aee2974c33 Add unit test for sampling profiler. 2019-03-26 16:35:52 -04:00
Josh Matthews
8b7244f0d1 Support multiprocess in sampling profiler. 2019-03-26 16:35:10 -04:00
Josh Matthews
90f67c11e5 Add a sampling profiler and a script to generate profiles for use with Gecko tooling. 2019-03-26 16:35:08 -04:00
Manish Goregaokar
240b5e7c97 Clean up trace impls 2019-03-26 12:58:52 -07:00
bors-servo
7b8a898ac2
Auto merge of #23095 - jdm:mozjsprofiling, r=jdm
Use mozjs profiling feature when building with frame pointer enabled

This makes it possible to get more meaningful profiles with #23080.

---
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes fix part of #23081
- [x] There are no 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/23095)
<!-- Reviewable:end -->
2019-03-26 14:00:56 -04:00
bors-servo
93d21ce976
Auto merge of #23094 - georgeroman:update_event_timestamp, r=jdm
Update Event's timestamp

<!-- 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 #22885

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

<!-- 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/23094)
<!-- Reviewable:end -->
2019-03-26 12:32:33 -04:00
bors-servo
d484e66c45
Auto merge of #23085 - hundredeir:dom_content_loaded#22994, r=jdm
Defer update of dom_content_loaded_event_end

Set it's value only after the "DOMContentLoaded" event is really fired

---
<!-- 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 #22994

<!-- 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/23085)
<!-- Reviewable:end -->
2019-03-26 11:06:49 -04:00
Simon Sapin
389e69bafe Upgrade to rustc 1.35.0-nightly (4c27fb19b 2019-03-25) 2019-03-26 15:12:55 +01:00
bors-servo
cd374f0aa8
Auto merge of #23002 - paulrouget:padding, r=jdm
Fix bleeding in FxR by adding Padding support to ServoSurface

Not ready for review, just need to make sure the CI is happy for now.

<!-- 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/23002)
<!-- Reviewable:end -->
2019-03-26 09:16:01 -04:00
hundredeir
1a5e7b7cfb Defer update of dom_content_loaded_event_end
Set it's value only after the "DOMContentLoaded" event is really fired
2019-03-26 14:54:37 +05:30
George Roman
e63de4d52c Update Event's timestamp 2019-03-26 09:39:07 +02:00
Manish Goregaokar
4f128e47e5 Add XRRigidTransform::Inverse 2019-03-26 00:09:15 -07:00
Manish Goregaokar
6fda2f28a6 Precompute XRRigidTransform's matrices 2019-03-26 00:09:15 -07:00
Manish Goregaokar
77e857891a Fix xrviewport.height 2019-03-26 00:09:15 -07:00
Manish Goregaokar
2e48606569 Compute view matrix from viewer pose 2019-03-26 00:09:15 -07:00
bors-servo
25aa6501d2
Auto merge of #22699 - Manishearth:render_state, r=jdm
Update XR code to support null layers and new spec changes

Last time we landed an incomplete PR (https://github.com/servo/servo/pull/22649) that corrected the promise model but left XR sessions in panicky states.

This updates the code to not panic all the time, and also includes changes from https://github.com/immersive-web/webxr/pull/458

r? @jdm

<!-- 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/22699)
<!-- Reviewable:end -->
2019-03-25 18:48:49 -04:00
Manish Goregaokar
d1d8e97c30 Add XRSpace::get_viewer_pose() 2019-03-25 15:35:20 -07:00
Josh Matthews
896aae1c14 Add mozjs feature for profiling. 2019-03-25 16:13:56 -04:00
Manish Goregaokar
1e1f527c82 Formatting changes 2019-03-25 11:38:20 -07:00
Paul Rouget
8f2390fdff Add transparent padding around ServoSurface 2019-03-25 19:01:39 +01:00
Manish Goregaokar
922883f35a Pref-gate XRRenderState 2019-03-25 09:13:56 -07:00
Manish Goregaokar
0038ddf51e Avoid double-spawning RAF thread 2019-03-25 09:12:30 -07:00
Manish Goregaokar
9ea28c4c63 Flush renderstate queue before presenting 2019-03-25 09:12:28 -07:00
Manish Goregaokar
798c88917b Trigger wakeup when queuing, not when processing 2019-03-25 09:11:56 -07:00
Manish Goregaokar
1a64b217af Improve handling of missing layer_ctx 2019-03-25 09:08:26 -07:00
Manish Goregaokar
87558c3a17 Shut down old VR compositor when the layer is replaced 2019-03-25 09:08:26 -07:00
Manish Goregaokar
e20909cf43 Allow VR RAF loop to handle changes in the layer, support pending renderstates 2019-03-25 09:08:11 -07:00
Manish Goregaokar
401b470e90 Hook XRRenderState into XRSession 2019-03-25 09:06:49 -07:00
Manish Goregaokar
1dc7636135 Add XRRenderState 2019-03-25 09:06:21 -07:00
Manish Goregaokar
7343241c3d Add RTCPeerConnection::Close 2019-03-25 09:04:13 -07:00
Manish Goregaokar
5cb5503a75 Add SignalingState to RTCPeerConnection 2019-03-25 09:04:13 -07:00
Manish Goregaokar
fc25a80892 Add ICEConnectionState to RTCPeerConnection 2019-03-25 09:04:13 -07:00
Manish Goregaokar
209caa418b Add ICEGatheringState to RTCPeerConnection 2019-03-25 09:04:13 -07:00
Fernando Jiménez Moreno
bc74dc0e85 Use servo-media-auto and call ServoMedia::init where required 2019-03-25 09:51:53 +01:00
Fernando Jiménez Moreno
36825b82f3 Shutdown player when HTMLMediaElement is dropped 2019-03-25 09:29:30 +01:00
bors-servo
5f4030d028
Auto merge of #23011 - dboyan:open-feature-tokenize, r=gterzian,cybai
Add tokenizer for features in window.open

<!-- Please describe your changes on the following line: -->
This is a prototype implementation of feature tokenizer ~~and "noreferrer" feature~~ for window.open. I'm not very sure where the tokenizer code should be placed. Building now generates the following warning

```
warning: unused attribute
  --> components/script/dom/bindings/conversions.rs:74:5
   |
74 |     rustc_on_unimplemented(message = "The IDL interface `{Self}` is not derived from `{T}`.")
   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
   |
   = note: #[warn(unused_attributes)] on by default
```

---
<!-- 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 _partially_ fix #22869 (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/23011)
<!-- Reviewable:end -->
2019-03-24 05:31:24 -04:00
Boyan Ding
f261799e64 Add a tokenizer for features in window.open() 2019-03-23 15:31:14 +08:00
bors-servo
059ac12c00
Auto merge of #23073 - sbansal3096:master, r=emilio
Expose public getter to stylesheet's owner

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

- [x] expose a public getter on CSSStyleSheet to return the stylesheet's owner
- [x] in CSSRuleList::insert_rule, use the new getter to pass a non-None value as an argument to arc.insert_rule
- [x] add a test for this that verifies that the new stylesheet is actually loaded
---
<!-- 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 #23028

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

<!-- 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/23073)
<!-- Reviewable:end -->
2019-03-22 19:45:08 -04:00
bors-servo
0ff87c8137
Auto merge of #23079 - cdeler:remove-headless-checking-from-bluetooth, r=jdm
#23065 removed unnecessary headless checking

<!-- 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 #23065 (GitHub issue number if applicable)

<!-- Either: -->
- [x] There are tests for these changes (it's wpt tests, isn't it?)
- [ ] 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/23079)
<!-- Reviewable:end -->
2019-03-22 10:09:24 -04:00
cdeler
9b3d76b82d #23065 removed unnecessary headless checking 2019-03-22 16:31:18 +03:00
bors-servo
525484a4d9
Auto merge of #22973 - paulrouget:wrupdate, r=emilio
WR update

~Need https://github.com/tomaka/winit/issues/803~

@emilio can I ask you to look at the *"WR udpate: layout"* commit? There are a few changes I'm not sure about (should_inflate, the new filters_data and cache_tiles).

Fix: #22993

<!-- 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/22973)
<!-- Reviewable:end -->
2019-03-22 08:48:16 -04:00